Actual Budget 自托管搭建指南:开源个人预算与财务追踪系统

Actual Budget 自托管搭建指南:开源个人预算与财务追踪系统

记账软件很多,但真正好用的并不多。商业软件要么需要订阅费用,要么会把你的财务数据同步到厂商服务器,要么广告满天飞。对于想要严肃管理个人财务的人来说,自托管一个开源记账系统是个更可控的选择。

Actual Budget 是一个基于"信封记账法"(Envelope Budgeting)的开源个人财务管理系统。信封记账法的核心思想是:把收入分配到不同的"信封"(预算类别)里,而不是用完再看余额------吃饭信封、娱乐信封、房租信封各自有额度,超支了就要从其他信封挪钱,这种方式能让你对钱的流向更有感知。Actual Budget 有 Web 界面,数据存在本地浏览器(IndexedDB),服务器只作为同步中继,即使服务器临时不可用,客户端也能正常使用。

本文介绍如何用 Docker Compose + Caddy 搭建 Actual Budget 自托管服务。

服务器配置

Actual Budget 服务端只负责文件同步,资源消耗极低,入门级机器即可运行。

项目 规格
CPU 1 核
内存 1GB
硬盘 10GB
系统 Ubuntu 22.04 / Debian 12

推荐使用雨云服务器 rainyun-com 的 1 核 1GB 机型来部署 Actual Budget,完全够用,价格实惠。注册填优惠码 2026off 领 5 折优惠券,新用户首单直接半价。

准备工作

确保服务器已安装 Docker 和 Docker Compose:

bash 复制代码
# 安装 Docker
curl -fsSL https://get.docker.com | sh

# 验证安装
docker --version
docker compose version

准备一个域名,例如 budget.example.com,将 DNS A 记录指向服务器 IP。

安装 Caddy:

bash 复制代码
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy -y

docker-compose.yml

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

bash 复制代码
mkdir -p /opt/actual
cd /opt/actual

创建 docker-compose.yml:

yaml 复制代码
version: "3.8"

services:
  actual:
    image: actualbudget/actual-server:latest
    container_name: actual
    ports:
      - "127.0.0.1:5006:5006"
    volumes:
      - ./data:/data
    environment:
      - ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20
      - ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50
      - ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20
    restart: unless-stopped

启动服务:

bash 复制代码
docker compose up -d

验证容器运行状态:

bash 复制代码
docker compose ps
docker compose logs actual

配置说明

Caddy 反向代理

编辑 /etc/caddy/Caddyfile:

复制代码
budget.example.com {
    reverse_proxy localhost:5006
}

重载 Caddy:

bash 复制代码
sudo systemctl 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 中(哈希值),需要手动重置:

bash 复制代码
# 停止容器
docker compose stop actual

# 进入数据目录,删除或修改密码配置
cat /opt/actual/data/config.json
# 将 "loginMethod" 和 "password" 字段清空后重新设置

# 重启容器
docker compose start actual

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

Actual 使用 CRDT(无冲突复制数据类型)做数据同步,每个客户端本地都有完整的数据副本,服务器只是同步中继。即使服务器宕机,本地数据依然完整。建议定期将浏览器本地数据导出备份。

Q:如何迁移数据到新服务器?

bash 复制代码
# 备份数据卷
tar czf actual-backup-$(date +%Y%m%d).tar.gz /opt/actual/data

# 在新服务器解压恢复
tar xzf actual-backup-*.tar.gz -C /opt/actual/
docker compose up -d

Q:支持多用户吗?

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

Q:移动端体验如何?

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

相关推荐
网络豆9 小时前
开源鸿蒙平台 CMP 三方库「navigation-compose-extended」适配全流程
华为·开源·harmonyos
2601_9494800611 小时前
开源鸿蒙平台 CMP 三方库「multiplatform-markdown-renderer」适配全流程
华为·开源·harmonyos
alsmile11 小时前
AI友好的可视化图形引擎自我革命:Meta2d.js 2.0 历时一年全新重写,性能与多人协作全面升级
前端·开源·数据可视化
miofly12 小时前
GitHub 今日推荐|rea:用 MCP 把反编译器和 AI agent 接到一起的逆向工具
typescript·开源·github
一个简单的TTS开发者12 小时前
#有声小说多角色对话 TTS 配置与选型指南
人工智能·开源·indextts
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(113):Agentic Memory Management——从“检索相关信息”走向“管理 Agent 内部记忆”
论文阅读·人工智能·学习·开源·github
东哥168815 小时前
我用 DeepSeek 做了 4 个零依赖的赚钱小工具,全部开源
python·开源·deepseek
网络豆15 小时前
开源鸿蒙平台 CMP 三方库「tanstack-table-kmp」适配全流程
华为·开源·harmonyos
沐曦股份MetaX15 小时前
沐曦股份亮相CCF第三届算力活动:重磅发布Token算力普惠计划,赋能科研新时代
人工智能·科技·ai·开源·gpu算力