Actual Budget:部署在 VPS 上的个人预算管理器
银行应用会告诉你钱已经花到了哪里。Actual Budget 回答的是另一个问题:当一部分资金已经预留给房租、食品、旅行和意外支出时,账户中真正可以自由支配的金额还有多少?
Actual Budget 是一款免费、开源的个人财务管理器。它在本地运行,通过自己的服务器同步,并支持端到端加密。下面将介绍它的功能、限制以及在 VPS 上的安装方法。
七步部署 Actual Budget
- 创建一台 Linux VPS,并将子域名指向它,例如
budget.example.com。 - 安装 Docker 和 Docker Compose。
- 使用持久化数据目录启动官方容器。
- 通过 Caddy 配置 HTTPS。
- 设置服务器密码并创建预算。
- 添加账户、分类、规则和定期付款。
- 启用加密并配置外部备份。
Actual Budget 是什么
Actual Budget 是一款用于管理个人或家庭预算的自托管应用。它经常被视为 YNAB 的开源替代方案,不过你也可以从一个全新的预算开始使用。
该服务采用虚拟信封预算法。假设账户中有 100,000 卢布,其中 40,000 用于住房,20,000 用于食品,10,000 用于水电等公共事业费用,15,000 存入应急储备。完成分配后,可用于非必要消费的并不是 100,000 卢布,而只有 15,000 卢布。
这种方法改变了应用的作用。普通支出追踪器解释过去的钱花在了哪里,而 Actual Budget 帮助你在购买之前做决定。某个分类中未使用的余额会结转到之后;如果出现超支,也可以从另一个信封中转入资金。
另一个区别是本地优先架构。预算保存在已连接的设备上,即使没有互联网也可以访问。网络恢复后,更改会通过服务器同步。VPS 的主要作用是在电脑、手机和浏览器之间交换数据,而不是处理每一笔操作。
Actual Budget 的主要功能
- 信封预算。 只分配已经实际收到的资金。
- 账户和交易。 支持转账、将一笔消费拆分到多个分类、添加备注以及核对余额。
- 规则和计划。 可以整理银行交易描述、自动指定分类,并提前纳入工资、房租或订阅等项目。
- 导入。 支持 CSV、QIF、OFX、QFX 和 CAMT。包含交易标识符的格式能更有效地避免重复记录。
- 报表。 提供现金流、净资产、支出以及可自定义图表。
- 迁移和 API。 支持从 YNAB4 和当前版本的 YNAB 导入,也提供用于自定义集成的 API。
在手机上,Actual Budget 以 PWA 的形式安装,也就是添加到主屏幕的网页应用。建议提前体验移动端界面,确认它是否符合自己的使用习惯。
| 参数 | 云端服务 | Actual Budget |
|---|---|---|
| 存储位置 | 服务提供商处 | 设备和自己的服务器上 |
| 离线使用 | 取决于服务 | 核心功能可在本地使用 |
| 维护 | 由服务提供商负责 | 由所有者负责 |
| 软件费用 | 订阅或免费套餐 | 无强制订阅 |
| 数据控制 | 按服务提供商规则执行 | 由服务器所有者控制 |
Actual Budget 适合重视隐私和控制权的用户。如果不想自行维护服务器,云端服务会更加方便。
Actual Budget 的服务器要求
项目没有公布严格的最低 CPU 和内存要求。服务器主要同步体量较小的财务数据,因此对于个人或家庭使用,合理的起步配置是:
- 1 个 vCPU;
- 1 GB 内存;
- 10 GB SSD;
- Ubuntu 24.04 LTS;
- 一个域名或子域名;
- 用于备份的外部存储空间。
这是实践建议,并非官方最低要求。如果还要运行其他容器,最好准备 2 GB 内存。
如何在 VPS 上安装 Actual Budget
下面的示例使用 Ubuntu 24.04 和子域名 budget.example.com。
1. 准备服务器
创建一条指向 VPS IP 地址的 DNS A 记录,通过 SSH 连接,并只开放必要端口:
ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl ufw
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable2. 安装 Docker
添加 Docker 官方软件源:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin3. 启动 Actual Budget
mkdir -p /opt/actual-budget/data
cd /opt/actual-budget
cat > compose.yml <<'EOF'
services:
actual:
image: actualbudget/actual-server:latest
restart: unless-stopped
ports:
- "127.0.0.1:5006:5006"
volumes:
- ./data:/data
EOF
docker compose up -d
docker compose ps绑定到 127.0.0.1 后,端口 5006 不会直接暴露到互联网。预算数据保存在 /opt/actual-budget/data 中,更新容器时不会丢失。
4. 配置 HTTPS
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
budget.example.com {
reverse_proxy 127.0.0.1:5006
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy当 DNS 已指向 VPS,并且端口 80 和 443 可以访问时,Caddy 会自动获取 TLS 证书。打开 https://budget.example.com,并设置一个足够长的服务器密码。
如何配置第一个预算
不必从导入数年的历史记录开始。更快捷的方式是先添加目前使用的账户,填写当前余额,然后为固定付款、日常支出、储蓄和不定期支出创建分类。
只分配当前已经拥有的资金,直到“待分配”金额变为零。然后导入近期交易,核对余额,并为经常出现的商店、订阅和转账创建规则。
分类应当帮助你做出决定。分别设置“医疗”“设备维修”和“年度订阅”等信封,比使用一个笼统的“其他”分类更有价值。
关于银行同步需要了解什么
银行连接并非在所有国家都可用,并取决于受支持的 API 提供商。它需要自己的服务器以及额外的凭据。Actual Budget 不会完全自动运行同步,用户需要在界面中主动发起。
银行连接令牌会单独保存在服务器上,不包含在预算的端到端加密范围内。如果某家银行不受支持,可以从银行对账单导入交易。OFX 和 QFX 通常比 CSV 更方便,因为其中包含交易标识符。
加密、备份和更新
端到端加密需要为每个预算单独启用。请将密码保存在密码管理器中,因为服务器无法恢复它。Actual Budget 本身不会加密设备上的本地副本,因此手机和电脑应使用锁屏密码和磁盘加密进行保护。
同步不能替代备份。请定期从设置中导出预算,并将数据目录复制到其他位置:
cd /opt/actual-budget
docker compose stop
tar -czf /root/actual-budget-$(date +%F).tar.gz data
docker compose start必须将压缩包转移到 VPS 之外。更新前也应先创建副本,然后执行:
cd /opt/actual-budget
docker compose pull
docker compose up -d长期使用时请选择稳定的 latest 标签,而不是实验性的 nightly 标签。
应该为 Actual Budget 选择什么 VPS
个人实例不需要高性能服务器。tropic.host 的基础 Linux VPS 就可以运行 Actual Budget、Caddy,以及带 HTTPS 的子域名。建议从 1 GB 内存开始,只有在添加其他自托管服务时再增加资源。
不要将端口 5006 直接暴露到互联网,及时安装更新,并至少保留一份位于主 VPS 之外的备份。自托管服务是否安全,取决于所有者的配置方式。
Actual Budget 的限制
Actual Budget 需要自行维护。银行同步受国家和服务提供商限制,移动版本以 PWA 形式运行,而丢失加密密码可能导致无法访问预算。
该服务并不适合所有人,但它很好地解决了一项具体需求:在无需强制订阅的情况下,将信封预算、自动化和数据控制结合起来。
简要总结
Actual Budget 将支出记录转变为支出计划:每一笔收到的资金都会提前获得明确用途。应用在本地运行,通过自己的服务器同步,并支持导入、规则、报表和加密。
运行它只需要一台小型 VPS。安装完成后,最重要的是配置 HTTPS、妥善保存加密密码,并设置外部备份。
FAQ
Actual Budget 免费吗?
是的。该应用采用开源方式发布,不要求强制订阅。VPS、域名和备份存储需要单独付费。
必须把 Actual Budget 安装在 VPS 上吗?
不是。它可以只在一台电脑上本地使用。需要在多台设备之间同步、连接银行、使用 API 或保持长期网页访问时,才需要服务器。
Actual Budget 可以连接银行吗?
可以,前提是你的银行和所在地区受到某个可用提供商支持。否则,可以从 CSV、QIF、OFX、QFX 或 CAMT 文件导入交易。
将预算保存在自己的服务器上安全吗?
正确配置后是安全的,但安全责任由所有者承担。需要使用 HTTPS、长密码、加密、及时更新和外部备份。
Actual Budget 需要多少内存?
官方没有给出最低值。个人实例从 1 GB 内存起步较为实际;如果还要运行其他服务,最好准备 2 GB。
