Actual Budget 完整教學 2026:29K 星開源記帳軟體取代 YNAB,Docker 自架、信封預算法、端到端加密與台灣銀行匯入實戰

Actual Budget 是 GitHub 上 29,000+ stars、MIT 授權的開源記帳軟體,採用「信封預算法」與零基預算,資料以 local-first 架構同時存在你的裝置與自架伺服器,可選端到端加密讓伺服器也讀不到。本文從四種安裝方式(PikaPods、Fly.io、Docker 自架、桌機版)、docker compose 與環境變數、反向代理與 HTTPS、多裝置同步原理、銀行連線與 CSV/OFX 手動匯入步驟、Rules 自動分類、Reports 儀表板與 FIRE 交叉點計算,一路到與 YNAB 等付費 App 的完整比較表與 10 個台灣使用者必知陷阱,全部用可直接複製的指令說明。

  • Dennis
  • 11 分鐘閱讀
Actual Budget 完整教學 2026:29K 星開源記帳軟體取代 YNAB,Docker 自架、信封預算法、端到端加密與台灣銀行匯入實戰

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-alpineAlpine 基底,映像檔極小✅ 低功耗裝置(Raspberry Pi)
nightly每次 push 到 master 就更新⚠️ 可能有 bug,務必先備份預算檔
nightly-alpinenightly + 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/openidpassword
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 的同步設計跟雲端記事本相反:

  1. 本機優先。 你的裝置上有完整資料,沒網路也能記帳、看報表、跑規則。
  2. 背景同步。 有網路時,變更會同步到自己架的伺服器;換裝置登入同一個預算檔(sync ID),就會下載最新狀態。
  3. 端到端加密(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。

所以台灣使用者的實務流程是手動或半自動匯入:

  1. 登入網路銀行,下載交易明細。
  2. 格式優先選 OFX/QFX(含交易 ID,去重最準),其次 CSV;Actual 也支援 QIF 與 CAMT。
  3. 在 Actual 開啟對應帳戶 → 按 Import → 選擇檔案。
  4. 若是 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 BudgetYNABGoodbudget PremiumEveryDollar 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)。

站內延伸閱讀

原始來源與官方文件

  • 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%)

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友