feat: automatische geplante Backups mit Rotation

Phase 1.3 - Automatische Backups:
- Cron-basierter Scheduler (Standard: täglich 2 Uhr)
- Konfigurierbar über .env (Zeitplan, Verzeichnis, Anzahl)
- Automatische Rotation: behält nur letzte N Backups (Standard: 7)
- UI in Settings → Backup: Status-Anzeige und manueller Trigger
- Tests: 7 erfolgreiche Tests für Scheduler-Funktionalität

Neue Umgebungsvariablen:
- BACKUP_ENABLED (Standard: true)
- BACKUP_SCHEDULE (Standard: 0 2 * * *)
- BACKUP_DIR (Standard: ./backups)
- BACKUP_KEEP (Standard: 7)
- TZ (für Zeitzone)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ulas Kalayci
2026-05-04 07:02:38 +02:00
parent 99a2280c02
commit 9b29d1847c
11 changed files with 484 additions and 3 deletions
+16 -1
View File
@@ -973,7 +973,22 @@
"backupRestoredToast": "Datenbank wiederhergestellt. Seite wird neu geladen...",
"backupCliTitle": "CLI / Docker-Compose-Wiederherstellung",
"backupCliHint": "Für operative Wiederherstellungen die App stoppen, das Backup in einen temporären Container einbinden und die Datenbankdatei ersetzen.",
"backupCliBackupHint": "Du kannst auch direkt über Docker Compose ein Backup erstellen:"
"backupCliBackupHint": "Du kannst auch direkt über Docker Compose ein Backup erstellen:",
"backupSchedulerTitle": "Automatische Backups",
"backupSchedulerHint": "Geplante Backups werden automatisch erstellt und alte Backups rotiert.",
"backupSchedulerStatus": "Status",
"backupSchedulerEnabled": "Aktiv",
"backupSchedulerDisabled": "Deaktiviert",
"backupSchedulerSchedule": "Zeitplan",
"backupSchedulerKeep": "Aufbewahrung",
"backupSchedulerKeepCount": "{{count}} Backups",
"backupSchedulerLastBackup": "Letztes Backup",
"backupSchedulerLastSuccess": "{{date}} (erfolgreich)",
"backupSchedulerLastFail": "{{date}} (fehlgeschlagen)",
"backupSchedulerNever": "Noch kein Backup erstellt",
"backupSchedulerTrigger": "Jetzt Backup erstellen",
"backupSchedulerTriggering": "Backup wird erstellt...",
"backupSchedulerTriggeredToast": "Backup erfolgreich erstellt."
},
"login": {
"tagline": "Familienplanung. Sicher. Datenschutzfreundlich. Open Source.",