PocketBase 完整入门教程:单个 Go 二进制文件内建数据库、认证与后台管理的实时后端
【免费下载链接】pocketbaseOpen Source realtime backend in 1 file项目地址: https://gitcode.com/GitHub_Trending/po/pocketbase
PocketBase 是一个用 Go 编写的开源后端,把 SQLite 数据库、实时订阅、用户认证和管理面板全部装进一个可执行文件。它不需要额外安装数据库服务,几分钟内就能跑起一套完整的后端接口,适合独立开发者、小团队和需要快速验证原型的场景。
能力总览:一个二进制里装了什么
| 能力 | 说明 | 相关位置 |
|---|---|---|
| 内嵌 SQLite 数据库 | 全部数据落在单文件里,免部署 | core/db.go |
| 实时订阅 | 数据变更通过 WebSocket 推给客户端 | apis/realtime.go |
| 用户认证 | 邮箱验证、密码重置、OTP、OAuth2 登录 | apis/record_auth_with_password.go |
| 管理面板 | 网页端维护数据模型与数据 | ui/src/ |
| 文件存储 | 本地目录或 S3 | tools/filesystem/ |
| JS/Go 双扩展 | 脚本热更新或编译进二进制 | plugins/jsvm/ |
🚀 最快启动方式:从源码到跑通服务
如果你不想只跑预编译版本,装好 Go 后直接编译仓库里的最小示例即可:
git clone https://gitcode.com/GitHub_Trending/po/pocketbase cd pocketbase/examples/base CGO_ENABLED=0 go build ./base serve服务默认监听127.0.0.1:8090(见 cmd/serve.go),浏览器打开这个地址,首次启动会进入超级用户安装页,在那里创建管理员账号。所有数据都写在pb_data目录,备份时只需要带上这个目录。
典型用法一:用管理面板定义数据模型
集合(collection,相当于数据表)在管理面板中维护:新建集合、添加字段、配置访问规则,保存后对应的 REST 接口和管理界面自动生成。字段类型有布尔、日期、关联、文件、选择等十几种,实现在 core/ 目录的field_*.go文件中,模型定义见 core/collection_model.go。
比如搭一个博客,你只需要建 posts 和 comments 两个集合,用户表是内置的,认证接口现成可用。
⚡ 典型用法二:实时数据订阅
实时端点在 apis/realtime.go 中实现。前端建立长连接并订阅某个集合的变更后,该集合的记录发生增删改时会自动推送给客户端,不用轮询。协作编辑、订单状态同步、多人看板这类场景用它最直接。
🔌 典型用法三:两条扩展路径
- Go 扩展:把 PocketBase 当普通 Go 库引入,在事件钩子里写业务逻辑,最后仍可编译成单个静态可执行文件,示例见 examples/base/main.go
- JS 扩展:JS VM 插件(plugins/jsvm/)加载
pb_hooks目录下的脚本,改逻辑不用重新编译
复杂、稳定的逻辑用 Go,频繁微调的规则用 JS,两者可以同时存在。
按需定制:改什么去哪里找
- 系统邮件模板(验证、密码重置等):mails/templates/
- 限流、CORS、请求体大小限制:apis/middlewares_rate_limit.go 等中间件
- 定时任务调度:tools/cron/
- 数据库结构变更脚本:migrations/
✅ 上线前检查清单
- 端口与域名:给
serve传入域名参数后,HTTP/HTTPS 默认切到0.0.0.0:80/443并自动申请证书,裸跑时默认只监听本机 - 版本兼容:项目 README 明确 v1.0 之前不保证完全向后兼容,建议锁定版本,升级前备份
pb_data - 容量预期:SQLite 单文件适合中小并发;高并发读可以考虑只读副本,而不是直接上分布式
下一步:一个 10 分钟验证任务
挑一个小业务(比如待办清单),在管理面板建 1 个集合、加 3~5 个字段,然后写两行请求调用列表接口,再开一个实时订阅确认数据变更能推过来。走通这条链路,你对 PocketBase 的用法就基本有数了;更细的接口参数可以在管理面板的 API 预览面板里逐条试。
【免费下载链接】pocketbaseOpen Source realtime backend in 1 file项目地址: https://gitcode.com/GitHub_Trending/po/pocketbase
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考