Actual Budget 自托管搭建指南:开源个人预算与财务追踪系统
2026/6/7 16:11:02 网站建设 项目流程

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。

安装 Caddy:

sudoaptinstall-ydebian-keyring debian-archive-keyring apt-transport-httpscurl-1sLf'https://dl.cloudsmith.io/public/caddy/stable/gpg.key'|sudogpg--dearmor-o/usr/share/keyrings/caddy-stable-archive-keyring.gpgcurl-1sLf'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt'|sudotee/etc/apt/sources.list.d/caddy-stable.listsudoaptupdate&&sudoaptinstallcaddy-y

docker-compose.yml

创建部署目录并编写配置:

mkdir-p/opt/actualcd/opt/actual

创建docker-compose.yml

version:"3.8"services:actual:image:actualbudget/actual-server:latestcontainer_name:actualports:-"127.0.0.1:5006:5006"volumes:-./data:/dataenvironment:-ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20-ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50-ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20restart:unless-stopped

启动服务:

dockercompose up-d

验证容器运行状态:

dockercomposepsdockercompose logs actual

配置说明

Caddy 反向代理

编辑/etc/caddy/Caddyfile

budget.example.com { reverse_proxy localhost:5006 }

重载 Caddy:

sudosystemctl reload caddy

Caddy 会自动申请 HTTPS 证书,配置完成后访问https://budget.example.com即可打开 Actual Budget。

环境变量说明

变量说明默认值
ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB同步文件大小限制(MB)20
ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB加密同步文件大小限制(MB)50
ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB上传文件大小限制(MB)20
ACTUAL_SERVER_FILES数据文件存储路径(容器内)/data/server-files
ACTUAL_USER_FILES用户数据存储路径(容器内)/data/user-files

密码保护(可选)

Actual 支持为服务器设置访问密码。首次访问时,系统会引导你设置一个服务器密码,之后所有设备连接时都需要输入这个密码。密码存储在服务端,不是账号体系,而是服务器级别的访问控制。

使用方法

首次设置

  1. 访问https://budget.example.com
  2. 系统提示设置服务器密码(建议设置,防止陌生人访问)
  3. 创建第一个预算文件,选择"Start Fresh"或从 YNAB / 其他系统导入

信封记账法基本流程

Actual Budget 的核心操作步骤:

  1. 设置预算类别:按需创建分类,例如:住房、餐饮、交通、娱乐、储蓄
  2. 分配本月预算:将本月收入分配到各个类别(“给每一块钱一个任务”)
  3. 记录交易:每笔支出/收入手动录入,或通过文件导入
  4. 查看余额:超支的类别会显示红色,可以从其他类别挪入资金

添加账户

在左侧菜单点击"Add Account",选择账户类型:

  • On Budget:纳入预算管理的账户(日常消费卡、现金等)
  • Off Budget:不纳入预算的账户(投资账户、贷款等,只追踪余额)

导入交易记录

Actual 支持导入以下格式:

- OFX / QFX(银行导出格式) - QIF(Quicken 格式) - 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 actual

Q:数据会丢失吗?同步原理是什么?

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-d

Q:支持多用户吗?

目前 Actual Budget 是单用户设计(共享服务器密码),多个家庭成员可以共用同一套预算文件,通过数据同步保持一致。官方多用户支持正在开发中。

Q:移动端体验如何?

Actual Budget 的 Web 界面是响应式设计,手机浏览器访问体验较好。iOS/Android 原生 App 目前由社区维护(ActualBudget Mobile),功能比 Web 端略少,主要用于快速录入交易。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询