./pocketbase serve 一条命令即可启动,零依赖、零安装、无需 Docker。实测建表/读写/文件上传/用户认证/权限规则全部跑通,是中小项目和工具型后端的「开箱即用」首选。⚠️ 但实测发现它的 select 枚举字段通过 REST API 创建会静默丢字段,且开源站此前把它标注为"非纯开源"实为 MIT 许可(可自由商用)。./pocketbase serve,默认监听 http://127.0.0.1:8090,管理后台在 /_/,REST API 在 /api/。listRule / createRule)实时生效,默认所有规则为 null(仅管理员可读写),安全默认收紧。users collection(注册/登录/Token),开箱即用。源于一个直接问题:「有没有一个不用写后端、不用装 Docker,就能快速给应用/工具搭个后端的东西?」
很多开源"后端平台"(Supabase、n8n、Appsmith)都要 Docker 容器或云端托管,重。PocketBase 打出的旗号是"单文件搞定后端",这听起来很诱人——但单文件真能承担数据库、认证、文件、后台四件事吗? 本报告用真机实测验证。
| 后端能力 | PocketBase 宣称 | 本机实测 |
|---|---|---|
| 部署 | 单文件、零依赖 | ✅ 31.8MB 二进制直接跑 |
| 数据库 | 内置 SQLite | ✅ CRUD 全通 |
| 文件存储 | 内置 | ✅ 上传→匿名可读 |
| 认证 | 内置 users | ✅ 注册/登录/Token |
| 管理后台 | 内置 UI | ✅ /_/ 开箱即用 |
| 权限控制 | 声明式规则 | ✅ 实时生效 |
| 体积 | 极轻 | ✅ 下载包仅 12MB |
# macOS Apple Silicon (arm64) 最新版 v0.40.1
curl -sL -o pb.zip "https://github.com/pocketbase/pocketbase/releases/download/v0.40.1/pocketbase_0.40.1_darwin_arm64.zip"
unzip -o pb.zip
pocketbase(Mach-O arm64,31.8MB)./pocketbase serve --http=127.0.0.1:8090
立即输出:
Server started at http://127.0.0.1:8090
├─ REST API: http://127.0.0.1:8090/api/
└─ Dashboard: http://127.0.0.1:8090/_/
./pocketbase superuser upsert [email protected] yourpass
# 或在浏览器打开后台首装的安装向导 URL
# 建一个带 email+text+number 字段的表(schema-less,自动建表)
curl -s -X POST http://127.0.0.1:8090/api/collections \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"name":"subs","type":"base","fields":[
{"name":"user_email","type":"email","required":true},
{"name":"plan","type":"text","required":true},
{"name":"amount","type":"number","required":true}]}'
# 写入记录
curl -s -X POST http://127.0.0.1:8090/api/collections/subs/records \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"user_email":"[email protected]","plan":"monthly","amount":6.99}'
# 读取记录
curl -s "http://127.0.0.1:8090/api/collections/subs/records" -H "Authorization: Bearer $TOKEN"
实测结果:写入 2 条 → 读取全部正确返回([email protected] monthly 6.99 等)。✅
# 上传文件(multipart)
curl -s -X POST http://127.0.0.1:8090/api/collections/uploads/records \
-H "Authorization: Bearer $TOKEN" \
-F "title=说明" -F "attachment=@./file.txt"
实测结果:文件成功存储(文件名 pb_test_file_xxxx.txt),并经文件 URL 匿名可读(HTTP 200),内容完整返回。✅
# 注册用户
curl -s -X POST http://127.0.0.1:8090/api/collections/users/records \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"secret123","passwordConfirm":"secret123","name":"玩家"}'
# 用户登录拿 token
curl -s -X POST http://127.0.0.1:8090/api/collections/users/auth-with-password \
-H 'Content-Type: application/json' \
-d '{"identity":"[email protected]","password":"secret123"}'
实测结果:注册 ✅ → 登录拿 token ✅。✅
# 默认规则(listRule 为 null)下,普通用户访问数据 → HTTP 403 拒绝
curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:8090/api/collections/subs/records" \
-H "Authorization: Bearer $USER_TOKEN" # → 403
# 给表开放读规则后,立即放行
curl -s -X PATCH http://127.0.0.1:8090/api/collections/subs -H "Authorization: Bearer $ADMIN_TOKEN" \
-H 'Content-Type: application/json' -d '{"listRule":"user_email != \"\""}'
# → 再次访问为 HTTP 200
实测结果:默认权限收紧(403)→ 修改规则后实时放行(200),声明式权限实时生效,不是玩具。✅
select 枚举字段通过 REST API 创建会「静默丢字段」这是本实测最值得记录的一个坑:
type:"select" 字段:(预估写法)-d '{"name":"tb","type":"base","fields":[{"name":"p","type":"select","options":{"values":["a","b"]}}]}'
实际返回 HTTP 400,data.fields.1.values: "Cannot be blank."——即 options.values 被判定为空白无效。而更隐蔽的是:当 select 混在其他正常字段一起建表时,可能不返回明显报错,那些字段直接被静默丢弃,collection 只留下系统 id 字段,极易让开发者误以为建表成功。
text 字段替代枚举;或直接到管理后台 UI 里用可视化方式建 select 字段;再或等 PocketBase 修复此 API 边界。已验证 LICENSE.md 为 MIT(Copyright Gani Georgiev),可自由商用、无开源义务。Kaiyuanzhan 等页面此前将其标为"可持续使用许可(非纯开源)"不准确,建议修正为 MIT。
MinerU 等深度学习工具动辄需下载 1GB+ 依赖;PocketBase 反之——下载包仅 12MB、解压 31MB、零依赖。对中小项目/tool 型后端,这种"轻"是实打实的优势。
| 维度 | 结论 |
|---|---|
| 单文件部署 | ✅ 名副其实,31MB 二进制零依赖直跑 |
| 数据库 CRUD | ✅ email/text/number 字段全通 |
| 文件存储 | ✅ 上传→匿名可读,完整 |
| 用户认证 | ✅ 注册/登录/Token 内建 |
| 管理后台 | ✅ 开箱即用 |
| 权限系统 | ✅ 声明式规则实时生效 |
| 上手门槛 | ✅ 一条命令起服务,新手友好 |
| 商用许可 | ✅ MIT(开源站需修正标注) |
select 枚举字段依赖 API 建表的重度用户 → 当前版本注意坑 1。Q:PocketBase 需要 Docker 或运行时环境吗? A:不需要。它就是一个编译好的单一可执行文件(约 31MB),下载后 ./pocketbase serve 即可跑,无需 Docker/Node/Python/数据库。
Q:PocketBase 是开源的吗?能商用吗? A:是,MIT 许可,可自由使用、修改、商用、再分发,无开源义务。(注:部分站点曾错误标注为非纯开源,实际为 MIT。)
Q:PocketBase 和 Supabase / Firebase 有什么区别? A:Supabase/Firebase 是云端/容器化的重量级 BaaS;PocketBase 是单文件本地运行的轻量 BaaS,自带 SQLite + 认证 + 文件 + 后台,部署和管理门槛低得多,适合中小项目和工具。
Q:PocketBase 怎么建表?需要先设计数据库吗? A:基本 schema-less——可在后台 UI 可视化建字段,或直接向 collection POST 数据。但其 select 枚举字段通过 API 创建有一个已发现的坑(见上文坑 1)。
Q:PocketBase 的权限控制好用吗? A:好用。每条规则(list/create/update/delete)是声明式表达式,改完实时生效,默认收紧(仅管理员),安全起点高。
Q:PocketBase 适合做什么类型的项目? A:适合中小应用后端、内部工具、管理后台、需要认证+文件存储的原型、以及想快速给网站/App 加个动态后端。不适合海量数据高并发的大型生产系统。
./pocketbase serve --http=127.0.0.1:8090*本报告由虾搞基地(kaiyuanzhan.com)实测产出,数据真实、零 mock。*