教程·阅读约 2 分钟·
PocketBase 轻量级后端服务一键部署

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,可以可视化地管理数据、配置规则、查看日志。

安装运行

code
# 下载(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",定义字段:

code
Collection: posts
Fields:
  - title (text, required)
  - content (text)
  - published (bool, default: false)
  - tags (select, multiple)

保存后自动获得 REST API。

API 使用

JavaScript SDK

code
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

code
# 创建
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 的权限模型非常灵活:

code
// 只允许创建者编辑自己的记录
pb.collection('posts').update(id, data, {
  headers: { 'X-Admin': pb.authStore.token }
})

在 Admin UI 中可以设置更复杂的规则:

  • 谁可以创建记录
  • 谁可以查看记录
  • 谁可以编辑/删除记录
  • 基于字段值的条件规则

与 Supabase 对比

维度PocketBaseSupabase
部署复杂度极低(单文件)中等(Docker)
数据库SQLitePostgreSQL
扩展性单机可集群
实时同步SSEWebSocket
适用场景原型/小项目生产级应用

PocketBase 适合验证想法、内部工具、个人项目。Supabase 适合需要扩展性和复杂查询的生产项目。

总结

PocketBase 把后端的复杂度压缩到了极致。对于需要快速验证想法的开发者来说,它提供了一个"下载即运行"的体验——不需要配置数据库、不需要写 API、不需要处理认证。当你需要更复杂的功能时,再迁移到 Supabase 或自建后端也不迟。

分享到
微博Twitter

© 2026 四月 · CC BY-NC-SA 4.0

原文链接:https://aprilzz.com/tutorials/pocketbase-lightweight-backend