Det här sätter du upp
Actual Budget är en budgetapp som körs i din webbläsare. Dess server håller din budget synkad mellan dina datorer och mobiler, så att du kan planera på en och följa upp på en annan.
Här körs servern som en container, under en egen användare som heter actual, med Caddy från Podman-guiden framför för HTTPS.
Varje steg nedan har körts på en VC-P Alloy (2 vCPU, 8 GB) hos Melonslab med Debian 13: vi valde serverlösenordet, kontrollerade inloggning och synkning av en budgetfil via serverns API, såg att misslyckade inloggningar begränsades per besökare och inte för alla, och kontrollerade säkerhetskopian och en omstart av servern. I vila använde Actual omkring 250 MB minne, så det minsta av våra Standard-paket räcker gott.
Innan du börjar
Du behöver:
- en server uppsatt som i Podman-guiden, med Caddy igång;
- ett namn för den, till exempel
budget.example.com, med en A-post och en AAAA-post som pekar på din server.
Exemplen använder budget.example.com som namn och 203.0.113.10 som din servers IPv4-adress. Byt genomgående ut dem mot dina egna.
1. Skapa användaren
Som root:
useradd -m -s /bin/bash actual
loginctl enable-linger actual
machinectl shell actual@
2. Definiera containern
mkdir -p ~/.config/containers/systemd
Skapa ~/.config/containers/systemd/actual.container:
[Unit]
Description=Actual Budget, a budgeting app server
[Container]
ContainerName=actual
Image=docker.io/actualbudget/actual-server:latest
Volume=actual-data:/data
# Only Caddy, on this server, can reach Actual: the port is not open to the internet.
PublishPort=127.0.0.1:8084:5006
Environment=ACTUAL_TRUSTED_PROXIES=203.0.113.10
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=default.target
Actual tillåter fem misslyckade inloggningar per 15 minuter från varje IP-adress. Den tar besökarens adress från det Caddy skickar vidare, men som standard bara från proxyer på privata adresser, och Caddys anslutningar når containern från serverns egen IPv4-adress. ACTUAL_TRUSTED_PROXIES anger den adressen. Utan den skulle alla besökare dela en adress, och några felaktiga lösenord från vem som helst skulle låsa ute alla.
Starta den:
systemctl --user daemon-reload
systemctl --user start actual
podman logs -f actual
När loggen visar Listening on :::5006... trycker du Ctrl+C.
3. Sätt Caddy framför
Gå tillbaka till root med exit och byt till Caddys användare med machinectl shell caddy@. Lägg till det här blocket sist i ~/Caddyfile:
budget.example.com {
reverse_proxy 127.0.0.1:8084
}
Och starta om Caddy, vilket kort avbryter alla webbplatser den serverar:
systemctl --user restart caddy
Caddy hämtar ett certifikat för budget.example.com och förnyar det själv. I webbläsaren fungerar Actual bara över HTTPS.
4. Välj ett serverlösenord
Öppna https://budget.example.com. Första gången ber Actual dig välja ett serverlösenord, som skyddar åtkomsten till dina budgetar. Skapa sedan en ny budget, eller importera en från en fil.
Öppna samma adress på dina andra enheter och logga in med det lösenordet; din budget synkas mellan dem. Actual kan också kryptera en budget på dina enheter innan den synkas, med ett eget lösenord, om du vill att servern bara ska lagra krypterade data.
5. Håll den uppdaterad
Slå på Podmans dagliga uppdateringar för den här användaren:
systemctl --user enable --now podman-auto-update.timer
6. Säkerhetskopiera
Som actual:
mkdir -p ~/backup
systemctl --user stop actual
podman volume export actual-data --output ~/backup/actual-data.tar
systemctl --user start actual
Att stoppa Actual de sekunder det tar ger en konsistent kopia. Arkivet innehåller serverns kontodatabas och varje budgetfil. Kopiera sedan ~/backup till en annan maskin: en säkerhetskopia på samma server överlever inte att servern går förlorad. Actual kan också exportera en budget från sina inställningar, som en fil du kan importera igen.
Felsökning
Inloggningen meddelar att det har gjorts för många försök. Fem felaktiga lösenord från din adress låser inloggningar från den i 15 minuter, även med rätt lösenord. Vänta och försök igen.
En persons felaktiga lösenord låser ute alla. ACTUAL_TRUSTED_PROXIES i steg 2 måste vara serverns IPv4-adress, den som Caddys anslutningar kommer från.
Appen startar inte i webbläsaren. Öppna den på https://budget.example.com: Actual behöver en säker anslutning för att köras.
Din budget i Sverige
Med Actual på en server hos Melonslab lagras din budget i Sverige, på en server du själv styr över, där svensk lag och EU-rätt gäller.