1c7bfdf421
Add end-to-end migration scripts for inventory, precopy, cutover, smoke tests, rollback, and post-migration checks. Include an operational runbook and Proxmox env template to move Hördle behind Nginx Proxy Manager while preserving persistent volumes safely.
2.8 KiB
2.8 KiB
Hördle Migration Runbook (Proxmox-LXC + Nginx Proxy Manager)
Dieses Runbook setzt den Migrationsplan operativ um und priorisiert Datensicherheit
fuer data/prod.db und public/uploads.
0) Voraussetzungen
- Quelle (alt): VPS mit laufendem Hördle-Compose-Stack.
- Ziel (neu): Proxmox-LXC unter
root@10.0.0.19. - DNS ist bereits vorbereitet.
- Ziel-LXC ist im internen Netz vom NPM-LXC erreichbar.
1) Inventur auf der Quelle
cd /home/docker/hoerdle
./scripts/migration-inventory.sh
Erwartung:
- Persistenzpfade vorhanden:
data,data/prod.db,public/uploads - Runtime-Variablen in
docker-compose.ymlreferenzieren.env
2) Ziel-LXC vorbereiten
Auf dem Ziel-LXC (root@10.0.0.19):
mkdir -p /opt/hoerdle
# Repo nach /opt/hoerdle bringen (git clone oder rsync)
cd /opt/hoerdle
./scripts/migration-prepare-target.sh
Danach:
.envin/opt/hoerdle/.envproduktiv ausfuellenADMIN_PASSWORDals bcrypt hash setzen- Caddy-Stack nicht verwenden (nur
docker-compose.yml)
3) Vorabkopie der Daten (Quelle -> Ziel)
Auf der Quelle:
cd /home/docker/hoerdle
TARGET_HOST=root@10.0.0.19 TARGET_APP_DIR=/opt/hoerdle ./scripts/migration-precopy.sh
Das Skript synchronisiert:
data/public/uploads/
und zeigt Dateizaehlung/Groessen als Plausibilitaetscheck.
4) Cutover im Wartungsfenster
Auf der Quelle:
cd /home/docker/hoerdle
TARGET_HOST=root@10.0.0.19 TARGET_APP_DIR=/opt/hoerdle ./scripts/migration-cutover.sh
Das Skript:
- stoppt die Quell-App,
- fuehrt Final-Sync aus,
- verifiziert
prod.dbper SHA256, - startet die Ziel-App mit
docker compose up -d --build.
5) NPM umschalten + Smoke-Test
Im Nginx Proxy Manager:
- Proxy Host auf
10.0.0.19:3010setzen - Scheme
http, Websocket Support aktiv - SSL aktivieren (Let's Encrypt), Force SSL einschalten
- Header-Weiterleitung aktiv lassen (
X-Forwarded-*)
Smoke-Test:
./scripts/migration-smoke-test.sh https://hoerdle.de
Zusatzpruefungen manuell:
- Admin-Login
- Upload eines Testfiles
- Abruf des Uploads im Frontend
6) Post-Migration (24h)
docker compose logs --since=24hauf Ziel auswerten- NPM Access/Error Logs pruefen
- taegliches Backup sicherstellen:
data/prod.dbpublic/uploads/
- Alte Instanz erst nach stabiler Beobachtungszeit stilllegen
Automatisierter Postcheck:
cd /opt/hoerdle
DOMAIN_URL=https://hoerdle.de ./scripts/migration-postcheck.sh
Beispiel fuer taegliches Backup (cron auf Ziel-LXC):
crontab -e
# taeglich 03:30
30 3 * * * cd /opt/hoerdle && ./scripts/backup-persistence.sh >> /opt/hoerdle/logs/backup-persistence.log 2>&1
7) Rollback
Wenn Tests fehlschlagen:
TARGET_HOST=root@10.0.0.19 TARGET_APP_DIR=/opt/hoerdle ./scripts/migration-rollback.sh
Danach sofort im NPM auf alte Instanz zurueckschalten.