Files
ProxLedger/docs/betrieb/sicherung.md
T
florian.wildeandClaude Opus 5 11e514dd25
Prüfung / pruefung (push) Canceled after 0s
feat(deploy): Update und Sicherung fuer beide Installationsarten (#031)
deploy/update.sh und deploy/backup.sh konnten nur Docker. Beide erkennen die
Installationsart jetzt selbst und beherrschen auch die Installation als
Dienst: npm ci, prisma migrate deploy, bauen, systemctl restart - und
pg_dump ueber DATABASE_URL fuer die Sicherung.

Beim Durchspielen gegen einen laufenden Stapel zwei Fehler gefunden:

1. Die Zustandspruefung des Web-Containers konnte nie gelingen. Next bindet
   im Standalone-Modus an die Adresse aus HOSTNAME, und Docker setzt dort
   den Containernamen - der Server lauschte nur auf der Container-IP. Der
   Dienst web blieb dauerhaft auf "health: starting". Behoben mit
   ENV HOSTNAME=0.0.0.0; geprueft wird jetzt ueber 127.0.0.1.
2. Eine fehlgeschlagene Sicherung hielt die Aktualisierung nicht auf. Jetzt
   bricht sie ab, bevor etwas veraendert wird, und nennt die Auswege.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-03 07:26:30 +02:00

1.7 KiB
Raw Blame History

Sicherung und Wiederherstellung

Was gesichert werden muss

Sache Wo Ohne sie
Datenbank PostgreSQL alles weg: Hosts, Kunden, Laufzeiten, Rechnungen
APP_SECRET .env alle Sitzungen ungültig, SMTP- und Webhook-Zugangsdaten unlesbar
Hochgeladene PDFs /data/uploads (Docker-Volume) bzw. /opt/proxledger/data/uploads Rechnungsanhänge fehlen

Die Agents brauchen keine Sicherung: Sie registrieren sich neu, und die Zuordnung hängt an der Maschinenkennung, nicht an einem Token.

Sichern

bash deploy/backup.sh /var/backups/proxledger

Das Skript erkennt selbst, ob die Installation mit Docker oder als Dienst läuft, und sichert in beiden Fällen Datenbank, Uploads und .env. Beim LXC-Weg reicht zusätzlich die gewohnte Proxmox-Sicherung des Containers.

Vor jeder Aktualisierung läuft es ohnehin automatisch – deploy/update.sh ruft es als Erstes auf und bricht ab, wenn es fehlschlägt.

Zurückspielen

# Docker
docker compose down
docker compose up -d postgres
gunzip -c sicherung.sql.gz | docker compose exec -T postgres psql -U proxledger proxledger
docker compose up -d

Danach die .env mit demselben APP_SECRET zurücklegen wie zum Zeitpunkt der Sicherung. Ein anderer Wert lässt die gespeicherten Zugangsdaten unlesbar werden; das Dashboard sagt das beim nächsten Versand deutlich, aber die Werte müssen dann neu eingetragen werden.

Das Wichtigste

Eine Sicherung, die nie zurückgespielt wurde, ist keine Sicherung. Spielen Sie sie einmal in eine leere Testumgebung ein und melden Sie sich dort an. Erst dann wissen Sie, dass Sicherung und APP_SECRET zusammenpassen.