How to Self-Host Actual Budget on a VPS (Docker + Caddy, HTTPS)
Run your own Actual Budget server on a small VPS with Docker and Caddy. Your finances stay on a machine you control, behind HTTPS.
Why run Actual Budget on your own VPS
Actual Budget is a local-first personal finance app, and the small server behind it syncs your budget between devices. You can have it running on a VPS in about ten minutes with Docker and Caddy. After that your budget lives on a server you control, not in someone else's subscription.
The app needs very little. One vCPU and 1 GB of RAM is enough for a household budget. You also need a domain name pointed at the server, because Actual only works over HTTPS. Domains are bought separately from hosting.
How to do it on Neckrez
- Sign up - use an email (or Google/GitHub). No KYC, no ID, no phone, no card.
- Top up the balance in crypto - from $15. USDT on BEP20, TON, Polygon or Solana costs cents in fees; TRC20 costs a few dollars extra.
- Pick plan, location and OS - the Quark plan (1 vCPU, 1 GB, $10/mo) with Ubuntu is plenty. Choose the location closest to you.
- Server ready in about a minute - you get full root and a dedicated IPv4.
- Billed hourly - destroy the server anytime and billing stops.
Point an A record for budget.example.com at the server's IPv4, then log in over SSH and install Docker.
mkdir -p ~/actual && cd ~/actual
curl -fsSL https://get.docker.com | shCreate a compose file that runs Actual and Caddy together. Caddy gets the HTTPS certificate on its own.
services:
actual:
image: actualbudget/actual-server:latest
restart: unless-stopped
volumes:
- ./data:/data
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes:
caddy_data:Put your own domain in the Caddyfile next to it.
budget.example.com {
reverse_proxy actual:5006
}Start both containers and check that they are up. Then open your domain in a browser and set a server password.
docker compose up -d
docker compose psBack up the budget before you trust it
Everything lives in the data folder. Copy it off the server now and then. On Vultr, DigitalOcean and Hetzner servers you can also take an on-demand snapshot, kept 7 days.
cd ~/actual
tar czf ~/actual-backup-$(date +%F).tgz dataOne honest caveat: Neckrez has no uptime SLA and no downtime credits. For a personal budget that is fine, but keep a recent backup off the server.
Which Neckrez server fits
A plain VPS is the right line here: a small shared cloud server is more than enough for Actual Budget. Dedicated CPU, with cores reserved for you, only makes sense if the same machine later carries steady heavy load such as databases or CI builds. Rule of thumb: start on the smallest VPS and resize only when you have a reason.
Paying in crypto fits a self-hosted setup well. One top-up covers months of a small server at hourly billing. Top-ups are final, so add only what you plan to use. See buy a VPS with USDT for the payment details.
FAQ
Do I need a domain? Yes. Actual needs HTTPS to work in the browser, and Caddy can only issue a certificate for a real domain name that points to your server.
Can I stop the server to save money? No. A server is billed while it exists, even when stopped. Back up your data folder, then destroy it to stop billing.
Get started
Plans from $10/month, billed hourly. Deploy your server in about a minute. Neckrez rents VPS, Dedicated CPU and bare metal servers, and GPU servers when the provider has capacity, all on one crypto balance billed by the hour.