90 lines
3.3 KiB
Markdown
90 lines
3.3 KiB
Markdown
# Domain Control aktualisieren
|
|
|
|
Die aktuelle Compose-Version ist `v1.4.2`. Datenbank, Einstellungen und
|
|
verschlüsselte API-Zugänge liegen in benannten Docker-Volumes und bleiben bei
|
|
den folgenden Verfahren erhalten.
|
|
|
|
## Direkt in der Weboberfläche
|
|
|
|
1. Als Administrator anmelden und **Update** öffnen.
|
|
2. Falls noch nicht geschehen, Gitea-Benutzername und das Passwort oder einen
|
|
Token mit Lesezugriff auf Repository und Container-Paket hinterlegen.
|
|
3. **Nach Update suchen** und anschließend **Jetzt aktualisieren** wählen.
|
|
4. Warten, bis Image-Download, Containerwechsel und Healthcheck abgeschlossen
|
|
sind. Bei einem Fehler versucht der Update-Agent automatisch, den vorherigen
|
|
Container wiederherzustellen.
|
|
|
|
Ein nicht erreichbarer Git- oder Registry-Server unterbricht den laufenden
|
|
DynDNS-Dienst nicht. Direkte Sprünge über mehrere Versionen sind möglich, wenn
|
|
das Ziel-Image die laufende Version ausdrücklich unterstützt. Diese
|
|
Kompatibilität wird nach dem Download und vor dem ersten Containerwechsel
|
|
geprüft. Ein inkompatibles Release wird ohne Unterbrechung abgelehnt.
|
|
|
|
Die sichere Update-Basis beginnt mit `v1.4.0`. Installationen bis einschließlich
|
|
`v1.3.0` werden einmalig wie unten beschrieben mit Compose aktualisiert. Danach
|
|
kann der Agent auch dann weitere kompatible Releases installieren, wenn seine
|
|
eigene Versionsnummer älter als die der Web-App ist. Erscheint **Compose
|
|
aktualisieren**, benötigt das Ziel einen neueren Agent-Vertrag; dann beide
|
|
Container wie unten beschrieben gemeinsam aktualisieren.
|
|
|
|
## Mit Docker Compose
|
|
|
|
In `compose.yml` wird nur die zentrale, konkret gepinnte Image-Zeile geändert:
|
|
|
|
```yaml
|
|
services:
|
|
dyndns:
|
|
image: &image git.j-mahler.de/admin/domain-control-webinterface-prod:v1.4.2
|
|
update-agent:
|
|
image: *image
|
|
```
|
|
|
|
Danach im Ordner der Compose-Datei ausführen:
|
|
|
|
```bash
|
|
docker compose pull
|
|
docker compose up -d --force-recreate
|
|
docker compose ps
|
|
```
|
|
|
|
Die Web-App und der Update-Agent verwenden durch den YAML-Anker dieselbe
|
|
Version. Für das Update ist kein `docker compose down` nötig. Insbesondere
|
|
niemals `docker compose down -v` verwenden, da `-v` die Daten- und
|
|
Secret-Volumes löschen würde.
|
|
|
|
Der Ein-Klick-Updater kann die auf dem Host liegende `compose.yml` nicht
|
|
verändern. Vor jedem späteren manuellen Compose-Lauf daher zuerst den gepinnten
|
|
Tag auf die gewünschte Version setzen, damit Compose keine ältere Version
|
|
wiederherstellt.
|
|
|
|
Der Healthcheck lässt sich anschließend direkt prüfen:
|
|
|
|
```bash
|
|
curl --fail http://127.0.0.1:9090/healthz
|
|
```
|
|
|
|
Die erwartete Antwort lautet `ok`.
|
|
|
|
## Portainer oder Dockge
|
|
|
|
1. Den bestehenden Stack bearbeiten.
|
|
2. Nur den Tag der zentralen Image-Zeile auf `v1.4.2` setzen.
|
|
3. Den Stack mit vorherigem Image-Pull erneut bereitstellen.
|
|
4. Kontrollieren, dass beide Container laufen und die Web-App `healthy` ist.
|
|
|
|
Den Stack nicht mitsamt seinen Volumes löschen oder neu anlegen.
|
|
|
|
## Rollback
|
|
|
|
Falls ein manuelles Rollback nötig ist, die zentrale Image-Zeile wieder auf die
|
|
zuvor eingesetzte konkrete Version setzen und erneut ausführen:
|
|
|
|
```bash
|
|
docker compose pull
|
|
docker compose up -d --force-recreate
|
|
```
|
|
|
|
Vor größeren Versionssprüngen sollten die Volumes `dyndns-data` und
|
|
`dyndns-secrets` gemeinsam gesichert werden. Nur zusammen enthalten sie sowohl
|
|
die Datenbank als auch den zur Entschlüsselung benötigten Master-Key.
|