Tropic Host

在 VPS 上安装和配置 Actual Budget 个人预算管理器

阅读约需 9 分钟
Tropic
在 VPS 上安装和配置 Actual Budget 个人预算管理器

Actual Budget:部署在 VPS 上的个人预算管理器

银行应用会告诉你钱已经花到了哪里。Actual Budget 回答的是另一个问题:当一部分资金已经预留给房租、食品、旅行和意外支出时,账户中真正可以自由支配的金额还有多少?

Actual Budget 是一款免费、开源的个人财务管理器。它在本地运行,通过自己的服务器同步,并支持端到端加密。下面将介绍它的功能、限制以及在 VPS 上的安装方法。

七步部署 Actual Budget

  1. 创建一台 Linux VPS,并将子域名指向它,例如 budget.example.com
  2. 安装 Docker 和 Docker Compose。
  3. 使用持久化数据目录启动官方容器。
  4. 通过 Caddy 配置 HTTPS。
  5. 设置服务器密码并创建预算。
  6. 添加账户、分类、规则和定期付款。
  7. 启用加密并配置外部备份。

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 enable

2. 安装 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-plugin

3. 启动 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,并且端口 80443 可以访问时,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。