PocketBase

一个文件装下的开源后端:SQLite、登录、文件、实时推送和管理后台开源

关于 PocketBase

PocketBase 是一个 Go 写成的开源后端,单个可执行文件里装着 SQLite 数据库、实时订阅、用户与文件管理和网页管理后台。截至 2026-10-26,主线最新为 v0.40.6,2026-10-23 19:21 (UTC+8) 发布;只收回移修复的 v0.22.x 维护线最新为 v0.22.57。代码以 MIT 许可证开源,没有官方托管。FAQ 写明它是个人项目,背后没有拿薪水的团队或公司。官方宣布计划把新版本只发布在作者自建的 ganigeorgiev.com,GitHub 上的仓库届时归档。

PocketBase 界面截图

它解决什么问题

很多小型应用需要的后端都差不多:一个数据库、注册登录、文件上传、数据变化时推给前端,再加一个能查看和修改数据的后台。用托管服务要按用量付费,自己搭又要分别部署数据库、认证服务和对象存储。PocketBase 把这些装进一个可执行文件:下载、解压、运行 ./pocketbase serve,就得到一套 REST 风格的接口和一个网页管理后台。

它也是一个普通的 Go 库。业务逻辑可以写在自己的 Go 程序里,最后照样编译成一个可移植的文件;预编译版本内置了 JavaScript 引擎,也能用 JS 写服务端扩展。官方客户端 SDK 有 JavaScript 和 Dart 两套。

同一个仓库并行发布两条线:

  • 主线 v0.40.x:截至 2026-10-26,最新为 v0.40.6,2026-10-23 19:21 (UTC+8) 发布。主线还没到 1.0。
  • 维护线 v0.22.x:最新为 v0.22.57,2026-10-23 19:19 (UTC+8) 发布。2024-11-24 22:50 (UTC+8) 发布的 v0.23.0 是一次大规模重构,带来大量 Go、JS 和 Web API 的破坏性变更;当时的发布说明称,不打算继续开发旧应用的用户不必升级,关键缺陷和安全修复会回移到 v0.22.x。v0.22.57 的三条改动都标注为从 v0.40.6 回移。
  • 第一个公开发布 v0.1.0 是 2022-07-07 10:58 (UTC+8),GitHub 上共有约 300 个发布。

作者是 Gani Georgiev:MIT 许可证的版权行写着 Copyright (c) 2022 - present, Gani Georgiev,GitHub 账号 ganigeorgiev 是仓库的维护者,也是提交次数最多的贡献者。FAQ 称 PocketBase 是一个有意限定范围、完全靠志愿投入开发的个人开源项目(均为官方自述)。

2026-09-12 14:53 (UTC+8),作者在 GitHub 讨论区宣布把全部仓库迁到自建平台 ganigeorgiev.com,不保留 GitHub 镜像。v0.40.6 把内置 update 命令改为从新站点拉取新版本;作者在 discussion #7841 中写道,迁移后新版本“ONLY”在 ganigeorgiev.com/pocketbase/pocketbase 发布,不维护官方 GitHub 镜像。

PocketBase is neither a startup, nor a business. There is no paid team or company behind it.

PocketBase FAQ

核心能力

一个文件就是全部依赖。部署指南写的最小做法,是把可执行文件和 pb_migrations、pb_hooks 目录传到服务器后直接运行;运行时带上域名参数,就会自动向 Let's Encrypt 申请 HTTPS 证书。

数据层是内嵌的 SQLite,以 WAL 模式运行。集合分 Base、View、Auth 三类:Base 存普通业务数据,View 由一条 SQL SELECT 生成只读视图,Auth 集合自带用户认证。每个集合有列表、查看、创建、更新、删除五条 API 规则,规则本身就是过滤表达式,既管权限也管能看到哪些记录;规则未设置时只有超级管理员能操作。

认证方式包括密码、邮件一次性验证码 OTP 和 15 种以上 OAuth2 服务商,可以开启要求两种方式的多因素认证。接口无状态,令牌不存服务器,没有登出接口;超级管理员可以模拟任意用户生成令牌。

文件可以存在本地,也可以接 S3 兼容存储;图片支持按尺寸生成缩略图,受保护文件要带短时效令牌才能下载。实时推送基于 Server-Sent Events,记录增删改时按集合的查看和列表规则决定谁能收到。

