#!/bin/bash set -euo pipefail # ================================ # HX-KI CADDY INSTALL (FALKENSTEIN) # ================================ # Macht: # - /opt/hx-caddy anlegen # - docker-compose.yml + Caddyfile schreiben # - Caddy per Docker starten # - n8n.hx-ki.com -> Nürnberg:5678 routen # Bricht lieber ab, wenn Ports 80/443 schon belegt sind. NBG_IP="46.224.17.53" # Nürnberg (Gehirn) N8N_DOMAIN="n8n.hx-ki.com" # Offizielle n8n-Subdomain CADDY_DIR="/opt/hx-caddy" echo "==> Prüfe, ob Docker installiert ist ..." if ! command -v docker >/dev/null 2>&1; then echo "Docker ist nicht installiert. Abbruch." exit 1 fi echo "==> Finde docker compose / docker-compose ..." if docker compose version >/dev/null 2>&1; then DC="docker compose" elif command -v docker-compose >/dev/null 2>&1; then DC="docker-compose" else echo "Weder 'docker compose' noch 'docker-compose' gefunden. Abbruch." exit 1 fi echo "==> Prüfe, ob Ports 80/443 bereits belegt sind ..." if ss -tulpn 2>/dev/null | grep -qE ':(80|443)\s'; then echo "ACHTUNG: Ports 80 oder 443 sind bereits in Benutzung." echo "Ich mache NICHTS, um nichts zu zerschießen." echo ss -tulpn 2>/dev/null | grep -E ':(80|443)\s' || true echo echo "Bitte zuerst klären, welcher Dienst 80/443 nutzt (z.B. Mailcow/nginx)," echo "und dann entscheiden, ob Caddy davor/danach stehen soll." exit 1 fi echo "==> Erstelle Verzeichnis: $CADDY_DIR ..." mkdir -p "$CADDY_DIR" cd "$CADDY_DIR" echo "==> Backup vorhandener Dateien (falls vorhanden) ..." for f in docker-compose.yml Caddyfile; do if [ -f "$f" ]; then cp "$f" "${f}.bak.$(date +%F-%H%M%S)" echo " Backup von $f -> ${f}.bak.$(date +%F-%H%M%S)" fi done echo "==> Schreibe docker-compose.yml für Caddy ..." cat > docker-compose.yml < Schreibe Caddyfile (n8n-Proxy) ..." cat > Caddyfile < Starte Caddy über Docker ..." $DC up -d echo "==> Laufende Caddy-Container:" docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep caddy || true echo echo "==================================================" echo "Caddy läuft jetzt (sofern keine Fehler gemeldet wurden)." echo echo "Wenn DNS korrekt gesetzt ist, solltest du n8n erreichen unter:" echo " https://${N8N_DOMAIN}" echo echo "WICHTIG:" echo "- Nürnberg (46.224.17.53:5678) liefert weiterhin deinen alten n8n-Workflow." echo "- Wir haben NICHTS auf Nürnberg/Helsinki verändert." echo "- Das hier ist nur der Türsteher auf Falkenstein." echo "=================================================="