BeeCount Cloud 自建云
3.0 新增 · 官方推荐的多设备实时同步方案
BeeCount Cloud 是官方推出的自建云同步服务端,用 Docker 一行命令就能跑起来,支持:
- 🔄 多设备实时协同:手机 A 改一笔,几秒内推到手机 B 和 Web
- 🌐 内置 Web 管理端:一个 Docker 镜像包含 server + web + PWA,浏览器直接用
- 👥 多用户独立:一个服务器可以多人注册账号,各自数据完全隔离
- 🐳 一键部署:Docker Compose 配置文件不到 10 行
适合谁
| 用户类型 | 推荐理由 |
|---|---|
| 🏠 家庭多人记账 | 每人注册一个账号 + 共享账本邀请家人共记一本,Owner / Editor 角色权限分明 |
| 📱 单人多设备 | 手机 / iPad / Web 三端秒级同步,不用手动"上传下载" |
| 🖥️ 有 NAS / VPS 的用户 | Docker 一键跑起来,数据在自己机器上 |
| 👨💻 技术用户 | 开源、可审计,想二次开发也可以 |
- App 3.5.1 的「账单标记」需要 Cloud ≥ 1.5.1:云模式下,服务端的收支/预算汇总按「不计入收支」「不计入预算」标记过滤;老服务端不识别标记,云端统计会把已标记的交易也算进去(本地模式与单机统计不受影响,始终正确)。升级顺序务必先服务端、后 App
- App 3.4.0 的「每月起始日」需要 Cloud ≥ 1.4.0:老服务端会忽略该设置,表现为"设置不跨设备"。升级顺序建议先服务端、后 App
- 升级到 1.4.0 时数据库迁移自动执行,并会自动回填修复历史交易"账户统计漏算"的问题(老版本 Web 写入的部分交易缺账户关联,导致 Web 账户统计偏小),无需手工操作
- 1.3.12 起 Web 端 CSV 导入按客户端时区换算时间(修复导入时间晚 8 小时)
一键部署
将下面的内容存为 docker-compose.yml:
services:
beecount-cloud:
image: sunxiao0721/beecount-cloud:latest
restart: unless-stopped
ports:
- "8869:8080"
volumes:
- ./data:/data
启动:
mkdir -p beecount && cd beecount
# 把上面 yaml 存为 docker-compose.yml
docker compose up -d
首次启动时,Docker 会:
- 在
./data/beecount.db自动建库 + 跑 migration - 生成
./data/.jwt_secret(32 字节强密钥,600 权限) - 自动创建一个管理员账号,随机 16 位密码
拿到管理员账号
方式 1:从日志里看(推荐)
docker compose logs beecount-cloud | grep -A 10 "初次启动"
会看到:
========================================================================
BeeCount Cloud — 初次启动,已自动创建管理员账号:
邮箱: [email protected]
密码: FIDodUnwprkw1zUi
凭证已落盘到 /data/.initial_admin_password(volume 内,600 权限)
========================================================================
方式 2:从文件读
cat ./data/.initial_admin_password
登录使用
Web 管理端
浏览器访问 http://<你的服务器>:8869,用管理员账号登录。
第一次登录后建议立即修改密码(右上角头像 → 账户设置)。
手机 App 连接
- 打开蜜蜂记账 → 我的 → 云同步
- 选择 BeeCount Cloud 服务
- 填服务器地址(例如
http://192.168.1.100:8869)+ 管理员邮箱密码 - 登录后首次会全量上传本地所有账本到服务器
添加家人 / 队友
BeeCount Cloud 不支持自助注册(避免公网暴露被滥用),账号只能由管理员添加。
- 管理员登录 Web 后台 → 左侧菜单 用户
- 点击 新增用户,输入对方邮箱 + 临时密码
- 把账号发给对方,让 ta 在手机 App 或 Web 登录
每个用户默认数据独立、互相隔离。多人协作场景走"共享账本":Owner 在 App / Web 上一键生成邀请码,Editor 输入后即可加入。
共享账本(多人协作)
- Owner / Editor 双角色 — Owner 改账本元数据 / 邀请 / 踢人;Editor 共记交易,看不到 Owner 的其它账本
- 实时同步 — WebSocket 推送,任一成员改动其他成员秒级看到
- 谁记的 / 谁编辑的 — 每条交易自动标记创建人 + 最后编辑人(头像 + 角色)
- 成员收支统计 — Web 端独立弹窗(图表版,含柱图 + 饼图)/ App 端简版列表
- 三端等价 — iOS / Android / Web 都能创建邀请、加入、退出、踢人
详细使用说明见 共享账本 文档。
进阶配置
自定义管理员账号
默认首次启动生成随机密码。如果想自己指定:
services:
beecount-cloud:
image: sunxiao0721/beecount-cloud:latest
restart: unless-stopped
ports:
- "8869:8080"
environment:
BOOTSTRAP_ADMIN_EMAIL: [email protected]
BOOTSTRAP_ADMIN_PASSWORD: <你的强密码>
volumes:
- ./data:/data
两个环境变量只在"库里一个 user 都没有"时生效,之后改它们不会动老账号。
自定义 JWT 密钥
默认会自动生成 /data/.jwt_secret。如果你有密钥管理系统想自己托管:
environment:
JWT_SECRET: <32+ 字节的强随机串>
设置这个变量后,系统不会再生成或读取文件。
公网部署
建议在前面套一层 nginx / Caddy 做 HTTPS + 域名绑定:
用户 ─HTTPS─► Caddy/Nginx ─http://localhost:8869─► BeeCount Cloud
App 和 Web 都支持 https:// 地址。
数据备份
所有持久化数据都在 ./data/ 目录:
beecount.db—— SQLite 数据库(账本、交易、用户)attachments/—— 附件文件(头像、交易图片、分类自定义图标)backups/—— 备份归档.jwt_secret—— JWT 签名密钥(丢了所有用户 token 失效,需要重新登录)
备份整个 data/ 目录就是完整备份,迁到新服务器直接 rsync 过去启动即可。
Web 端支持 PWA
Web 管理端是渐进式 Web 应用(PWA):
- 浏览器地址栏右侧会出现"安装"图标,点一下装到桌面 / Dock / 开始菜单
- 装成独立 app 后,打开无浏览器地址栏,近似原生体验
- 离线时可以读缓存数据,回网后自动同步
升级
cd beecount
docker compose pull
docker compose up -d
数据库自动 migrate。data/ 目录不动。
常见问题
Q: 手机连不上服务器
检查:
- 防火墙是否放行
8869(或你自己映射的端口) - 手机和服务器在同一网络(或通过公网 IP / 域名)
- 服务器地址前缀是
http://还是https://,别写错
Q: 启动后 docker compose logs 没看到管理员 banner
可能已经不是首次启动了。密码文件在 ./data/.initial_admin_password。
如果文件也丢了,可以用 BOOTSTRAP_ADMIN_EMAIL + BOOTSTRAP_ADMIN_PASSWORD env 配一个新账号(仅当库里没任何 user 时生效)。如果库里已有账号需要重置密码,管理员登录 Web → 用户 → 编辑修改即可。
Q: 服务器迁到新机器
- 旧机器:
docker compose down - 把
data/目录rsync到新机器 - 新机器:同样的
docker-compose.yml,docker compose up -d - App 里服务器地址改成新的,重新登录
Q: Web 端能改主题色吗
可以。右上角头像 → 账户设置 → 主题色。每个用户的偏好独立,不影响别人。
相关仓库
- BeeCount-Cloud —— server + Web UI 代码
- BeeCount —— mobile app 代码