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.
73 lines
1.8 KiB
Bash
Executable File
73 lines
1.8 KiB
Bash
Executable File
#!/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."
|