
PocketBase 轻量级后端服务一键部署
一个文件就是整个后端。PocketBase 把数据库、认证、文件存储打包成单个可执行文件,适合原型开发和小型项目。
原文来源:PocketBase — 开源轻量级后端,单个可执行文件包含 SQLite 数据库、认证和文件存储,适合快速原型和小型项目。
如果你需要一个后端但不想配置复杂的服务器环境,PocketBase 是一个极端简洁的选择。它把整个后端——数据库、REST API、身份认证、文件存储——打包成一个可执行文件,运行这个文件就获得了一个完整后端。
PocketBase 是什么
PocketBase 用 Go 编写,核心设计哲学是"极简":
单文件部署 — 一个二进制文件(约 20MB)包含所有功能,不需要 Docker、不需要数据库服务器。
SQLite 数据库 — 内嵌 SQLite,通过自动生成的 REST API 操作数据。支持关系、过滤、排序、分页。
身份认证 — 邮箱/密码、OAuth2(Google/GitHub/Discord 等)、Magic Link。
文件存储 — 内置 S3 兼容的文件存储,带权限控制。
实时订阅 — 数据库变化通过 SSE(Server-Sent Events)实时推送到客户端。
管理界面 — 内置美观的 Admin UI,可以可视化地管理数据、配置规则、查看日志。
安装运行
# 下载(Linux/macOS)
curl -L https://github.com/pocketbase/pocketbase/releases/latest/download/pocketbase_linux_amd64.zip -o pocketbase.zip
unzip pocketbase.zip
chmod +x pocketbase
# 运行
./pocketbase serve访问 http://localhost:8090/_/ 进入 Admin 界面,默认账号密码都是 admin@example.com / 12345678。
创建数据表
在 Admin UI 中点击 "New collection",定义字段:
Collection: posts
Fields:
- title (text, required)
- content (text)
- published (bool, default: false)
- tags (select, multiple)
保存后自动获得 REST API。
API 使用
JavaScript SDK
import PocketBase from 'pocketbase'
const pb = new PocketBase('http://localhost:8090')
// 认证
await pb.collection('users').authWithPassword('user@example.com', '123456')
// CRUD 操作
const post = await pb.collection('posts').create({
title: 'Hello',
content: 'World',
published: true
})
const posts = await pb.collection('posts').getList(1, 20, {
filter: 'published = true',
sort: '-created'
})
// 实时订阅
pb.collection('posts').subscribe('*', function (e) {
console.log(e.record)
})纯 HTTP
# 创建
curl -X POST http://localhost:8090/api/collections/posts/records \
-H "Content-Type: application/json" \
-d '{"title":"Hello","content":"World"}'
# 查询
curl "http://localhost:8090/api/collections/posts/records?filter=published=true"权限控制
PocketBase 的权限模型非常灵活:
// 只允许创建者编辑自己的记录
pb.collection('posts').update(id, data, {
headers: { 'X-Admin': pb.authStore.token }
})在 Admin UI 中可以设置更复杂的规则:
- 谁可以创建记录
- 谁可以查看记录
- 谁可以编辑/删除记录
- 基于字段值的条件规则
与 Supabase 对比
| 维度 | PocketBase | Supabase |
|---|---|---|
| 部署复杂度 | 极低(单文件) | 中等(Docker) |
| 数据库 | SQLite | PostgreSQL |
| 扩展性 | 单机 | 可集群 |
| 实时同步 | SSE | WebSocket |
| 适用场景 | 原型/小项目 | 生产级应用 |
PocketBase 适合验证想法、内部工具、个人项目。Supabase 适合需要扩展性和复杂查询的生产项目。
总结
PocketBase 把后端的复杂度压缩到了极致。对于需要快速验证想法的开发者来说,它提供了一个"下载即运行"的体验——不需要配置数据库、不需要写 API、不需要处理认证。当你需要更复杂的功能时,再迁移到 Supabase 或自建后端也不迟。
© 2026 四月 · CC BY-NC-SA 4.0
原文链接:https://aprilzz.com/tutorials/pocketbase-lightweight-backend