Sure 自托管记账部署:一条命令跑起完整账本,含四个坑

自己用 AI 写记账工具,最后都会卡在同一批问题上:银行流水对账、分类规则冲突、预算跨月结转、信用卡还款与转账去重。这些是有人做了几年才收尾的活。
Sure 就是把这一段做完了的开源版本。它是 Maybe Finance 的社区 fork——原团队 2021 到 2022 年投入接近一百万美元做出完整产品,2023 年中停更并开源,仓库归档,现在由社区按 AGPLv3 维护,今天 1.2 万星、916 fork。本文只讲两件事:怎么把它跑起来,以及跑起来之前该知道的四个坑。
一、它到底是什么
| 项 | 内容 |
|---|---|
| 定位 | 可自托管的全功能个人财务 / 记账应用 |
| 技术栈 | Ruby on Rails + PostgreSQL 16 + Redis,worker 跑后台任务 |
| 许可证 | AGPLv3 |
| 部署方式 | Docker Compose,官方镜像 ghcr.io/we-promise/sure:stable |
| 最低资源 | 官方实测 512MB 内存可跑,稳态约 352MB;启用 AI 建议 1GB 以上 |
| 客户端 | Web 为主,另有 macOS 桌面版(Tauri 2)、Flutter 手机端(登录 + 余额)、MCP 端点、HTTP API |
| 数据接入 | Plaid、Truelayer、Monobank、Akahu、Enable Banking、FinanceKit 等;加密钱包与链上资产 |
功能覆盖面按 app/models 里能定位到的模块列:
- 账户:银行、信用卡、贷款、投资、加密钱包
- 账目:交易、分类、商户、标签
- 自动化:规则与规则组、自动分类
- 规划:预算与预算分类、储蓄目标与 pledge、周期账单
- 汇总:净值 / 资产负债表、多币种汇率
- 协作:家庭与账户共享
- 迁移:Mint、Monarch、Actual 账本导入,带分类与商户映射
适合:已经在记账、想摆脱订阅费、愿意自己维护一台机器的人。
不适合:完全不想碰命令行;或者人在国内还指望银行自动同步(Plaid 只对西方用户开放)。
二、成本差异在哪
订阅制的价格是明确的:YNAB 109 美元/年(14.99 美元/月),Monarch Core 99.99 美元/年(14.99 美元/月),价格取自两家官网,核于 2026-11-07。
自托管省掉这笔钱,换成两样支出:一台常年开机的机器,以及你的维护时间。这笔账对家里已有 NAS 或旧机器的人划算,对只想双击安装的人不划算。
三、部署:取文件,然后一条命令
前提:机器上装好 Docker 与 Docker Compose。
第一步,建目录并取官方 compose 文件:
mkdir -p ~/sure && cd ~/sure
curl --fail --location --silent --show-error \
--output compose.yml \
https://raw.githubusercontent.com/we-promise/sure/main/compose.example.yml
第二步,起服务:
docker compose up -d
默认配置即可运行,compose 里包含 web、worker、PostgreSQL 16、Redis 四个服务,镜像指向 ghcr.io/we-promise/sure:stable。
第三步,浏览器访问 http://localhost:3000,注册第一个账号。
要跑在后台并随机器重启,用 docker compose up -d 后配合 Docker 的 restart 策略;官方文档也给了 -d 前台调试与小内存主机的调参说明。
想让外部访问,先别急着开端口
容器内监听 0.0.0.0:3000,Docker 默认只在宿主机 IPv4 上发布。正确做法是前面加一层反向代理做 TLS,而不是把 3000 直接映射到公网。Plaid 这类银行同步还额外要求你的实例有可公网访问的域名与有效 SSL,这是前面"不适合国内同步场景"的由来。
四、四个坑

坑一:worker 不能省。
同步、自动分类、定时汇率刷新都跑在 worker 里。只起 web 会表现为"页面能开、后台不动",数据不更新但也不报错。
坑二:备份默认没有开。
compose 里的 backup 是可选服务,与 web、worker 同镜像。手动备份一条命令:
docker compose run --rm backup create
备份内容是数据库 dump、上传附件,以及含 SECRET_KEY_BASE 的 config/.env。异地存放时记得自行加密——没有 SECRET_KEY_BASE,库里的加密数据读不回来。
坑三:改配置必须重新拉起容器。
修改 compose 文件或 .env 之后要执行 docker compose up -d。docker compose restart 会保留旧的环境变量,改动不生效,这一点最容易误判成"配置无效"。
坑四:AI 不是必需,但会改变资源规划。
它有两条独立管线:聊天助手(OpenAI 兼容接口或原生 Anthropic,可关)和后台的自动分类与商户识别(同样可关)。官方提供完全不启用 AI 的部署模板;一旦启用,内存下限从 512MB 抬到 1GB。另外 MCP 端点给外部 AI 助手的是该用户家庭数据的读取权限,官方文档明确要求把 MCP token 当生产密钥管理。
五、账本迁移与其他用法
已有账本不必重录。Mint、Monarch、Actual 的导出文件可以直接导入,导入流程里有分类映射和商户映射,导入前有 preflight 预检;账户类型也有独立的映射表。
其它接入方式:
- MCP:给 Claude Desktop 之类的助手读你的账本数据,服务端配 bearer token + 指定用户邮箱
- HTTP API:OpenAPI 文档在
docs/api/openapi.yaml,适合写脚本、做看板 - macOS 桌面版:Tauri 2 外壳,首次启动填服务器地址并做健康检查
- 手机端:Flutter,目前是登录与余额查看
六、小结
- 只想用、不想部署:等有托管服务再考虑;当前路径就是自托管
- 想自己跑:一台 512MB 的机器 + 一条 compose 命令足够起步,先把 backup 打开
- 想接自动化:走 MCP 或 HTTP API,但要按生产密钥的标准管 token
一句话:它省的是订阅费,要的是你愿意维护一台机器。
项目地址:https://github.com/we-promise/sure
更多推荐
所有评论(0)