How to Self-Host Actual Budget with Docker

What Is Actual Budget?

Actual Budget is a self-hosted personal finance and budgeting app. It uses envelope budgeting (like YNAB) — assign every dollar a job, track spending by category, and see where your money goes. Actual is fast, works offline, supports bank syncing (via GoCardless/SimpleFIN), and runs as a local-first web app that syncs between devices through your own server. It’s the best self-hosted alternative to YNAB and Mint.

Updated March 2026: Verified with latest Docker images and configurations.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 256 MB of free RAM
  • 500 MB of free disk space
  • A domain name (recommended for multi-device sync)

Docker Compose Configuration

Create a docker-compose.yml file:

services:
  actual:
    image: actualbudget/actual-server:26.3.0
    container_name: actual
    restart: unless-stopped
    ports:
      - "5006:5006"
    volumes:
      - actual_data:/data
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:5006/"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  actual_data:

Start the stack:

docker compose up -d

Initial Setup

  1. Open http://your-server-ip:5006 in your browser
  2. Set a server password — this protects access to your financial data
  3. Create your first budget file
  4. Start adding accounts and budget categories

Actual is a local-first app — the server syncs data between your devices, but the app works entirely offline. All budget operations happen in the browser.

Configuration

Bank Syncing

Actual supports automatic bank transaction imports:

  • GoCardless (Europe): Free via open banking APIs for European banks
  • SimpleFIN ($1.50/month): US bank connection service

Configure under Settings → Linked Accounts in the Actual web app.

Multi-Device Sync

The server handles sync between devices:

  1. Open Actual on a second device
  2. Enter the same server URL and password
  3. Download your budget file
  4. Changes sync automatically

Budget Categories

Set up envelope-style budgeting:

  1. Create categories (Rent, Groceries, Entertainment, etc.)
  2. Assign available income to categories each month
  3. Track spending against budget — overspending in one category takes from another

Transaction Import

Import from banks via:

  • OFX/QFX files: Download from your bank’s website
  • CSV import: Map columns to Actual’s fields
  • Bank sync: Automatic via GoCardless or SimpleFIN

Reverse Proxy

Nginx Proxy Manager config:

  • Scheme: http
  • Forward Hostname: actual
  • Forward Port: 5006
  • Enable WebSocket Support: Yes (for sync)

HTTPS is strongly recommended since financial data is being transmitted.

See Reverse Proxy Setup for full configuration.

Backup

Actual stores everything in the /data volume:

docker run --rm -v actual_data:/data -v $(pwd):/backup alpine \
  tar czf /backup/actual-backup-$(date +%Y%m%d).tar.gz /data

You can also export budget files from within the Actual web app.

See Backup Strategy for a complete backup approach.

Troubleshooting

Sync Not Working Between Devices

Symptom: Changes on one device don’t appear on another. Fix: Ensure both devices connect to the same server URL and use the same budget file. Check WebSocket connectivity — sync relies on WebSockets. If behind a reverse proxy, ensure WebSocket support is enabled.

Bank Sync Errors

Symptom: GoCardless or SimpleFIN connection fails or returns errors. Fix: Re-authenticate the bank connection. Bank APIs occasionally require re-authorization. Check Actual’s sync logs in the web app under the linked account settings.

Budget File Won’t Open

Symptom: Server starts but budget file fails to load. Fix: Check the /data volume for corruption. Actual keeps backups — look for .backup files in the data directory. Restore from the most recent backup.

Resource Requirements

  • RAM: ~50-100 MB
  • CPU: Negligible — all heavy work happens client-side in the browser
  • Disk: ~50 MB for the application, budget files are small (kilobytes to low megabytes)

Verdict

Actual Budget is the best self-hosted budgeting app. The envelope budgeting approach works, the UI is fast and clean, and the local-first architecture means it works even when your server is down. Bank syncing via GoCardless (Europe) or SimpleFIN (US, $1.50/month) automates transaction imports. If you need more traditional accounting (double-entry, invoicing, tax tracking), look at Firefly III. But for personal budgeting, Actual is the clear winner.

Frequently Asked Questions

Is Actual Budget free?

Yes. Actual Budget is fully open-source under the MIT license. The self-hosted server is free. Bank syncing via GoCardless (European banks) is free through open banking APIs. SimpleFIN (US banks) costs $1.50/month, paid directly to SimpleFIN — not to Actual.

How is Actual different from YNAB?

Both use envelope budgeting (assign every dollar a job). Actual is self-hosted, free, and stores your data on your own server. YNAB costs $14.99/month and stores your data on their servers. Actual’s UI is faster (local-first architecture) and works offline. YNAB has better bank syncing coverage in the US, a more polished mobile app, and educational content. For privacy-conscious users or those who want to avoid the subscription, Actual is the clear alternative.

Does Actual work offline?

Yes. Actual is a local-first application — all budget operations happen in the browser, not on the server. The server only handles sync between devices. If your server goes down, you can continue using Actual on any device that already has the budget file loaded. Changes sync automatically when the server comes back online.

Can I access Actual from my phone?

Yes. Actual’s web interface is responsive and works on mobile browsers. There is no native iOS or Android app, but the web app is fully functional on mobile. Add it to your home screen for an app-like experience. For remote access, put Actual behind a reverse proxy with HTTPS.

How do I import transactions from my bank?

Three methods: Bank sync (automatic imports via GoCardless for European banks or SimpleFIN for US banks, configured under Settings → Linked Accounts), OFX/QFX file import (download from your bank’s website and import into Actual), or CSV import (map columns to Actual’s fields). Bank sync is the most convenient but has the narrowest bank coverage.

How do I migrate from YNAB to Actual?

Actual supports direct YNAB import. Export your budget from YNAB (Settings → Export Budget), then import the file into Actual. Categories, accounts, transactions, and balances carry over. Some YNAB-specific features like goal tracking may not have direct equivalents.

Comments