Ops: add Proxmox migration tooling and runbook
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.
This commit is contained in:
Executable
+72
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Dieses Skript auf dem ZIEL-LXC ausfuehren.
|
||||
# Es richtet die Ordnerstruktur und Preflight-Checks fuer den Hördle-Betrieb ein.
|
||||
|
||||
APP_DIR="${APP_DIR:-/opt/hoerdle}"
|
||||
APP_USER="${APP_USER:-docker}"
|
||||
APP_GROUP="${APP_GROUP:-docker}"
|
||||
|
||||
echo "== Prepare target LXC for Hördle =="
|
||||
echo "APP_DIR=$APP_DIR"
|
||||
echo "APP_USER=$APP_USER"
|
||||
echo
|
||||
|
||||
require_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
echo "Fehlend: $1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
require_cmd docker
|
||||
|
||||
if ! docker compose version >/dev/null 2>&1; then
|
||||
echo "docker compose Plugin fehlt."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "-- Docker Version --"
|
||||
docker --version
|
||||
docker compose version
|
||||
echo
|
||||
|
||||
echo "-- Verzeichnisse vorbereiten --"
|
||||
mkdir -p "$APP_DIR"/{data,public/uploads,logs,backups}
|
||||
chown -R "$APP_USER:$APP_GROUP" "$APP_DIR"
|
||||
chmod 755 "$APP_DIR"
|
||||
chmod 755 "$APP_DIR/data" "$APP_DIR/public" "$APP_DIR/public/uploads"
|
||||
echo "Ordner vorbereitet."
|
||||
echo
|
||||
|
||||
echo "-- Speichercheck --"
|
||||
df -h "$APP_DIR"
|
||||
echo
|
||||
|
||||
echo "-- Netzwerkcheck --"
|
||||
if ! docker network inspect hoerdle_default >/dev/null 2>&1; then
|
||||
echo "Docker-Netzwerk hoerdle_default fehlt, wird erstellt."
|
||||
docker network create hoerdle_default >/dev/null
|
||||
fi
|
||||
echo "Netzwerk hoerdle_default bereit."
|
||||
echo
|
||||
|
||||
echo "-- .env Vorlage --"
|
||||
if [ ! -f "$APP_DIR/.env" ]; then
|
||||
if [ -f "$APP_DIR/.env.proxmox.example" ]; then
|
||||
cp "$APP_DIR/.env.proxmox.example" "$APP_DIR/.env"
|
||||
echo ".env aus .env.proxmox.example erstellt."
|
||||
elif [ -f "$APP_DIR/.env.example" ]; then
|
||||
cp "$APP_DIR/.env.example" "$APP_DIR/.env"
|
||||
echo ".env aus .env.example erstellt."
|
||||
else
|
||||
echo "Keine Env-Vorlage gefunden. Bitte .env manuell erstellen."
|
||||
fi
|
||||
else
|
||||
echo ".env existiert bereits, kein Override."
|
||||
fi
|
||||
echo
|
||||
|
||||
echo "-- Abschluss --"
|
||||
echo "Target-LXC vorbereitet. Nächster Schritt: Daten-Vorabkopie aus der Quelle."
|
||||
Reference in New Issue
Block a user