fix(selfhost): explain unsupported update services
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
|
||||
Der Updater verweigert externe Datenbanken, externen S3-/Seafile-Speicher, zusätzliche Dienste, Compose-Profile, geänderte Datenpfade und PostgreSQL-Imagewechsel. Dafür braucht es zunächst passende Backup-/Migrationsadapter. Eigene Einstellungen innerhalb der unterstützten Dienste können in `docker-compose.override.yml` **oder** `docker-compose.override.yaml` bleiben; der Updater verwendet diese Datei bei jedem Compose-Aufruf. Änderungen an dieser Override-Datei werden nicht überschrieben.
|
||||
|
||||
Das betrifft auch bestehende Installationen mit zusätzlichen `matrix-*`-Diensten. Das Standard-Backup enthält weder deren Datenbank noch deren Dateispeicher. Diese Dienste nur in eine Override-Datei zu verschieben erweitert die Unterstützung nicht: Der Updater prüft die zusammengeführte Konfiguration. Vor einem Update muss ihr Erhalt einschließlich Daten, Abhängigkeiten und Wiederherstellung unterstützt werden. Die Fehlermeldung nennt fehlende und zusätzliche Dienste jeweils für die bestehende und die Zielkonfiguration. Ein Abbruch mit `mutationStarted: false` und `recoveryRequired: false` benötigt keine Wiederherstellung und keinen `resolve`-Aufruf.
|
||||
|
||||
Die Zielversion muss bereits die festen MinIO-Digests und die neuen Backend-/Frontend-Healthchecks enthalten. Ältere Releases bleiben über den in `docs/releases.md` beschriebenen manuellen Ablauf installierbar. Ein Versionswechsel des Betriebssystems oder der Docker Engine gehört nicht zu diesem Ablauf.
|
||||
|
||||
## Bereitstellung
|
||||
|
||||
@@ -371,8 +371,19 @@ class Updater:
|
||||
def validate_configs(self):
|
||||
old, new = self.current["services"], self.candidate["services"]
|
||||
required = {"backend", "frontend", "db", "minio", "createbuckets", "traefik", "node-exporter"}
|
||||
if set(old) != required or set(new) != required:
|
||||
raise UpdateError("Dieser Updater unterstützt den Standard-Selfhost-Stack mit lokalen Daten und MinIO.")
|
||||
differences = []
|
||||
for label, services in (("Bestehende Konfiguration", old), ("Zielkonfiguration", new)):
|
||||
missing, additional = required - set(services), set(services) - required
|
||||
details = []
|
||||
if missing:
|
||||
details.append("fehlend: " + ", ".join(sorted(missing)))
|
||||
if additional:
|
||||
details.append("zusätzlich: " + ", ".join(sorted(additional)))
|
||||
if details:
|
||||
differences.append(label + " (" + "; ".join(details) + ")")
|
||||
if differences:
|
||||
raise UpdateError("Dieser Updater unterstützt den Standard-Selfhost-Stack mit lokalen Daten und MinIO. "
|
||||
+ ". ".join(differences) + ". Zusätzliche Dienste benötigen Unterstützung für Erhalt, Backup und Wiederherstellung.")
|
||||
for name in required:
|
||||
if old[name].get("profiles") or new[name].get("profiles") or new[name].get("build"):
|
||||
raise UpdateError("Build-Kontexte und Compose-Profile werden nicht unterstützt.")
|
||||
|
||||
Reference in New Issue
Block a user