返回项目目录
开源平台精选项目

PocketBase

以单个 Go 可执行文件交付的轻量实时应用后端。

主要语言Go
开源许可MIT
项目类型开源平台
维护状态活跃维护
OVERVIEW

项目概述

PocketBase 将 SQLite、实时订阅、认证、文件存储、管理面板和 REST-ish API 打包为一个可执行文件,并可使用 Go 或内嵌 JavaScript 扩展业务逻辑。

PocketBase 是采用 MIT 许可证的开源应用后端,由一个可移植的 Go 可执行文件提供嵌入式 SQLite 数据库、实时订阅、认证、文件管理、管理 Dashboard 和 REST-ish API。它使用 Base、Auth 与 View 三类 Collection 描述数据,通过 API Rules 同时完成访问控制和记录过滤,并提供 JavaScript、Dart SDK。需要自定义服务端逻辑时,可以把 PocketBase 作为 Go Framework 使用,也可以在预编译程序的 pb_hooks 目录中运行内嵌 JavaScript。PocketBase 仍未达到 v1.0,官方明确不建议用于关键生产应用,除非团队能够跟进 Changelog 并承担手动迁移与单机运维。

当前版本PocketBase v0.39.9
JavaScript SDKv0.27.0
运行模型Single Server / SQLite / One Binary
FEATURES

主要特点

PocketBase 用极少基础设施提供常见应用后端能力,并允许从 Dashboard 原型逐步扩展到 Go 或 JavaScript 代码。

01

单个可执行文件

无需单独安装数据库或运行时,上传 PocketBase 可执行文件和迁移、Hook 后即可启动完整后端。

02

SQLite Collections

使用 Base、Auth 和 View Collection 建模普通记录、用户身份和只读 SQL View,并通过 Dashboard 管理字段、关系与索引。

03

认证与账户管理

Auth Collection 支持密码、OTP、OAuth2、MFA、邮箱验证和密码重置,并允许为不同用户类型建立独立认证集合。

04

Realtime 与客户端 SDK

客户端可以订阅 Collection 或指定 Record 的变化;官方 JavaScript SDK 覆盖 Browser、Node.js 与 React Native,另有 Dart SDK。

05

文件与 S3 存储

文件字段支持上传、缩略图和 Protected File Token,默认使用本地 pb_data/storage,也可切换到 S3 兼容服务。

06

API Rules 与过滤器

每个 Collection 可为 List、View、Create、Update 和 Delete 配置规则;规则既决定授权,也自动限制返回记录。

07

Go 与 JavaScript 扩展

可将 PocketBase 作为 Go Package 定制路由、Hook 和业务逻辑,或使用内置 Goja 引擎在 pb_hooks 中编写服务端 JavaScript。

08

迁移、Dashboard 与备份

Dashboard 方便管理 Collection 和设置,Schema 修改可自动生成迁移;内置备份功能可将 pb_data 保存到本地或 S3。

USE CASES

适用场景

适合个人项目、原型、内部工具和中小规模应用,尤其适合希望自行托管但不想维护多个服务的团队。

个人项目与 MVP

以很少运维成本获得数据、认证、文件与实时 API,快速完成产品原型和小型线上服务。

内部工具

在一台受控服务器上交付后台、表单、目录、审批和轻量协作系统,并通过 Dashboard 管理数据。

移动与桌面应用后端

使用 JavaScript 或 Dart SDK 为移动、桌面和跨平台客户端提供账号、数据同步和文件服务。

自托管实时应用

为聊天、通知、状态看板等中小规模场景提供单机实时订阅,不必搭建独立消息服务。

可移植的定制后端

用 Go 或 JavaScript 加入领域路由与 Hook,最终仍以单个二进制和少量目录部署。

边缘与低资源环境

在资源有限的 VPS、家庭服务器或现场设备上运行自包含后端,并使用本地文件或兼容 S3 的远程存储。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

PocketBase 擅长的地方

  • 一个二进制即可运行数据库、认证、文件、实时和管理面板
  • SQLite 数据与上传文件集中在 pb_data,迁移和备份直观
  • Dashboard 与自动迁移让 Schema 原型速度很快
  • API Rules 将授权与记录过滤结合,客户端可直接调用 API
  • Go Framework 和内嵌 JavaScript 提供两种服务端扩展路径
  • MIT 许可证、自托管和低资源占用降低个人与小团队门槛

需要注意

采用前应考虑的问题

尚未达到 v1.0

官方不保证 v1.0 前完整向后兼容,升级可能需要阅读 Changelog 并执行手动迁移,不适合无法持续维护的关键系统。

官方不推荐关键生产应用

PocketBase 文档明确给出这一警告。涉及高可用、合规、重大收入或不可丢失数据时,应选择更成熟架构或准备完整风险方案。

仅支持单服务器纵向扩展

官方定位是自包含单机应用,不提供内置多节点集群、自动故障转移或水平写扩展;高可用需要额外架构。

维护资源有限

PocketBase 是个人志愿开源项目,不是提供 SLA 的商业团队;路线、支持和修复时间没有承诺。

API Rules 必须仔细设计

