Backup
TeamVis hat zwei kritische Daten-Bereiche, die gesichert werden müssen:
- Postgres-DB (alle Mitarbeiter, Stellen, Audit-Log, Bindings)
- Storage-Bucket
employee-photos(alle Fotos)
DB-Backup (Supabase Cloud)
Supabase macht automatische tägliche Backups mit Point-in-Time-Recovery (PITR) auf höheren Plänen. Im Free-Plan sind 7 Tage History inklusive, ab Pro mehr.
Zusätzlich empfohlen: regelmäßiger eigener Dump.
pg_dump "postgres://service_role:KEY@db.<project>.supabase.co:5432/postgres" \ --no-owner --no-acl \ --format=custom \ > teamvis-$(date +%Y%m%d).dumpCron-Beispiel für täglichen Dump auf der App-VM:
0 3 * * * pg_dump "$DATABASE_URL" --format=custom > /backup/teamvis-$(date +\%Y\%m\%d).dumpStorage-Backup
# einmaliger vollständiger Sync mit Supabase-CLInpx supabase storage cp "ss:///employee-photos" /backup/photos --recursiveBei Self-Hosted Supabase ist der Storage einfach ein Verzeichnis im
Container — direkt mit rsync oder ZFS-Snapshots sichern.
Audit-Log-Sonderbehandlung
Das Audit-Log ist GoBD-relevant: 10 Jahre Aufbewahrungspflicht.
Empfehlung: monatlich CSV-Export über Verwaltung → Protokoll → Export und ins Langzeit-Archiv (nicht-überschreibbares Storage).
Restore-Test
Mindestens einmal im Jahr einen Restore-Test machen:
- Dump in Test-DB einspielen
- Container gegen Test-DB starten
- Login + ein paar Karten prüfen
Backup, das nie restored wurde, ist kein Backup.
Was NICHT gesichert wird
.env— Secrets, gehören in einen Passwort-Safe- Caddy-Zertifikate — werden bei Bedarf neu von Let’s Encrypt geholt
- Container-Image — wird bei Update neu gebaut