Add self-contained automated server upgrade package
This commit is contained in:
1 parent
4d58fc7b66
commit
8e6c9a058f
14 files changed
+908
-26
No files matched your search
+32
-1
@@ -236,6 +236,34 @@ v1-Split-Archive haben weder manifestgebundene Prüfsummen noch einen verlässli
|
||||
|
||||
Nur die Dateien **eines** alten Laufs in einen eigenen Ordner kopieren. Alte DB-Dumps liegen gemeinsam unter `db/`, Gitea unter `files/gitea-data`, Mail-Homes ggf. gesammelt unter `files/mail-home`. Nach Prüfung manuell in vorbereitete Testziele kopieren und DB-Dumps mit einem passenden Client importieren. Alte monolithische Formate vor den Split-Archiven unterstützt dieser Entpackmodus nicht. Alte Sicherungen erst nach einer erfolgreichen neuen Offsite-Sicherung und echten Wiederherstellungsprobe freigeben.
|
||||
|
||||
## Automatisiertes Transferpaket
|
||||
|
||||
Ergänzend zum manuellen Installer gibt es ein selbstentpackendes `.run`-Paket mit
|
||||
integrierter Payload-Prüfsumme und separater SHA-256-Datei. Es wird aus einer
|
||||
expliziten Dateiliste gebaut; echte Zugangsdaten, Git-Historie und Sicherungsdaten
|
||||
sind ausgeschlossen. Anleitung: [UPDATE_ANLEITUNG.md](UPDATE_ANLEITUNG.md).
|
||||
|
||||
`update.sh` erstellt einen privaten Migrationsordner und eine Kandidatenkonfiguration.
|
||||
Der erste Check nutzt geschützte Kopien der Zugangsdaten. Installation und
|
||||
Abnahmebackup laufen dann unter einer gemeinsamen, von Kindprozessen überprüften
|
||||
Dateisperre. Der Starter übergibt den langen Ablauf an eine systemd-Unit; das
|
||||
Ergebnis bleibt im Migrationsordner erhalten. Ein kombinierter Rollback stellt
|
||||
Paketdateien und die vorherige Hauptkonfiguration wieder her.
|
||||
|
||||
Der Abnahmelauf nutzt `app-backup.sh --no-retention`: keinerlei lokale oder entfernte
|
||||
Löschung alter Sicherungssätze. Nach Upload/Rücklesevergleich prüft zusätzlich
|
||||
`app-restore.sh --remote-run ... --verify-only` den erneut heruntergeladenen Satz.
|
||||
Erst danach wird der vorhandene Backup-Timer aktiviert. Remote-Retention bleibt
|
||||
nach dieser Migration bewusst aus, bis die fachliche Restore-Abnahme erfolgt ist.
|
||||
|
||||
Direkt erkennbare Nextcloud-systemd-Writer werden übernommen. Bei klassischen
|
||||
Cronjobs fragt das Paket nach einer vorübergehenden Pause des gesamten Cron-Dienstes;
|
||||
dies kann andere fällige Cronjobs betreffen und erfolgt deshalb nicht stillschweigend.
|
||||
Nach dem Writer-Stopp wartet die Sicherung auf noch laufende direkte Nextcloud-
|
||||
`cron.php`-/`occ`-Prozesse (maximal `WRITER_DRAIN_TIMEOUT`, Default 300 Sekunden).
|
||||
Nextcloud dokumentiert systemd-Timer als Alternative zu crontab:
|
||||
[Nextcloud Hintergrundjobs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html).
|
||||
|
||||
## Installation, Update und Rückweg
|
||||
|
||||
Die ausführbare Schrittfolge steht in [README: bestehende Installation aktualisieren](README.md#bestehende-installation-aktualisieren).
|
||||
@@ -265,7 +293,7 @@ Die Entfernung der drei DB-Dateien aus dem aktuellen Baum löscht deren Historie
|
||||
|
||||
Reproduzierbar mit `tests/Dockerfile` und `tests/run.sh`. Der Container bekommt das Repository nur lesbar und benötigt während der Tests kein Netzwerk. Die MariaDB läuft ohne TCP-Port in einem temporären Verzeichnis. systemd/occ werden simuliert; alle eigentlichen Archive, Dateikopien, Dumps/Imports und Crypt-Operationen sind real.
|
||||
|
||||
Ergebnis des lokalen Abschlusslaufs am 10.09.2026: **22 Tests erfolgreich**, Shell-Syntax und ShellCheck ohne Befund. Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV (Distributionspaket), ShellCheck 0.10.0. Diese Versionsangaben beschreiben die Testumgebung, keine Empfehlung für die Produktivversion.
|
||||
Ergebnis des lokalen Abschlusslaufs am 10.09.2026: **30 Tests erfolgreich**, Shell-Syntax und ShellCheck ohne Befund. Testumgebung: Debian 13.6, MariaDB 11.8.6, rclone 1.60.1-DEV (Distributionspaket), ShellCheck 0.10.0. Diese Versionsangaben beschreiben die Testumgebung, keine Empfehlung für die Produktivversion.
|
||||
|
||||
Geprüfte Fälle umfassen:
|
||||
|
||||
@@ -279,5 +307,8 @@ Geprüfte Fälle umfassen:
|
||||
- Selektiver Restore mit Löschung und Schutz ausgeschlossener Nextcloud-Daten.
|
||||
- Lokale/Remote-Retention mit Mindestanzahl und Erhalt alter/unvollständiger Läufe.
|
||||
- Paketupdate mit Erhalt von Config/Zeitplan und ausführbarem Rollback.
|
||||
- Selbstentpackendes Transferpaket mit erfolgreichem Komplettlauf und kombiniertem Konfigurations-/Paket-Rollback.
|
||||
- Abbruch vor Änderungen bei Vorprüfungsfehlern, gestoppter Timer bei fehlgeschlagenem Abnahmebackup, Ablehnung beschädigter Pakete.
|
||||
- Übergabe an einen vom Starter unabhängigen Prozess (systemd-run im Test simuliert), ausdrückliche Cron-Policy und Writer-Wartezeit/Timeout.
|
||||
|
||||
**Serverabnahme steht separat aus:** echte Rocky-Linux-10-Umgebung, SELinux-/ACL-Verhalten auf den verwendeten Dateisystemen, installierte Nextcloud-/Gitea-Versionen, vollständige Writer-/Pfadliste, Berechtigungen des echten DB-Backupaccounts, tatsächlicher OneDrive-Upload großer Archive, Laufzeit/Speicherbedarf und fachliche Restore-Probe. Es wurde kein Produktivbackup ausgeführt und keine Serverinstallation verändert.
|
||||
Reference in new issue
Block a user