Your server. Your rules.
Clone the repo, run one command, done. Docker, Postgres, one config file. Nothing phones home. Nothing licenses per-seat. If the company disappears tomorrow, your instance keeps running.
View docker-compose$ git clone https://github.com/betterbudget/betterbudget.git Cloning into 'betterbudget'... Receiving objects: 100% (14,203/14,203), 18.4 MiB · done. $ cd betterbudget && cp .env.example .env $ docker compose up -d [+] Running 4/4 ✔ Container betterbudget-db Started ✔ Container betterbudget-redis Started ✔ Container betterbudget-api Started ✔ Container betterbudget-web Started ➜ Ready on https://localhost:3000 in 4.2s $ _
Four boring containers.
Boring on purpose. Postgres for data, Redis for queues, one Node API, one web UI. Every piece has a 10+ year track record. Every piece you can replace.
Nothing phones home.
Outbound calls are documented, optional, and go only to services you configure. No analytics pings, no error beacons, no licence checks.
| Destination | Purpose | Required? | Credentials |
|---|---|---|---|
| gocardless.com | Bank sync (EU) | Optional | Your OAuth key |
| coingecko.com | Crypto prices | Optional | None / free tier |
| api.anthropic.com | AI assistant | Optional | Your API key |
| (your SMTP) | Magic-link email | Optional | Your SMTP creds |
| (nothing else) | — | — | — |
As permissive as it gets.
MIT. Fork it, run it in your company, sell a hosted version — we don't care. Keep the copyright line. That's the deal.
"Permission is hereby granted, free of charge, to any person obtaining a copy of this software, to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies…"
Six nots.
The list of things we refuse to do. Easy to write. Harder to keep. We've kept them since 2023.