107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/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 <<EOF
|
|
services:
|
|
caddy:
|
|
image: caddy:2
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
|
|
volumes:
|
|
caddy_data:
|
|
caddy_config:
|
|
EOF
|
|
|
|
echo "==> Schreibe Caddyfile (n8n-Proxy) ..."
|
|
cat > Caddyfile <<EOF
|
|
{
|
|
# Optional: E-Mail für Let's Encrypt
|
|
email admin@hx-ki.com
|
|
}
|
|
|
|
${N8N_DOMAIN} {
|
|
reverse_proxy ${NBG_IP}:5678
|
|
}
|
|
EOF
|
|
|
|
echo "==> 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 "=================================================="
|