Actual Budget 自托管搭建指南开源个人预算与财务追踪系统记账软件很多但真正好用的并不多。商业软件要么需要订阅费用要么会把你的财务数据同步到厂商服务器要么广告满天飞。对于想要严肃管理个人财务的人来说自托管一个开源记账系统是个更可控的选择。Actual Budget 是一个基于信封记账法Envelope Budgeting的开源个人财务管理系统。信封记账法的核心思想是把收入分配到不同的信封预算类别里而不是用完再看余额——吃饭信封、娱乐信封、房租信封各自有额度超支了就要从其他信封挪钱这种方式能让你对钱的流向更有感知。Actual Budget 有 Web 界面数据存在本地浏览器IndexedDB服务器只作为同步中继即使服务器临时不可用客户端也能正常使用。本文介绍如何用 Docker Compose Caddy 搭建 Actual Budget 自托管服务。服务器配置Actual Budget 服务端只负责文件同步资源消耗极低入门级机器即可运行。项目规格CPU1 核内存1GB硬盘10GB系统Ubuntu 22.04 / Debian 12推荐使用雨云服务器 rainyun-com的 1 核 1GB 机型来部署 Actual Budget完全够用价格实惠。注册填优惠码2026off领 5 折优惠券新用户首单直接半价。准备工作确保服务器已安装 Docker 和 Docker Compose# 安装 Dockercurl-fsSLhttps://get.docker.com|sh# 验证安装docker--versiondockercompose version准备一个域名例如budget.example.com将 DNS A 记录指向服务器 IP。安装 Caddysudoaptinstall-ydebian-keyring debian-archive-keyring apt-transport-httpscurl-1sLfhttps://dl.cloudsmith.io/public/caddy/stable/gpg.key|sudogpg--dearmor-o/usr/share/keyrings/caddy-stable-archive-keyring.gpgcurl-1sLfhttps://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt|sudotee/etc/apt/sources.list.d/caddy-stable.listsudoaptupdatesudoaptinstallcaddy-ydocker-compose.yml创建部署目录并编写配置mkdir-p/opt/actualcd/opt/actual创建docker-compose.ymlversion:3.8services:actual:image:actualbudget/actual-server:latestcontainer_name:actualports:-127.0.0.1:5006:5006volumes:-./data:/dataenvironment:-ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB20-ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB50-ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB20restart:unless-stopped启动服务dockercompose up-d验证容器运行状态dockercomposepsdockercompose logs actual配置说明Caddy 反向代理编辑/etc/caddy/Caddyfilebudget.example.com { reverse_proxy localhost:5006 }重载 Caddysudosystemctl reload caddyCaddy 会自动申请 HTTPS 证书配置完成后访问https://budget.example.com即可打开 Actual Budget。环境变量说明变量说明默认值ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB同步文件大小限制MB20ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB加密同步文件大小限制MB50ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB上传文件大小限制MB20ACTUAL_SERVER_FILES数据文件存储路径容器内/data/server-filesACTUAL_USER_FILES用户数据存储路径容器内/data/user-files密码保护可选Actual 支持为服务器设置访问密码。首次访问时系统会引导你设置一个服务器密码之后所有设备连接时都需要输入这个密码。密码存储在服务端不是账号体系而是服务器级别的访问控制。使用方法首次设置访问https://budget.example.com系统提示设置服务器密码建议设置防止陌生人访问创建第一个预算文件选择Start Fresh或从 YNAB / 其他系统导入信封记账法基本流程Actual Budget 的核心操作步骤设置预算类别按需创建分类例如住房、餐饮、交通、娱乐、储蓄分配本月预算将本月收入分配到各个类别“给每一块钱一个任务”记录交易每笔支出/收入手动录入或通过文件导入查看余额超支的类别会显示红色可以从其他类别挪入资金添加账户在左侧菜单点击Add Account选择账户类型On Budget纳入预算管理的账户日常消费卡、现金等Off Budget不纳入预算的账户投资账户、贷款等只追踪余额导入交易记录Actual 支持导入以下格式- OFX / QFX银行导出格式 - QIFQuicken 格式 - CSV自定义列映射大多数中国银行可以导出 CSV 账单通过 CSV 导入映射好日期、金额、描述字段即可。多设备同步Actual Budget 的数据架构所有数据存在浏览器本地IndexedDB服务器只存储加密的同步文件。在新设备上打开 Web 界面输入服务器地址和密码选择要同步的预算文件本地数据会从服务器拉取并解密。手机端直接用浏览器访问https://budget.example.com即可也可以用 PWA 方式安装到桌面体验接近原生 App。数据导出在预算设置中可以导出 CSV 格式的账单数据预算 → 右上角菜单 → Export Data → 导出为 CSV常见问题Q忘记服务器密码怎么办密码存储在数据卷的config.json中哈希值需要手动重置# 停止容器dockercompose stop actual# 进入数据目录删除或修改密码配置cat/opt/actual/data/config.json# 将 loginMethod 和 password 字段清空后重新设置# 重启容器dockercompose start actualQ数据会丢失吗同步原理是什么Actual 使用 CRDT无冲突复制数据类型做数据同步每个客户端本地都有完整的数据副本服务器只是同步中继。即使服务器宕机本地数据依然完整。建议定期将浏览器本地数据导出备份。Q如何迁移数据到新服务器# 备份数据卷tarczf actual-backup-$(date%Y%m%d).tar.gz /opt/actual/data# 在新服务器解压恢复tarxzf actual-backup-*.tar.gz-C/opt/actual/dockercompose up-dQ支持多用户吗目前 Actual Budget 是单用户设计共享服务器密码多个家庭成员可以共用同一套预算文件通过数据同步保持一致。官方多用户支持正在开发中。Q移动端体验如何Actual Budget 的 Web 界面是响应式设计手机浏览器访问体验较好。iOS/Android 原生 App 目前由社区维护ActualBudget Mobile功能比 Web 端略少主要用于快速录入交易。