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
- Open
http://your-server-ip:5006in your browser - Set a server password — this protects access to your financial data
- Create your first budget file
- 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:
- Open Actual on a second device
- Enter the same server URL and password
- Download your budget file
- Changes sync automatically
Budget Categories
Set up envelope-style budgeting:
- Create categories (Rent, Groceries, Entertainment, etc.)
- Assign available income to categories each month
- 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.
Related
- Actual Budget vs Firefly III: Budget Apps Compared
- Actual Budget vs Maybe: Self-Hosted Finance Apps
- Actual Budget vs YNAB: Self-Hosted Budget Alternative
- Ghostfolio vs Actual Budget: Which Should You Self-Host?
- Best Self-Hosted Personal Finance Apps
- Actual Budget vs Firefly III
- Replace YNAB with Self-Hosted Budget
- Replace Mint with Self-Hosted Finance
- Docker Compose Basics
- Reverse Proxy Setup
- Backup Strategy
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments