Skip to content

Quick Start: Docker Run

Das All-in-One Image enthält alles, was FinAnalyzer braucht:

  • PostgreSQL 16 + TimescaleDB — vollwertige Datenbank mit Zeitreihen-Optimierung
  • Keycloak 26 — Identity & Access Management (deaktivierbar)
  • Spring Boot Backend — REST API und Business-Logik
  • Caddy — Reverse Proxy mit optionalem Auto-HTTPS
  • Automatische Backups — tägliches pg_dump mit konfigurierbarer Aufbewahrung
  • s6-overlay — Process Supervision für alle Services

Prüfe deine Docker-Version:

Terminal window
docker --version
# Docker version 27.x.x, build ...
  1. Container starten

    Terminal window
    docker run -d \
    --name finanalyzer \
    -p 8080:80 \
    -v finanalyzer-data:/data \
    -e DB_PASSWORD=mein-sicheres-passwort \
    -e KEYCLOAK_ADMIN_PASSWORD=admin-passwort \
    -e KEYCLOAK_DB_PASSWORD=kc-db-passwort \
    -e EXTERNAL_URL=http://localhost:8080 \
    finanalyzer/allinone:latest
  2. Warten, bis der Container bereit ist

    Terminal window
    docker logs -f finanalyzer
    # Warte auf: "Started FinAnalyzerApplication in X.XXX seconds"

    Der Start dauert ca. 60-90 Sekunden (PostgreSQL + Keycloak + Backend initialisieren).

  3. Im Browser öffnen

  4. Erste CSV importieren

    • Klicke auf „Import” in der Navigation
    • Wähle eine CSV-Datei deiner Bank
    • FinAnalyzer erkennt das Bankenformat automatisch und kategorisiert die Transaktionen

Wenn du kein Login brauchst (Einzelbenutzer-Modus):

Terminal window
docker run -d \
--name finanalyzer \
-p 8080:80 \
-v finanalyzer-data:/data \
-e DB_PASSWORD=mein-sicheres-passwort \
-e KEYCLOAK_ENABLED=false \
-e FINANALYZER_AUTH_ENABLED=false \
-e EXTERNAL_URL=http://localhost:8080 \
finanalyzer/allinone:latest

Caddy kann automatisch HTTPS-Zertifikate via Let’s Encrypt ausstellen:

Terminal window
docker run -d \
--name finanalyzer \
-p 80:80 -p 443:443 \
-v finanalyzer-data:/data \
-e DB_PASSWORD=mein-sicheres-passwort \
-e KEYCLOAK_ADMIN_PASSWORD=admin-passwort \
-e KEYCLOAK_DB_PASSWORD=kc-db-passwort \
-e CADDY_DOMAIN=finance.example.com \
-e EXTERNAL_URL=https://finance.example.com \
finanalyzer/allinone:latest

Das Volume /data speichert alle persistenten Daten:

PfadInhalt
/data/postgresql/PostgreSQL-Datenbank (PGDATA)
/data/backups/Automatische pg_dump-Backups
/data/uploads/Hochgeladene CSV-Dateien
/data/categories.jsonBenutzerdefinierte Kategorien (optional)
Terminal window
# Volume anzeigen
docker volume inspect finanalyzer-data
# Manuelles Backup des Volumes
docker run --rm -v finanalyzer-data:/data -v $(pwd):/backup \
alpine tar czf /backup/finanalyzer-backup.tar.gz -C /data .
VariableDefaultBeschreibung
DB_PASSWORDPflichtPostgreSQL-Passwort
EXTERNAL_URL(leer)URL über die FinAnalyzer erreichbar ist (inkl. Port). Pflicht bei Port ≠ 80 oder Reverse Proxy.
DB_NAMEfinanalyzerDatenbankname
DB_USERfinanalyzerDatenbankbenutzer
KEYCLOAK_ENABLEDtrueKeycloak aktivieren/deaktivieren
KEYCLOAK_ADMIN_PASSWORDPflichtKeycloak Admin-Passwort
KEYCLOAK_DB_PASSWORDPflichtKeycloak-Datenbank-Passwort
FINANALYZER_AUTH_ENABLEDtrueOAuth2-Auth im Backend
CADDY_DOMAIN(leer)Domain für Auto-HTTPS (Let’s Encrypt)
CADDY_PORT80HTTP-Port
JAVA_OPTS-Xmx512mJVM-Optionen für Backend
KC_JAVA_OPTS-Xmx256mJVM-Optionen für Keycloak
BACKUP_INTERVAL86400Backup-Intervall in Sekunden
BACKUP_RETENTION_DAYS7Aufbewahrung Backups in Tagen
TZ(System)Zeitzone für Logs und Backups
Terminal window
# Stoppen
docker stop finanalyzer
# Starten
docker start finanalyzer
# Logs anzeigen
docker logs finanalyzer --tail 50
# Löschen (Daten bleiben im Volume!)
docker stop finanalyzer && docker rm finanalyzer
# Update auf neue Version
docker pull finanalyzer/allinone:latest
docker stop finanalyzer && docker rm finanalyzer
docker run -d --name finanalyzer -p 8080:80 \
-v finanalyzer-data:/data \
-e DB_PASSWORD=mein-passwort \
-e KEYCLOAK_ADMIN_PASSWORD=admin-pw \
-e KEYCLOAK_DB_PASSWORD=kc-db-pw \
-e EXTERNAL_URL=http://localhost:8080 \
finanalyzer/allinone:latest