雨云搭建 PocketBase 自托管后端即服务教程

单文件后端即服务(BaaS):数据库+用户认证+实时订阅+文件存储一站式,1核2G 即可跑
发布于
7

做小程序、App 或个人项目时,最麻烦的往往是后端:要建数据库、写用户登录、做文件上传、还要实时推送。PocketBase 是一个用单个可执行文件就能提供「数据库 + 用户认证 + 实时订阅 + 文件存储 + 管理后台」的开源后端即服务(BaaS),本地跑起来不到 10 秒,特别适合自托管轻量项目。本文记录在雨云 VPS 上用 Docker 部署 PocketBase 的完整过程与踩坑点。

一、什么是 PocketBase,解决什么问题

PocketBase 把后端最常见的几件事打包成一个二进制程序:

  • 内置数据库:基于 SQLite,提供可视化的集合(Collection)管理,不必单独装 MySQL/PostgreSQL;
  • 用户认证:开箱即用的邮箱密码登录、OAuth 第三方登录、JWT 令牌;
  • 实时订阅:前端可以通过 WebSocket 订阅数据变更,数据一改前端立刻更新;
  • 文件存储:支持文件字段,上传的文件直接存到磁盘或对象存储;
  • Admin 后台:自带一个管理界面,建表、加字段、配权限都能点鼠标完成。

和 Supabase、Firebase 相比,PocketBase 的最大优势是「轻」——单文件、零外部依赖,1 核 1G 的机器就能跑。和前面写过的 NocoDB(见 12342)不同,NocoDB 本质是「把数据库变成在线表格」,而 PocketBase 是「把数据库变成带认证和 API 的完整后端」,更适合给程序当后端用。

二、环境准备

建议在雨云买一台 1 核 2G 以上的 VPS(数据库 + 文件服务略吃内存)。系统选 Ubuntu 22.04,安装好 Docker 与 Docker Compose(可参考 12235 的 VPS 入门)。国内节点延迟低、备案方便,做面向国内用户的小程序后端很合适。

新用户用优惠码 admin01 可享 五折优惠,雨云支持 7 天无理由退款,先开一台练手不亏。入口:雨云官网

部署用 Docker 最省事,既方便用 Portainer(见 12310)统管,也方便用 Watchtower(见 12312)自动更新。

三、用 Docker Compose 部署

新建 docker-compose.yml

services:
  pocketbase:
    image: ghcr.io/pocketbase/pocketbase:latest
    container_name: pocketbase
    restart: unless-stopped
    command:
      - /pb/pocketbase
      - serve
      - --http=0.0.0.0:8090
    ports:
      - "8090:8090"
    volumes:
      - ./pb_data:/pb/pb_data
      - ./pb_public:/pb/pb_public

关键点:

  • 数据必须挂卷./pb_data 是 SQLite 数据库和上传文件所在地,不挂卷重启就丢;
  • 端口别直接裸奔对外:8090 是管理后台端口,建议用 Nginx/Caddy 反代并加 Authelia 之类鉴权(见 12340),避免后台被扫;
  • 启动后访问 http://服务器IP:8090/_/ 即可进入初始化。

四、初始化与管理后台

首次打开 _/ 会要求创建管理员账号,这个账号权限极高,务必用强密码。登录后你会看到:

  • Collections:建集合(相当于表),支持文本、数字、布尔、文件、关联等字段类型;
  • API 规则:每个集合能分别设置「公开读 / 登录读 / 仅管理员」的权限,默认是禁止公开的,需手动放开;
  • Settings → Application:能看到 SDK 用法和 API 地址。

踩坑提醒:PocketBase 默认所有集合对外不可见,前端调 API 报 403 多半是权限没开;另外集合改名会改底层表名,上线后尽量别乱改。

五、和 n8n 联动做自动化

PocketBase 自带 REST API 和 Web 钩子,可以很方便地和 n8n(见 12296)联动:例如有新用户注册时,通过 PocketBase 的事件触发 n8n 工作流发欢迎通知。这种「PocketBase 当数据库 + n8n 当逻辑编排」的组合,能做不少轻量业务系统。

六、备份别忘了

SQLite 数据库是单个文件,备份很简单:停服或锁库后直接拷 pb_data 目录即可。建议配合 BorgBackup(见 12306)做定时去重备份,或把上传的文件同步到对象存储(见 12308)。

合规提醒

PocketBase 是你自己运营的后端服务,上面存储的用户注册信息、手机号、邮箱等属于《个人信息保护法》规定的个人信息,收集前需向用户明示并取得同意,不得擅自共享或出售。后台管理员账号等同于数据库最高权限,请妥善保管、不向他人泄露。不得利用本服务存储或分发违法不良信息。

常见问题(FAQ)

PocketBase 能扛多大并发?
单机 SQLite 适合中小流量,日活几千以内通常没问题;量更大建议迁移到外部 Postgres 或做读写分离。
文件存在本地还是对象存储?
默认存本地 pb_data,量大便宜方案是用 rclone 把文件同步到对象存储或定期搬运。
和小程序/App 怎么对接?
PocketBase 提供 JS/Dart/Swift/Kotlin 等官方 SDK,小程序端直接用 REST API + JWT,登录后 token 放请求头。
管理后台 8090 端口要不要暴露公网?
不建议。最好用反代加访问控制把后台藏起来,只对外暴露需要的前端子域名。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

用雨云 KVM 云服务器 Docker 部署 Wiki.js + PostgreSQL,搭一个自己托管的私有知识库,文档可接 Git 后端自动备份。含内存调优、反代 HTTPS 与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Plausible 隐私统计,Postgres+事件处理+HTTPS 反代,跟踪代码嵌入网站。含 SECRET_KEY_BASE 坑与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Wallabag 稍后读服务:一键保存网页、正文去广告、多端离线阅读,Pocket 替代方案。含 DOMAIN_NAME 配置坑与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 Outline 团队文档协作(Outline+PostgreSQL+Redis+对象存储),配 Nginx 反代 HTTPS、空间权限与备份。含环境变量坑与优惠码 admin01 五折。

用雨云 KVM 云服务器 Docker 自建 BookStack 团队文档/wiki,BookStack+MySQL 部署、Nginx 反代 HTTPS、书架层级与权限。含默认密码坑、413 上传限制与优惠码 admin01 五折。