扩展有 Go 和 JS 两条路。文档说 Go 是首要语言,接口文档更全;内嵌的 JS 引擎 goja 是对 Go 接口的封装,预热了 15 个运行时,pb_hooks 目录里的 .pb.js 文件改动后会自动重载。

运维相关的能力也在后台里:v0.16 起内置备份与恢复,可存本地或 S3 兼容存储,v0.40.0 起备份不再锁住数据库事务;v0.23.0 起有内置限流,v0.38.0 起可以把超级管理员限定在指定 IP 段。

谁在用

截至 2026-10-26,GitHub 上 pocketbase/pocketbase 有约 6.2 万颗星、约 3,700 个复刻,仓库建立于 2022-07-05。

FAQ 描述的典型用途是一台服务器就能承载的中小型应用:SaaS、手机应用的后端、内网系统。性能方面,FAQ 称在 Hetzner CAX11 这类两核、4GB 内存的小型服务器上,不做优化也能维持一万个以上的长连接实时订阅(均为官方自述);独立的 pocketbase/benchmarks 仓库列出了不同读写操作的测试结果。截至 2026-10-26,Hetzner 官网价目表上 CAX11 为每月 €6.49 起(不含增值税)。

作者在迁移讨论里写道,GitHub 上的约 300 个发布、25GB 以上的文件不会搬到新平台;仍有不少人在用 v0.22.x 这类老版本,所以维护线会继续收关键修复。作者也写道,项目不追求热度,宁可换一个规模更小、更愿意建设性交流的用户社区。

和同类比

Firebase 和 Supabase 是最常被拿来对照的两个后端服务。Firebase 的自定义服务端逻辑写成 Cloud Functions,部署前项目要升级到按用量计费的 Blaze 方案。PocketBase 没有云函数,自定义逻辑通过把 PocketBase 当成 Go 或 JS 框架来扩展实现。

Supabase 以 Postgres 为核心,也能自托管,自托管版用 Docker Compose 跑起一组服务,经同一个 API 网关提供 REST、认证、存储和实时接口。PocketBase 只用内嵌的 SQLite,FAQ 写明没有支持其他数据库的计划,部署单位是一个进程加一个 pb_data 目录。

扩展方式也不同。FAQ 说 PocketBase 只做纵向扩展,跑在单台服务器上。

适合与不适合

适合独立开发者和小团队,用来给单页应用、手机应用或内部工具做后端:数据、认证、文件、实时推送都在一个文件里,前端直接用官方 SDK 调接口。

适合熟悉 Go、需要把业务逻辑和后端编进同一个二进制文件的开发者;也适合只写少量服务端代码、用 JS 钩子快速搭原型的人,文档说之后可以逐步把 JS 迁到 Go。

适合能接受自己管服务器的人:一台带持久存储的 VPS 就能运行。

不适合需要多台服务器横向扩展、使用 Postgres 或 MySQL 等其他数据库,或者依赖云函数的项目。

不适合需要稳定接口承诺或商业支持合同的团队:1.0 之前不保证向后兼容,项目也没有付费支持。

不适合打算完全依赖 AI 工具、不看文档的人(FAQ 写明)。

上手路径

截至 2026-10-26,预编译文件在 GitHub Releases 下载,覆盖 macOS、Linux 和 Windows 的多种架构。解压后运行 ./pocketbase serve,终端会给出管理后台地址,在网页里创建第一个超级管理员,再新建集合、配置 API 规则。

前端可以用官方 JavaScript SDK,适用于浏览器、Node.js 和 React Native;或者用 Dart SDK,适用于 Web、移动端、桌面和命令行。文档推荐的网页应用做法,是前端写成客户端单页应用,支付回调、额外的服务端校验等需求再用 Go 或 JS 扩展处理。

上线时,部署指南给出了 systemd 服务、NGINX 和 Caddy 反向代理、Docker 的示例。指南把配置 SMTP 发信、开启限流、限定超级管理员 IP 列为强烈推荐项;官方没有 Docker 镜像,示例 Dockerfile 从 GitHub Releases 下载 v0.40.6 的压缩包,数据目录 /pb/pb_data 要挂载为持久卷。

迁移完成后,新版本只在 ganigeorgiev.com/pocketbase/pocketbase 发布;面向更新版本的 Go 代码要把 github.com/pocketbase 的导入路径换成 ganigeorgiev.com/pocketbase。

