Zum Inhalt

Actual Budget mit Docker installieren

Veröffentlicht am 7. August 2026 · Geschätzte Lesezeit: 3 Minuten

Actual Budget ist eine selbst gehostete Haushaltsbuch- und Budget-Anwendung. Der Server synchronisiert deine verschlüsselten Budgetdateien zwischen Browsern und Apps; Caddy sorgt dabei für HTTPS. Die Einrichtung dauert ungefähr 20 Minuten.

Voraussetzungen

  • Ein Linux-Server mit Docker und Docker Compose
  • Eine Domain oder Subdomain, die auf die öffentliche IP des Servers zeigt
  • Die TCP-Ports 80 und 443 sind im Router auf den Server weitergeleitet
  • SSH-Zugriff und ein Benutzer mit sudo-Rechten

1. Arbeitsordner anlegen

Führe die Befehle auf deinem Docker-Server aus:

sudo mkdir -p /opt/actual-budget
sudo chown -R "$USER":"$USER" /opt/actual-budget
cd /opt/actual-budget

In diesem Ordner bleiben später auch die Serverdaten erhalten.

2. Compose-Datei erstellen

Lege in /opt/actual-budget eine Datei namens compose.yaml an. Die latest-Markierung steht laut Projektdokumentation für die aktuelle stabile Veröffentlichung.

services:
  actual:
    image: actualbudget/actual-server:latest
    container_name: actual-budget
    restart: unless-stopped
    volumes:
      - ./data:/data
    networks:
      - actual-net

  caddy:
    image: caddy:2
    container_name: actual-caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config
    networks:
      - actual-net

networks:
  actual-net:

Der Ordner ./data wird im Container als /data eingebunden. Ein neu erstellter Container verliert dein Budget dadurch nicht.

3. HTTPS konfigurieren

Erstelle im selben Ordner die Datei Caddyfile. Ersetze <budget-domain> durch deine Subdomain, zum Beispiel budget.example.de.

<budget-domain> {
    reverse_proxy actual:5006
}

Caddy beschafft und erneuert das Zertifikat automatisch. Actual benötigt HTTPS, damit außerhalb von localhost alle Funktionen sicher arbeiten.

Vorhandener Reverse Proxy

Wenn bereits Caddy, Nginx Proxy Manager oder Traefik die Ports 80 und 443 verwendet, starte keinen zweiten Caddy-Container. Verbinde Actual stattdessen mit dem bestehenden Proxy und leite dort auf Port 5006 des Containers weiter.

4. Actual starten

Starte den Stack im Ordner /opt/actual-budget:

docker compose up -d

Kontrolliere, ob beide Container laufen:

docker compose ps

Öffne danach https://<budget-domain> im Browser. Ersetze <budget-domain> durch die zuvor verwendete Subdomain.

5. Server absichern und Budget anlegen

Wähle auf der Startseite Set password und vergib ein langes, einmaliges Server-Passwort. Lege anschließend ein neues Budget an oder importiere eine vorhandene Actual-Datei.

Keine Finanzdaten ungeschützt veröffentlichen

Verwende Actual nicht über eine unverschlüsselte http://-Adresse im Internet. Nutze HTTPS, ein starkes Server-Passwort und gib die Serveradresse nur an Personen weiter, die Zugriff erhalten sollen.

Prüfe das Zertifikat von der Kommandozeile aus. Ersetze <budget-domain>:

curl -I "https://<budget-domain>"

Eine HTTP-Antwort ohne Zertifikatswarnung bestätigt, dass HTTPS erreichbar ist.

6. Budget und Serverdaten sichern

Erstelle zuerst in Actual ein übertragbares Budget-Backup: Öffne das Budget, wähle More, dann Settings und im Bereich Export die Schaltfläche Export Data. Lade die Actual-ZIP-Datei auf deinen Computer und bewahre sie verschlüsselt auf.

Zusätzlich kannst du den gesamten Serverstand sichern. Stoppe dafür Actual kurz:

cd /opt/actual-budget
docker compose stop actual

Lege den Zielordner an, falls er noch nicht vorhanden ist:

sudo mkdir -p /var/backups

Erstelle auf dem Server ein datiertes Archiv:

sudo tar -czf "/var/backups/actual-budget-$(date +%F).tar.gz" -C /opt/actual-budget data Caddyfile compose.yaml

Starte Actual wieder:

docker compose start actual

Für den einfachen Rückweg importierst du die gespeicherte Actual-ZIP-Datei auf der Dateiauswahl über Import file und Actual. Das Serverarchiv dient als zusätzliche Komplettsicherung.

7. Aktualisieren und Fehler finden

Erstelle vor jedem Update ein Backup. Aktualisiere dann beide Images:

cd /opt/actual-budget
docker compose pull
docker compose up -d

Zeige bei Problemen die letzten Meldungen an:

docker compose logs --tail=100 actual caddy
  • Caddy erhält kein Zertifikat: DNS-Eintrag sowie Weiterleitungen für 80 und 443 prüfen.
  • 502 Bad Gateway: Prüfen, ob actual und caddy im Netzwerk actual-net stehen.
  • Anmeldung schlägt fehl: Server-Passwort und richtige HTTPS-Adresse prüfen.
  • Budget nach Import nicht ladbar: Actual aktualisieren und das Backup danach erneut importieren; ein Backup aus nightly kann neuer als latest sein.

8. Quellen und Video

Fertig

Actual Budget läuft jetzt mit dauerhaft gespeicherten Daten hinter HTTPS. Lege zum Test eine Kategorie und eine Buchung an, öffne die Seite danach in einem zweiten Browser und prüfe, ob das Budget nach der Anmeldung synchron erscheint.