#!/usr/bin/env bash set -euo pipefail C="hxki-n8n" MOUNT_SRC="/data/HXKI_WORKSPACE/router" CFG="${MOUNT_SRC}/config" TS="$(date +%Y%m%d-%H%M%S)" echo "=== FIX n8n config JSON ===" docker inspect "$C" >/dev/null 2>&1 || { echo "FEHLT: $C"; exit 1; } [ -d "$MOUNT_SRC" ] || { echo "FEHLT: $MOUNT_SRC"; exit 1; } echo "[1] Stoppe $C" docker stop "$C" >/dev/null || true echo "[2] Backup config (falls vorhanden)" if [ -f "$CFG" ]; then cp -a "$CFG" "${CFG}.bak.${TS}" echo "Backup: ${CFG}.bak.${TS}" else echo "Hinweis: config existiert noch nicht -> wird neu erzeugt." fi echo "[3] Schreibe minimale gültige JSON-config" # Minimal gültiges JSON, n8n ergänzt/überschreibt beim Start seine Keys. # Wichtig: NICHTS anderes in die Datei schreiben. printf '{\n "encryptionKey": ""\n}\n' > "$CFG" echo "[4] Setze Rechte auf node (1000:1000)" chown 1000:1000 "$CFG" chmod 600 "$CFG" echo "[5] Starte $C" docker start "$C" >/dev/null echo "[6] Warte bis n8n im Container lauscht (max 60s)" for i in $(seq 1 60); do # Container muss laufen if ! docker ps --format '{{.Names}}' | grep -q "^${C}$"; then sleep 1; continue fi # Port check if docker exec "$C" sh -lc 'wget -qO- http://127.0.0.1:5678/ >/dev/null' >/dev/null 2>&1; then echo "OK: n8n lauscht." exit 0 fi sleep 1 done echo "FAIL: n8n nach 60s nicht healthy. Logs:" docker logs --tail=80 "$C" || true exit 1