Updates¶
Vesana aktualisiert sich über die Admin-UI (Admin → System → Updates). Ein Updater-Dienst im Hintergrund führt das Update aus: Backup, Pull, Migration, Neustart, Health-Check. Entweder stößt du das Update selbst an, oder du lässt Vesana das per automatischem Update erledigen.
Niemals manuell docker compose pull auf einer produktiven Instanz
Der GUI-Updater erstellt vor jedem Update automatisch ein Backup und prüft Diskplatz und Health, bevor er wirklich umschaltet. Manuelle Updates umgehen diese Schutzmaßnahmen.
Kein Kanal-Konzept¶
Es gibt keine Beta-/Stable-/Nightly-Kanäle. Es gibt immer genau eine „neueste Version" vom Lizenzportal — Vesana zeigt dir „Aktuelle Version" und „Verfügbare Version" gegenüber. Ist ein Update kritisch (Sicherheitsfix, dringender Bugfix), markiert ein rotes „Kritisch"-Badge das Update entsprechend.
Online-Update (manuell)¶
Voraussetzungen: ausgehender Zugriff auf das Lizenzportal (Update-Check) und die Container-Registry (Image-Pull).
- Admin → System → Updates öffnen (ein automatischer Check läuft schon beim Öffnen; „Nach Updates suchen" erzwingt einen frischen)
- Verfügbare Version + Änderungsprotokoll prüfen
- „Jetzt updaten" klicken
Was im Hintergrund passiert¶
- Disk-Space-Check — es müssen rund 4 GB frei sein, denn der Image-Pull lädt die neuen Images zusätzlich zu den alten, bevor aufgeräumt wird
- Pre-Update-Backup — immer ein Konfigurations-Backup (kein Voll-Dump; landet im selben Backup-Katalog wie geplante/manuelle Backups, siehe Backup & Disaster-Recovery)
- Alte Vesana-Images werden aufgeräumt — nur Images mit exakt dem Vesana-Namen und einem Versions-Tag; fremde Images auf demselben Server, deren Name zufällig „vesana" enthält, bleiben unangetastet
- Bei Online-Updates: aktuelle Compose-Datei vom Lizenzportal laden (alte Version wird als Sicherung behalten)
- Neue Images pullen
- Migrationen über den Init-Container ausführen
- Version in der Konfiguration aktualisieren, Stack neu starten
Der Neustart der Dienste läuft in einem eigenen Hilfscontainer, der das Neuanlegen der Container überlebt — auch wenn der Updater selbst dabei neu erstellt wird, bleibt die Instanz nicht mit „502 Bad Gateway" liegen.
Fortschritts-Anzeige¶
Die UI zeigt den Update-Lauf als Fortschrittsbalken mit klaren Stationen: idle → checking → downloading → backing_up → migrating → restarting → health_check → done (oder failed).
Der Balken misst dabei wirklich: der Download in Bytes (z. B. „Image 3/7 · 812 MB / 2.1 GB"), Migrationen als Zähler, das Backup nach Dateigröße. Klappt eine Messung nicht, läuft das Update unverändert weiter und zeigt grobe Stufen statt abzubrechen.
Während der Neustart-Phase ist die Oberfläche für kurze Zeit nicht erreichbar. Ein Overlay überbrückt diese Lücke: es pollt gezielt, bis wirklich die neue Version antwortet (nicht nur irgendeine Antwort) — dadurch erscheint kein verfrühter Erfolg, während im Hintergrund noch die alte Version läuft. Bis dahin siehst du einen „Vesana wird gestartet …"-Splash. Danach wartet die Oberfläche, bis die API vollständig zurück ist — du bleibst mit deinen Rechten angemeldet, ein Ab- und Anmelden ist nicht nötig.
Sitzungen überleben Updates¶
Ein Vesana-Update — manuell wie automatisch — meldet niemanden ab: der angekündigte Neustart übernimmt die laufenden Sitzungen. Nur echte Neustarts bleiben streng: Server-Reboot, ein manueller Neustart des Stacks oder ein Absturz verlangen weiterhin eine neue Anmeldung.
Automatische Updates¶
Vesana kann sich selbst aktualisieren. Der Schalter sitzt direkt auf der Update-Seite in der Karte „Automatische Updates"; die Einstellungen darunter werden beim Ändern sofort gespeichert.
| Einstellung | Optionen | Bedeutung |
|---|---|---|
| Wartezeit nach Release | Sofort · 24 Stunden · 3 Tage (Vorgabe) · 1 Woche · 2 Wochen · Benutzerdefiniert (1 Stunde bis 90 Tage) | Neue Versionen reifen erst. Installiert wird immer die neueste Version, die mindestens so alt ist — taucht in der Wartezeit eine Korrektur auf, wird direkt die korrigierte Version installiert; ein fehlerhaftes Release geht an der Instanz vorbei. |
| Kritische Updates sofort installieren | an (Vorgabe) / aus | Als kritisch markierte Releases (z. B. Sicherheitskorrekturen) überspringen die Wartezeit. |
| Installationszeitfenster | Jederzeit · Nachts (01–06 Uhr) · Eigenes Fenster (von–bis) | Ein fälliges Update wartet auf das nächste Fenster. Die Zeitzone wird angezeigt; während der Installation ist Vesana kurz nicht erreichbar. |
Was die Automatik sonst noch beachtet:
- Release-Züge: Bringt ein Tag mehrere Releases, gibt es ein einziges Update auf die letzte Version des Zugs. Ein Release, das binnen weniger Stunden durch einen Nachfolger ersetzt wurde, wird nie installiert.
- Mindestabstand: Zwischen zwei automatischen Updates liegt mindestens die eingestellte Wartezeit — kein tägliches Update-Geknatter.
- „Sofort" heißt sofort: Steht die Wartezeit auf „Sofort", bemerkt Vesana ein neues Release binnen etwa zwei Minuten; mit Wartezeit prüft sie seltener, weil ohnehin Stunden bis Tage vergehen.
- Fehlschlag: Scheitert ein automatischer Versuch, versucht Vesana dieselbe Zielversion frühestens nach 6 Stunden erneut. Scheiterte es schon vor dem Eingriff (Lizenzportal kurz nicht erreichbar, zu wenig Platz), reicht eine Pause von 15 Minuten. Ein kurzer DNS-/Netz-Aussetzer lässt ein laufendes Update nicht mehr scheitern: der Abgleich mit dem Portal wird wiederholt und fällt notfalls auf die zuletzt bekannten Release-Daten zurück.
- Nachvollziehbar: Automatische Updates tragen im Update-Verlauf das Kennzeichen „Auto" und erscheinen im Diagnose-Log.
Die Karte sagt jederzeit, was als Nächstes passiert — „Alles aktuell", „v… reift noch 2 Tage", „Installation im nächsten Zeitfenster (…)" oder „v… wurde abgelehnt". Ein laufendes automatisches Update ist überall sichtbar, auch auf anderen Seiten und im Admin-Bereich.
Ankündigung mit Countdown¶
Ist ein Update fällig und arbeitet gerade jemand in Vesana, erscheint zuerst ein Hinweis-Dialog „Automatisches Update" mit Countdown von fünf Minuten; er nennt den festen Installationstermin und wann angekündigt wurde. Der Countdown läuft nach der Uhr des Servers, nicht nach der des Browsers, und erscheint auch in einem Hintergrund-Tab. Arbeitet niemand, startet das Update ohne Ankündigung.
Im Dialog stehen — je nach Rechten — drei Wege offen:
| Aktion | Wirkung | Recht |
|---|---|---|
| Verschieben (+15 Min · +1 Std · +4 Std) | Schiebt den Termin hinaus, insgesamt höchstens 24 Stunden ab dem ursprünglichen Termin | updates.defer — Operator, Admin, Super-Admin |
| Dieses Update ablehnen | Genau diese Zielversion wird nie automatisch installiert (nur noch manuell); ein neueres Release wird wieder normal behandelt | updates.decline — Admin, Super-Admin |
| Jetzt installieren | Startet das Update sofort, ohne den Countdown abzuwarten | updates.install_now — Admin, Super-Admin |
Schlägt das angekündigte Update fehl, meldet der Hinweis das im Klartext und bietet „Erneut versuchen" an.
Kein automatisches Rollback¶
Es gibt keinen automatischen Rollback-Mechanismus. Schlägt ein Update fehl, bleibt der Stack in dem Zustand, in dem der Fehler auftrat — die Recovery-Strategie ist das Pre-Update-Backup, das der Updater vor jedem Lauf automatisch angelegt hat:
- Admin → System → Backup & DR öffnen
- Das jüngste „Pre-Update"-Backup suchen
- Restore auslösen (Hostname eintippen + Identitätsbestätigung, siehe Backup & Disaster-Recovery)
Das bringt die Datenbank auf den Stand unmittelbar vor dem Update zurück — die Konfiguration, nicht den Messwert-Verlauf, denn das Pre-Update-Backup ist eine Konfigurations-Sicherung. Die Compose-Datei-Sicherung, die der Updater vor Online-Updates anlegt, hilft zusätzlich, falls du auch die Compose-Konfiguration zurückdrehen musst.
Offline-Update¶
Für Air-gapped-Umgebungen oder wenn der Server keinen direkten Zugriff auf die Container-Registry hat.
Paket holen¶
Auf einem Rechner mit Internet: Lizenzportal → Releases → Offline-Paket. Datei: vesana-update-vX.Y.Z.tar.gz. Inhalt: Docker-Image-Tarballs, Compose-File, Manifest, Migrations.
Paket einspielen¶
In der Admin-UI: Admin → System → Updates → „Offline-Update hochladen" → Datei auswählen. Der Upload wird direkt an den Updater durchgereicht, ohne Zwischenkopie auf dem Server; Pakete bis 8 GB sind möglich (ab v1.9.437 — vorher scheiterte der Upload ab 50 MB mit „413 Request Entity Too Large"). Steht ein eigener Reverse-Proxy vor Vesana, gilt dessen Upload-Limit zusätzlich.
Der Updater behandelt das Offline-Paket genauso wie ein Online-Update — Disk-Check, Pre-Update-Backup, Migrationen, Neustart über den Hilfscontainer. Zusätzlich läuft danach ein Health-Check mit Timeout (rund 90 Sekunden), da beim Offline-Pfad kein direkter Zugriff auf externe Erreichbarkeitsprüfungen besteht.
Versionsverlauf¶
Zwei getrennte Ansichten unter Admin → System → Updates:
- Versionsverlauf — alle verfügbaren Releases mit Änderungsprotokoll (die letzten fünf sichtbar, „Ältere Versionen anzeigen" für den Rest)
- Update-Verlauf — die auf dieser Instanz tatsächlich durchgeführten Updates: Zielversion, Ausgangsversion, Online/Offline, Erfolgreich/Fehlgeschlagen, Zeitpunkt, Kennzeichen „Auto" bei automatischen Updates. Auch fehlgeschlagene Versuche nennen die Zielversion.
Der Updater trifft nur die eigene Instanz¶
Der Updater erkennt sein Compose-Projekt am eigenen Container. Laufen zwei Vesana-Instanzen auf einem Host, aktualisiert jede nur sich selbst. Liegt die Installation nicht unter /opt/vesana (Installer-Variable VESANA_DIR), trägt der Installer das Verzeichnis als COMPOSE_PROJECT_DIR in die .env ein — genau diese Installation wird dann aktualisiert.
Reverse-Proxy vor Vesana
Die Wartungs-Komponente, die Updates einspielt, ist von außen nicht erreichbar (ab v1.9.437 — vorher war sie unter /updater/… ohne Anmeldung ansprechbar). Alle Funktionen der Oberfläche laufen über die angemeldete API; von außen bleibt genau eine lesende Abfrage offen, der Fortschritts-Status während eines laufenden Updates (/updater/update/status), damit der Balken auch während des Neustarts weiterläuft. Leitest du mit einem eigenen Reverse-Proxy komplett an den Vesana-Webserver weiter, musst du nichts tun. Hast du eigene Regeln je Pfad gebaut, muss nur dieser Status-Pfad durchgelassen werden.
Manueller Notfall-Pfad¶
Nur wenn die GUI nicht erreichbar ist und auch der Updater-Dienst nicht antwortet:
cd /opt/vesana
# 1. Backup (zusätzlich zum eingebauten Pre-Update-Backup)
docker compose -f docker-compose.prod.yml exec postgres \
pg_dump -U vesana vesana | gzip > backup_$(date +%Y%m%d-%H%M%S).sql.gz
# 2. Compose-File aus dem Portal aktualisieren (nur falls vorgesehen)
sudo curl -sSL https://license.vesana.org/api/v1/install/compose -o docker-compose.prod.yml.new
diff docker-compose.prod.yml docker-compose.prod.yml.new
mv docker-compose.prod.yml.new docker-compose.prod.yml
# 3. Images aktualisieren
docker compose -f docker-compose.prod.yml pull
# 4. Init-Container für Migrationen
docker compose -f docker-compose.prod.yml run --rm init
# 5. Stack neu starten
docker compose -f docker-compose.prod.yml up -d
Bei Offline-Update zusätzlich vor Schritt 3:
tar xzf vesana-update-vX.Y.Z.tar.gz -C /tmp/vesana-update
for img in /tmp/vesana-update/images/*.tar; do docker load < "$img"; done
Nach einem solchen Neustart von Hand ist eine neue Anmeldung fällig — nur angekündigte Neustarts aus dem Updater übernehmen Sitzungen.
Agent- und Collector-Updates¶
Agents und Collectors aktualisieren sich automatisch beim nächsten Config-Refresh (wenige Minuten Default-Intervall). Sie ziehen die aktuelle Version vom Server, prüfen die Signatur, ersetzen ihre eigene Binary und starten den Dienst neu.
Anschluss¶
- Backup & Disaster-Recovery — Pre-Update-Backup ist die Recovery-Strategie
- Distribution & Erreichbarkeit — Offline-Distribution-Modus
- UI-Probleme nach Update