空字符串会开放操作,null 则仅限 Superuser;Superuser 绕过全部 Collection Rules,Token 和 Dashboard 权限必须严格保护。

文件默认可能公开

知道完整 URL 时,普通文件默认可访问。身份证、合同等敏感内容必须启用 Protected,并正确配置 View Rule 与短期文件 Token。

JavaScript Hook 不是 Node.js

内嵌 Goja 环境不提供完整 Node 或浏览器 API,只支持 CommonJS,Handler 还有隔离上下文和并发限制;复杂逻辑更适合 Go。

生产运维仍由使用者负责

需要自行处理 TLS、反向代理、SMTP、Rate Limit、日志、监控、备份恢复、磁盘容量、加密密钥和版本升级。

QUICK START

快速开始

下载与平台匹配的可执行文件,启动 Dashboard 创建 Collection 和 API Rules,再使用 JavaScript SDK 完成认证、CRUD 与实时订阅。

1下载并启动服务
bash
# 示例:macOS Apple Silicon
PB_VERSION=0.39.9
curl -LO "https://github.com/pocketbase/pocketbase/releases/download/v${PB_VERSION}/pocketbase_${PB_VERSION}_darwin_arm64.zip"
unzip "pocketbase_${PB_VERSION}_darwin_arm64.zip"

./pocketbase serve
2创建首个 Superuser
bash
./pocketbase superuser create \
  admin@example.com \
  "<strong-password>"

# Dashboard
open http://127.0.0.1:8090/_/
3安装并初始化 JavaScript SDK
bash
npm install pocketbase
4登录并读取记录
typescript
import PocketBase from "pocketbase";

export const pb = new PocketBase("http://127.0.0.1:8090");

await pb.collection("users").authWithPassword(
  "user@example.com",
  "<password>",
);

const posts = await pb.collection("posts").getList(1, 20, {
  sort: "-created",
  filter: 'status = "published"',
});

console.log(posts.items);
5创建记录并订阅变化
typescript
const post = await pb.collection("posts").create({
  title: "Hello PocketBase",
  status: "draft",
  author: pb.authStore.record?.id,
});

const unsubscribe = await pb.collection("posts").subscribe(
  post.id,
  (event) => {
    console.log(event.action, event.record);
  },
);

// 页面卸载时调用 unsubscribe()
6添加服务端 JavaScript Hook
javascript
/// <reference path="../pb_data/types.d.ts" />

// pb_hooks/main.pb.js
routerAdd("GET", "/api/hello/{name}", (event) => {
  const name = event.request.pathValue("name");

  return event.json(200, {
    message: "Hello " + name,
  });
});
7创建并提交数据库迁移
bash
./pocketbase migrate create "create_posts"

git add pb_migrations
git status --short

下一步:先在测试环境完成版本升级、Rules、备份与恢复演练。生产部署至少应配置 SMTP、Rate Limiter、Superuser IP 白名单、设置加密、HTTPS/反向代理和异机备份。

ALTERNATIVES

类似项目

这些后端平台也提供数据库、认证、文件和实时能力,但在部署规模、数据库模型与托管方式上不同。

COMPARISON

PocketBase vs Supabase

PocketBase 和 Supabase 都提供开源、自托管的数据库、认证、文件和实时能力。PocketBase 追求单文件、单服务器和低运维;Supabase 以 PostgreSQL 和多个生产级服务组成更完整的平台。

比较维度PocketBaseSupabase
部署形态单个 Go 可执行文件 + pb_dataPostgreSQL 与 Auth、Storage、Realtime 等多个服务
核心数据库嵌入式 SQLite,单机纵向扩展完整 PostgreSQL,可使用云托管或自托管
数据 APIREST-ish Records API 与 Collection FiltersPostgREST、SQL、GraphQL 生态和数据库客户端
访问控制Collection API Rules,同时作为记录过滤器PostgreSQL Row Level Security、角色与数据库权限
服务端扩展Go Framework 或内嵌 JavaScript HooksSQL Functions、Database Hooks 与 Edge Functions
运维复杂度起步极低,但备份、HA 和扩容由使用者承担组件更多;托管版降低运维,自托管要求更高
成熟度尚未 v1.0,官方不推荐关键生产应用平台与 PostgreSQL 生态更成熟,仍需评估各组件
更适合个人、原型、内部工具和中小型单机应用关系数据、复杂 SQL、团队协作和增长型生产系统
如何选择

如果目标是在一台服务器上以最低复杂度交付小型应用,并且团队能接受 v1.0 前迁移和单机边界,PocketBase 很有吸引力;如果需要复杂 SQL、关系建模、可扩展基础设施和更成熟的生产路径,Supabase 通常更稳妥。无论选择哪一个,都应先验证授权、备份恢复、峰值写入、文件安全和升级流程。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 28 日
核验版本PocketBase v0.39.9 / JS SDK v0.27.0
内容维护Docs100 编辑整理
项目维护状态活跃维护

本页依据 PocketBase 官方 Docs、FAQ、Collections、API Rules、Authentication、Files、Go/JavaScript 扩展和生产指南整理。版本、许可证、主要语言和维护状态通过 GitHub 官方 API 与 npm Registry 核验。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 22 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 22 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库