定价与许可证

PocketBase 免费,以 MIT 许可证开源;README 写明可以随意使用,包括拿来做收费服务。

官方不提供托管,费用就是自己服务器的开销。FAQ 列出 Google Cloud、Oracle Cloud 的免费额度和 Hetzner、Vultr 等 VPS 作为部署选项,并以每月约 $4 的 Hetzner CAX11 作为性能参照;截至 2026-10-26,Hetzner 官网价目表上 CAX11 为每月 €6.49 起(不含增值税)。

项目不接受个人捐款。FAQ 的解释是个人捐助往往附带默契的期待;愿意提供不附带条件的赞助或资助的机构,可以写信到 support@pocketbase.io。

风险与局限

发布渠道正在变化。按 2026-09-12 的迁移公告,GitHub 上的仓库会归档,开发转到 ganigeorgiev.com,不维护官方镜像,旧发布的文件留在 GitHub 不迁移;作者在讨论里把正式迁移定在 2026-10-26。截至 2026-10-26 04:32 (UTC+8),ganigeorgiev.com 首页仍只返回一条尚无内容的占位提示。GitHub 的 watch 订阅不会自动迁移。

还没到 1.0。README 写明在 1.0.0 之前不保证完全向后兼容;v0.40.0 就改变了控制台命令出错时的退出码。

维护集中在一个人身上。FAQ 写明没有超出现有内容的维护和支持承诺,路线图也没有固定时间表;v0.22.x 的回移修复,作者表示只在工作量可接受时继续。

运维由自己负责。备份可以用内置功能或复制 pb_data 目录,数据量较大时备份会拖慢查询,文档对 5GB 以上的数据推荐换用 sqlite3 .backup 加 rsync 的方式;复制和灾备 FAQ 推荐配合 Litestream。应用设置以明文 JSON 存在数据库里,包括 SMTP 密码和 S3 凭据,需要加密时要用 --encryptionEnv 参数。

v0.40.6 的发布说明写明,缩略图生成仍是内存溢出的主要来源之一,新加的像素上限只是缓解。JS 扩展运行在 goja 上,ES6 支持不完整,处理函数里不能用 setTimeout,计算密集的纯 JS 代码会变慢。

外部贡献受限。README 写明因为 LLM 垃圾提交,目前只有已有协作者能开 PR,也不欢迎 LLM 生成的贡献;新平台上没有 PR,代码修改意见以补丁附件的形式在讨论里提交。

我们的判断

PocketBase 的特点是:单个可执行文件包含 SQLite 数据库、认证、文件存储、实时订阅和管理后台;可以作为 Go 库扩展,也可以用 JS 钩子扩展;MIT 许可证开源,没有官方托管。

它的限制:只做纵向扩展,只支持内嵌 SQLite;1.0 之前不保证向后兼容;由一人志愿维护,没有付费支持;发布渠道正从 GitHub 迁往 ganigeorgiev.com。

亮点

PocketBase 是一个装在单个文件里的后端。下载一个可执行文件,你就有了 SQLite 数据库、用户认证、文件存储、实时订阅和管理后台,无论是业余项目,还是一家永远不想运维 Postgres 的公司,都能直接用上。

Gani Georgiev 一个人维护它,亲自回复 issue,多年来始终把范围控制得很紧。

一个可执行文件就包含 SQLite 数据库、用户认证、文件存储、实时订阅和管理后台,由一个人维护。

资料来源

官方

  1. PocketBase READMEGitHub · 访问于 2026 年 10 月 26 日
  2. PocketBase - Open Source backend in 1 filepocketbase.io · 访问于 2026 年 10 月 26 日
  3. PocketBase FAQpocketbase.io · 访问于 2026 年 10 月 26 日
  4. Going to production - PocketBase docspocketbase.io · 访问于 2026 年 10 月 26 日
  5. Authentication - PocketBase docspocketbase.io · 访问于 2026 年 10 月 26 日
  6. API rules and filters - PocketBase docspocketbase.io · 访问于 2026 年 10 月 26 日
  7. Collections - PocketBase docspocketbase.io · 访问于 2026 年 10 月 26 日
  8. Files upload and handling - PocketBase docspocketbase.io · 访问于 2026 年 10 月 26 日

动态与深度阅读