Actual Budget 是一套 MIT 授權、可自架的開源記帳軟體(GitHub 累計 29,203 stars,最新版本 v26.9.0),核心是「信封預算法」:把收入分進不同用途的虛擬信封,花完就沒了。它採 local-first 架構,資料同時存在你的裝置與你自己的伺服器,可開啟端到端加密讓伺服器也讀不到內容,費用 $0——相對於 YNAB 的每年 $109 美元訂閱,是 2026 年最值得認真評估的替代方案。
30 秒認識 Actual Budget:它跟一般記帳 App 差在哪?
多數記帳 App 的邏輯是「先花錢、後分類、月底看報表」——記帳變成事後審計。Actual Budget 走的是另一條路:
- 預算先行。 你先把「這一筆收入要拿去哪裡」分配完,帳上歸零才算分配完成,這就是零基預算(Zero-Sum Budgeting)。
- 每一塊錢都有一份工作。 沒被分配的錢會顯示在「To Budget」上,逼你面對它。
- 資料是你的。 伺服器只負責同步,資料以本機為主,離線照樣能記帳、照樣能開報表。
這套方法在國外行之有年,連 nYNAB(You Need A Budget)用的也是同一套信封哲學;差別在於 Actual Budget 是開源、免費、可以完全自架。
部署方式:四條路,先挑一條
| 方式 | 費用 | 適合誰 | 備註 |
|---|---|---|---|
| PikaPods 一鍵部署 | 約 $2/月 | 不想碰終端機的人 | 官方推薦給非技術使用者,會自動更新 |
| Fly.io 託管 | 約 $1.50/月 | 想要雲端但不想自己維運 | 可設定閒置自動停機以降低成本 |
| Docker 自架 | 你的 VPS 月租 | 想要完全掌控、已有 VPS | 本文重點,資料 100% 在自己手上 |
| 桌機版 App | $0 | 只在單機記帳 | Windows/macOS/Linux,有 Microsoft Store 版與 Flathub 版 |
⚠️ 官方手機 App 已經停止維護(deprecated)。手機端請直接用瀏覽器開啟自架站台,Actual 的網頁版是響應式設計,加入主畫面後操作體驗接近原生 App。
Docker 自架:兩行指令跑起來
Actual 同時發布到 Docker Hub 與 GitHub Container Registry,兩個來源功能相同:
- Docker Hub:
actualbudget/actual-server - GHCR:
ghcr.io/actualbudget/actual
標籤(tag)有四種,多數人用 latest 就好:
| Tag | 內容 | 建議 |
|---|---|---|
latest | 最新正式版 | ✅ 一般使用 |
latest-alpine | Alpine 基底,映像檔極小 | ✅ 低功耗裝置(Raspberry Pi) |
nightly | 每次 push 到 master 就更新 | ⚠️ 可能有 bug,務必先備份預算檔 |
nightly-alpine | nightly + Alpine | ⚠️ 同上 |
最快路徑:docker run
docker run --pull=always --restart=unless-stopped -d \
-p 5006:5006 \
-v /opt/actual-data:/data \
--name actual-budget \
actualbudget/actual-server:latest
這行指令的四個重點:
-p 5006:5006:Actual 預設連接埠是 5006(左邊是主機埠、右邊是容器埠)。-v /opt/actual-data:/data:這行最重要。容器內的/data是預算資料存放位置,沒掛 volume 的話,一升級容器資料就消失。--restart=unless-stopped:開機自動啟動。--pull=always:每次啟動都拉最新映像檔(若你想手動控版,就拿掉這個參數)。
啟動後開瀏覽器連 http://你的主機IP:5006,第一次進入會要你設定伺服器密碼。
正式環境:docker compose
services:
actual:
image: actualbudget/actual-server:latest
container_name: actual-budget
restart: unless-stopped
ports:
- "127.0.0.1:5006:5006"
volumes:
- ./actual-data:/data
environment:
- ACTUAL_DATA_DIR=/data
- ACTUAL_LOGIN_METHOD=password
注意這裡把埠綁在 127.0.0.1,代表只有本機可以連,對外一律走反向代理。這樣做可以避免預設密碼形式的登入介面直接暴露在公網。
升級方式:
docker compose pull && docker compose up -d
常用環境變數
Actual 的設定可以寫在 config.json,也可以用環境變數覆蓋(環境變數優先):
| 環境變數 | 用途 | 預設值 |
|---|---|---|
ACTUAL_DATA_DIR | 預算資料存放路徑 | /data(存在時) |
ACTUAL_CONFIG_PATH | 指定 config.json 位置 | /data/config.json |
ACTUAL_PORT | 服務監聽埠 | 5006 |
ACTUAL_HOSTNAME | 服務綁定的主機位址 | ::(等同全部介面) |
ACTUAL_LOGIN_METHOD | 登入方式:password(預設)/header/openid | password |
ACTUAL_ALLOWED_LOGIN_METHODS | 允許的登入方式清單(逗號分隔) | password,header,openid |
ACTUAL_TRUSTED_PROXIES | 信任的代理 IP 範圍(影響用戶端 IP 判定) | 內部網段 |
ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB | 同步檔大小上限 | 20 MB |
ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB | 加密同步檔上限 | 50 MB |
ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB | 一般上傳檔案上限 | 20 MB |
ACTUAL_HTTPS_KEY/ACTUAL_HTTPS_CERT | 直接由 Actual 提供 HTTPS | 未設定 |
ACTUAL_OPENID_CLIENT_SECRET_FILE | 從檔案讀取機密(Docker secrets 友善) | — |
倒數第二項值得特別說明:Actual 支援所有機密用 _FILE 後綴從檔案讀取,這在 Docker secrets 或 Kubernetes secret volume 的環境裡比把密碼塞進環境變數乾淨得多。另外 loginMethod 的三個值裡,header 是為了自動登入而設計的進階選項,設錯會有安全風險;openid 仍在預覽階段。若你的服務只走反向代理,建議用 ACTUAL_ALLOWED_LOGIN_METHODS=password 把其他方式關掉。
加上網域與 HTTPS
自架最安全的組合是:Actual 只聽本機 → 反向代理負責 TLS → 外部透過 Cloudflare Tunnel 或 VPN 進來。反向代理用 Caddy 只要三行:
budget.example.com {
reverse_proxy 127.0.0.1:5006
}
Caddy 會自動申請並續期 Let’s Encrypt 憑證。如果不想開任何防火牆連接埠,改用 Cloudflare Tunnel 把服務放上網是更省事的做法,詳細步驟可參考站內教學。
同步機制:local-first 到底是什麼意思
Actual 的同步設計跟雲端記事本相反:
- 本機優先。 你的裝置上有完整資料,沒網路也能記帳、看報表、跑規則。
- 背景同步。 有網路時,變更會同步到自己架的伺服器;換裝置登入同一個預算檔(sync ID),就會下載最新狀態。
- 端到端加密(E2E)。 可選開啟,開啟後需要第二組密碼,伺服器端讀不到你的預算內容,只負責轉送加密後的變更。這組密碼跟伺服器登入密碼應該要不一樣。
不過有一個關鍵例外必須講清楚:
🚨 銀行連線的 API token 不受端到端加密保護。 官方文件明確說明,SimpleFIN、GoCardless、Pluggy 等憑證存在伺服器端,擁有伺服器資料庫存取權的人可以讀到。這是自架最實質的理由。
另外,如果預算檔愈來愈大,可以用「Reset sync」把歷史變更壓縮成單一快照——檔案會明顯縮小,代價是所有裝置都要用新的 sync ID 重新同步。
台灣使用者最常問:銀行連線支援嗎?
答案是不支援。 Actual 的銀行連線服務供應商目前只有這幾家:
| 供應商 | 涵蓋地區 | 狀態 |
|---|---|---|
| SimpleFIN Bridge | 北美洲 | 可用 |
| GoCardless Bank Account Data | 歐洲 | 已不接受新用戶 |
| Enable Banking | 歐洲 | 可用 |
| Pluggy.ai | 巴西 | 可用 |
| Akahu | 紐西蘭 | 可用 |
台灣、日本、韓國、東南亞都不在名單內,而且需要你自己去供應商註冊、申請 API 金鑰,不是填個帳密就能用。再加上 Actual 不會自動同步,每次都要手動按 Bank Sync。
所以台灣使用者的實務流程是手動或半自動匯入:
- 登入網路銀行,下載交易明細。
- 格式優先選 OFX/QFX(含交易 ID,去重最準),其次 CSV;Actual 也支援 QIF 與 CAMT。
- 在 Actual 開啟對應帳戶 → 按 Import → 選擇檔案。
- 若是 CSV,要逐一對應欄位:日期格式、金額、收款人,並視情況開啟「Flip amount」或「Split amount into separate inflow/outflow columns」。
去重邏輯很聰明,值得理解:Actual 會先比對交易 ID,再退一步比對「相近日期 + 相同金額 + 類似收款人」。這代表你先手動記的帳,之後匯入時會被自動配對,而且匯入的資料優先(日期會以銀行端的為準,方便對帳)。
⚠️ 檔案匯入預設會勾選「Reimport deleted transactions」:你之前在 Actual 裡刪掉的匯入交易,重新匯入時會復活。用 API 匯入時,
reimportDeleted也預設為true,要跳過請明確傳false。
核心功能一:Rules 自動分類
Rules 是 Actual 最被低估的功能。它會在匯入或同步交易的當下自動處理交易,例如把 AMAZON.COM*5C7QC7MH0 AM 10/26 PURCHASE 這種鬼畫符收款人改名為「Amazon」、分類到「購物」。
最實用的設計是它會自己學:你把某個收款人分類到「餐飲」幾次,Actual 就會自動建立一條規則,之後匯入時自動套用。你用了一陣子之後,匯入完的帳幾乎不用再動。
運作規則有三個細節:
- 交易會依序跑過所有規則,每條規則只跑一次,最後合併所有符合的變更。
- 衝突時後跑的贏,規則會自動從「籠統」排到「具體」,所以
payee is "catan"一定排在payee contains "cat"之後。 - 需要「永遠最後執行」的規則,可以用 stages(階段) 強制排序。
核心功能二:Reports 儀表板與 FIRE 交叉點
內建報表包含:
- Cash Flow Graph:預算內帳戶的現金流變化,看收入與支出怎麼影響可用資金。
- Net Worth Graph:所有帳戶(含 off-budget 的投資、房貸)的淨值,有 Trend 與 Stacked 兩種模式。
- Spending Analysis:跨期間比較支出趨勢、找出超支與省下的項目。
- Summary Card/Calendar Card/Text Widget:期間總計、日曆視角、Markdown 文字區塊。
- Custom Reports:完全自訂的報表,可存成多個 dashboard。
- Crossover Point:這是最有意思的一個,以《Your Money or Your Life》方法論設計,輸入要延續的支出分類、投資帳戶、安全提領率(預設 4%,源自 1998 年 Trinity Study),就能算出「被動收入何時超過支出」——也就是財務獨立的交叉點。支出預測可選 Hampel 濾波中位數(會排除極端月份)或單純中位數/平均數。
實驗性功能還有 Budget Analysis、Balance Forecast、Sankey 圖與 Monte Carlo 分析,可以在設定裡開啟。
核心功能三:程式化操作與自動化
Actual 沒有 REST API——官方特別提醒這點容易誤會。它提供的是 Node.js 套件 @actual-app/api,實際上是把整個預算引擎跑在你的程式裡、操作本機副本:
const api = require('@actual-app/api');
(async () => {
await api.init({
dataDir: './actual-cache',
serverURL: 'http://localhost:5006',
password: '你的伺服器密碼',
});
// sync ID 在 Settings → Show advanced settings 裡
await api.downloadBudget('1cfdbb80-6274-49bf-b0c2-737235a4c81f');
await api.importTransactions(accountId, transactions);
await api.shutdown();
})();
主要用途是自訂匯入器與匯出器:從銀行 API 撈資料寫進 Actual、把資料倒去 Excel、或寫自己的報表。若牽涉完整資料(帳戶、預算、收款人全搬),要用 runImport();單純加交易則用 importTransactions()(addTransactions() 不會跑去重與建立轉帳對應,用途不同)。
常見錯誤碼:network-failure(連不上伺服器)、invalid-password、budget-not-found(sync ID 不對)、out-of-sync-migrations(預算檔太舊)。另外 @actual-app/api 也有實驗性的瀏覽器版本,但需要頁面具備 Cross-Origin-Opener-Policy: same-origin 與 Cross-Origin-Embedder-Policy: require-corp 才能用。
從 YNAB 或舊版 Actual 搬家
- YNAB4 與 nYNAB 都有官方支援的匯入器,官方說「運作得非常好」。
- 舊的 Actual Budget 桌面版(訂閱制時代) 沒有匯出按鈕,但可以直接把預算資料夾壓成 zip 匯入網頁版。官方託管服務已於 2024 年關閉,剩下的資料就是靠這條路救回來。
跟付費記帳 App 的完整比較
| 項目 | Actual Budget | YNAB | Goodbudget Premium | EveryDollar Premium |
|---|---|---|---|---|
| 價格 | $0(MIT 開源) | $14.99/月 或 $109/年 | $10/月 或 $80/年 | $17.99/月 或 $79.99/年 |
| 免費版 | ✅ 完整功能 | ❌ 無,34 天試用 | 有限制 | 有限制 |
| 可自架 | ✅ Docker/桌機版 | ❌ | ❌ | ❌ |
| 離線可用 | ✅ local-first | ⚠️ 依賴雲端 | ⚠️ | ⚠️ |
| 端到端加密 | ✅ 可選 | ❌ | ❌ | ❌ |
| 銀行自動同步 | ⚠️ 需自備供應商金鑰,亞洲未支援 | ✅(美國為主) | ⚠️ | ✅(美國) |
| 多裝置同步 | ✅ 自架伺服器 | ✅ | ✅ | ✅ |
| 預算方法 | 信封/零基 | 信封/零基 | 信封 | 零基 |
| 報表深度 | 高(含 FIRE 交叉點、Custom Reports) | 高 | 中 | 中 |
| 中文介面 | ⚠️ 繁體中文翻譯完成度約 60% | ✅ | ❌ | ❌ |
| 資料主權 | 完全在自己手上 | 廠商雲端 | 廠商雲端 | 廠商雲端 |
註:YNAB、Goodbudget、EveryDollar 的價格為 2026 年第三方整理之官方定價(YNAB 另有一次付費最多 6 人共用、學生 365 天免費)。付費前請以各家官方頁面為準。台灣本地記帳 App 多為免費下載加訂閱解鎖,但資料都存放在廠商伺服器。
台灣使用者的 10 個必知陷阱
| 陷阱 | 解法 |
|---|---|
| 手機 App 已停止維護,App Store 找不到 | 用瀏覽器開自架站台,加入主畫面當 PWA 用 |
| 銀行同步不支援台灣 | 用 OFX/QFX 下載再手動匯入,用 Rules 自動分類補償手動成本 |
| 銀行 token 不受 E2E 保護 | 若在意,不要啟用 bank sync,或確保伺服器只有自己能用 |
| 容器沒掛 volume,升級後資料全失 | -v /path:/data 一定要寫,並定期備份該目錄 |
| 5006 埠直接暴露公網 | 綁 127.0.0.1 + 反向代理 + HTTPS,或走 Cloudflare Tunnel |
| 刪掉的匯入交易又跑回來 | 匯入時取消勾選「Reimport deleted transactions」 |
| 預算檔愈來愈肥 | 用 Reset sync 壓縮(記得所有裝置要用新 sync ID) |
| 以為版本號是日期 | 版本採 YY.M.patch,例如 v26.9.0 = 2026 年 9 月 |
| 期待全中文介面 | 繁中翻譯完成度約 60%,部分字串仍是英文 |
| 兩人同時編輯同一預算檔 | 官方建議避免同時使用;有衝突風險 |
誰適合、誰不適合
適合:在意資料主權、不想再付訂閱費、已經有 VPS 或 NAS、願意用信封法真的改變消費習慣、需要 FIRE 或淨值長期追蹤的人。
不適合:希望「打開 App 就自動抓銀行帳、完全零手動」的人(在台灣尤其不成立)、不想維護任何伺服器的人(那就選 PikaPods 或直接留在訂閱制 App)。
站內延伸閱讀
- Docker 完整教學 2026:什麼是容器?從安裝、Dockerfile、Compose 多階段構建到安全部署一次學會
- Cloudflare Tunnel 完整教學 2026:不開防火牆 port 也能把自架服務搬上網
- Vaultwarden 完整教學 2026:自架 Bitwarden 相容密碼管理器,記憶體只要 10MB
- Uptime Kuma 完整教學 2026:91K 星自架監控神器,Docker 安裝與 Telegram 通知一次學會
- Coolify 完整教學 2026:62K 星開源自架版 Vercel/Heroku,Docker 一鍵安裝
原始來源與官方文件
- Actual Budget 官方網站與文件:https://actualbudget.org/docs
- Docker 安裝文件:https://actualbudget.org/docs/install/docker
- 伺服器設定(環境變數):https://actualbudget.org/docs/config/
- 銀行連線說明:https://actualbudget.org/docs/advanced/bank-sync
- 交易匯入:https://actualbudget.org/docs/transactions/importing/
- Rules 規則引擎:https://actualbudget.org/docs/budgeting/rules/
- Reports 儀表板:https://actualbudget.org/docs/reports/
- API 使用說明:https://actualbudget.org/docs/api/
- GitHub 專案(29,203 stars、MIT、v26.9.0):https://github.com/actualbudget/actual
- 繁體中文翻譯進度:Weblate 專案 actualbudget/actual(zh_Hant 約 60%)
