KFZ-Bozo Handbuch

Betrieb & Dokumentation › Hetzner-Migrations-Runbook

Hetzner-Migrations-Runbook

DokumentUnklarQuelle geändert seit Prüfung

Ein Deploy läuft in festen Schritten: neuen Branch pushen, auf dem Server per Fast-Forward mergen, Dateirechte korrigieren, ein Skript ausführen, das baut und startet. Vorher wird eine Rückfall-Markierung gesetzt, damit man im Fehlerfall sofort zurück kann. Reine Text-/Logikänderungen brauchen nur einen Neustart, sichtbare Frontend-Variablen (NEXT_PUBLIC_*) brauchen einen kompletten Neubau des Images.

Entwickler

Bild folgt

Ein Deploy läuft über ein festes Skript: den gewünschten Branch auf dem Server auschecken, Dateirechte für den Container-Nutzer korrigieren, das Web-Image neu bauen und starten, danach zwei automatische Prüfungen laufen lassen — einen Gesundheitscheck und einen Kontrast-Wächter gegen unsichtbaren Text. Vorher wird eine Rückfall-Markierung gesetzt, damit im Fehlerfall ein sofortiger Rücksprung möglich ist. Rein inhaltliche Änderungen brauchen nur einen Neustart, öffentlich sichtbare Frontend-Einstellungen dagegen einen kompletten Neubau des Images, weil sie fest in das gebaute Paket einfließen. In den Projektunterlagen stehen daneben mehrere ältere, sich widersprechende Beschreibungen des vorgeschalteten Webservers (Hetzner-Server + Docker) — welche davon den heutigen Server tatsächlich beschreibt, ist ungeklärt.

  • Neue Frontend-Einstellung erscheint nicht live → prüfen, ob nur neu gestartet statt neu gebaut wurde; sichtbare Einstellungen brauchen einen echten Neubau des Images.
  • Deploy bricht am Kontrast-Wächter ab → er meldet nur, verhindert den Deploy in der Praxis nicht automatisch; den gemeldeten Kontrast trotzdem prüfen, statt ihn zu übergehen.
  • Nach einem Deploy fehlt der Stand auf GitHub → das eigentliche Deploy-Ziel ist ein anderer Server-Fernzugriff als GitHub; GitHub muss danach eigens nachgezogen werden.

Genutzt von

Gebraucht vo…Genutzt vonRegeltEnthältEnthältEnthältEnthältGeregelt dur…NutztHetzner-Mi…Datenbank-Migr…MASTERPLAN.mdProjekt-Briefe…Zweites Claude…Domain & DNS (…Hetzner-Server…Backup & Wiede…Hausregeln-Abs…Betriebs-Überw…
  • docs/hetzner-migration-runbook.md
  • DEPLOY.md
  • scripts/deploy-prod.sh
  • CLAUDE.md
  • docker-compose.yml
wiederverwendbarteils — Konventionen (kfz_net, kfz- Prefix) noch gültig, Ablaufschritte teils durch deploy-prod.sh ersetzt
dublettenDEPLOY.md, docker-compose.yml-Kommentare
zielgruppeEntwickler (Serverzugriff)
schrittegit push Branch -> git merge --ff-only auf Server -> chown -R 1001:65533 data -> bash scripts/deploy-prod.sh -> Healthcheck (curl 127.0.0.1:3100) -> Kontrast-Gate
rollbackTag backup/pre-<thema>-<datum> vor jedem Deploy, danach mitpushen
konfliktdocker-compose.yml sagt explizit 'KEIN Caddy, KEIN cloudflared', Caddyfile im selben Repo beschreibt einen Cloudflare-Tunnel-Modus mit 'auto_https off' + reverse_proxy — beide Dateien beschreiben unterschiedliche, sich ausschliessende Netzwerk-Topologien; MASTERPLAN.md nennt genau diesen Widerspruch bereits 2026-05-23 als offen, seither nicht sichtbar aufgeloest
nach-server-deployorigin/main MUSS mitgepusht werden (Hausregel 6), sonst haengt GitHub hinterher

Beleg: docs/hetzner-migration-runbook.md wird von DEPLOY.md referenziert ('fuer Kontext'), aktueller Deploy-Weg laeuft ueber scripts/deploy-prod.sh + Hausregel 5

Betrieb & DokumentationSeite bearbeiten: wiki/seiten/betrieb-doku/ops-deploy.md