Skip to main content

How to Self-Host Actual Budget: Personal Finance 2026

·OSSAlt Team
actual-budgetpersonal-financebudgetingself-hostingdockerynab2026

TL;DR

Actual Budget (MIT, ~15K GitHub stars, JavaScript) is a zero-based budgeting app — the same methodology as YNAB (You Need a Budget) but self-hosted and free. YNAB charges $14.99/month ($179.88/year). Actual Budget runs on your server, syncs across your devices, and supports bank import via OFX/CSV files or Simplifi/GoCardless integrations. Your financial data stays entirely on your hardware.

Key Takeaways

  • Actual Budget: MIT, ~15K stars — zero-based budgeting, reports, reconciliation
  • Local-first sync: Changes sync between your devices without sending data to any cloud
  • Import transactions: OFX/CSV import from any bank's export feature
  • Reports: Spending breakdown, net worth, budget vs actual comparisons
  • Rules engine: Auto-categorize transactions based on payee patterns
  • vs YNAB: Same methodology, free, self-hosted — no $15/month subscription

Zero-Based Budgeting Basics

Actual Budget follows zero-based budgeting:

  1. Every dollar has a job — assign all income to categories before spending
  2. Give every dollar a budget — groceries, rent, car, entertainment, savings
  3. Track actual spending — import transactions, match to categories
  4. Budget the future — not last month's income, but this month's actual available money
Income this month: $5,000

Budget:
├── Housing: $1,500
├── Groceries: $500
├── Transportation: $300
├── Utilities: $150
├── Entertainment: $200
├── Eating out: $200
├── Savings: $1,500
├── Emergency fund: $300
└── Buffer/miscellaneous: $350
    ─────────────────────
Total budgeted: $5,000 ← Every dollar assigned

Part 1: Docker Setup

# docker-compose.yml
services:
  actual:
    image: actualbudget/actual-server:latest
    container_name: actual-budget
    restart: unless-stopped
    ports:
      - "5006:5006"
    volumes:
      - actual_data:/data
    environment:
      ACTUAL_HTTPS_KEY: ""   # Leave empty to use Caddy for TLS
      ACTUAL_HTTPS_CERT: ""
      NODE_ENV: production

volumes:
  actual_data:
docker compose up -d

Visit http://your-server:5006


Part 2: HTTPS with Caddy

budget.yourdomain.com {
    reverse_proxy localhost:5006
}

Part 3: First Setup

Create your budget

  1. Visit https://budget.yourdomain.com
  2. Create new file → name your budget (e.g., "Personal 2026")
  3. Set password (optional but recommended)

Add accounts

  1. + Add account
  2. Name: Checking, Savings, Credit Card, Investment
  3. Account type: Checking / Savings / Credit card / Asset / Liability
  4. Starting balance: your current balance

Add budget categories

Default categories to create:

Income
├── Paycheck
└── Freelance income

Housing
├── Rent/Mortgage
└── Utilities

Food
├── Groceries
└── Eating out

Transportation
├── Car payment
├── Gas
└── Public transit

Personal
├── Entertainment
├── Clothing
└── Health/Medical

Savings
├── Emergency fund
├── Retirement
└── Vacation fund

Part 4: Import Bank Transactions

OFX/QFX/CSV import

  1. Log into your bank → Export transactions → OFX or CSV
  2. In Actual: Account → Import transactions
  3. Select your exported file
  4. Actual auto-maps columns for CSV:
    • Date, Payee, Amount (negative = expense)

Auto-import with SimpleFIN Bridge (US banks)

# SimpleFIN Bridge provides bank connectivity for ~$1.50/month:
# 1. Get access token from simplefin.org
# 2. In Actual: Settings → Show advanced settings → Enable SimpleFIN sync
# 3. Add SimpleFIN token
# 4. Link your bank accounts

GoCardless (European banks)

# Add environment variables:
environment:
  ACTUAL_NORDIGEN_SECRET_ID: "your-gocardless-secret-id"
  ACTUAL_NORDIGEN_SECRET_KEY: "your-gocardless-secret-key"

Part 5: Budget Workflow

Monthly budgeting

  1. Budget tab → shows current month
  2. Available to budget → your unassigned income
  3. For each category: type in how much you're budgeting
  4. Goal: Available to budget = $0 (every dollar assigned)

Rollover (carryover)

Categories can roll over unspent money:

  • Grocery budget: $500, spent $430 → $70 rolls to next month
  • Helps smooth irregular expenses

When you overspend a category

Entertainment budget: $200
Spent: $250
Overspent by: $50

Options:
1. Move $50 from another category (e.g., Buffer)
2. Let it reduce next month's available money

Part 6: Transaction Rules

Auto-categorize transactions based on patterns:

  1. More → Rules → + Create rule
  2. Condition: Payee contains "TRADER JOE"
  3. Action: Set category to Groceries
  4. Apply to: New transactions
Rule examples:
- "NETFLIX" → Entertainment
- "SHELL" or "CHEVRON" → Transportation/Gas
- "AMAZON" → Shopping (or split rule)
- "CVS" or "WALGREENS" → Health
- Payee starts with "EMPLOYER NAME" → Income/Paycheck

Part 7: Reports

Spending breakdown

Reports → Spending → Shows:

  • Spending by category (pie chart)
  • Spending by month (bar chart)
  • Year-to-date totals

Net worth

Reports → Net Worth → Tracks your assets minus liabilities over time:

Assets: Checking + Savings + Investments
Liabilities: Credit cards + Loans
Net worth = Assets - Liabilities

Budget vs actual

Reports → Budget → Compare what you budgeted vs what you actually spent per category.


Part 8: Multi-Device Sync

Actual syncs between your devices using end-to-end encrypted sync:

Desktop app

# Download Actual desktop app:
# actualbudget.org → Downloads
# Windows/Mac/Linux desktop apps available

# Connect to your server:
# File → Connect to server → https://budget.yourdomain.com

Mobile (PWA)

  1. Open https://budget.yourdomain.com on your phone
  2. Add to Home Screen (iOS: Share → Add to Home Screen)
  3. Works as a PWA — near-native experience

Maintenance

# Update:
docker compose pull
docker compose up -d

# Backup:
tar -czf actual-backup-$(date +%Y%m%d).tar.gz \
  $(docker volume inspect actual-budget_actual_data --format '{{.Mountpoint}}')

# The backup includes your budget database file (.db)
# Keep multiple backups — financial data is critical

# Logs:
docker compose logs -f actual

See also: Firefly III — double-entry bookkeeping alternative

See all open source finance tools at OSSAlt.com/categories/finance.

Comments