Files
hx-ki.com2/com-stack/hxki_fix_n8n_perms.sh
2026-03-06 15:22:40 +00:00

46 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
C="hxki-n8n"
DEST="/home/node/.n8n"
echo "=== HXKI FIX n8n PERMS ==="
# Container muss existieren (auch wenn er crasht)
docker inspect "$C" >/dev/null 2>&1 || { echo "FEHLT: Container $C"; exit 1; }
# Mount-Quelle für /home/node/.n8n bestimmen
SRC="$(docker inspect "$C" --format '{{range .Mounts}}{{if eq .Destination "'"$DEST"'"}}{{println .Source}}{{end}}{{end}}' | head -n1)"
[[ -n "${SRC:-}" ]] || { echo "FEHLT: Kein Mount auf $DEST gefunden."; exit 1; }
echo "Mount: $SRC -> $DEST"
# Image bestimmen (für UID/GID, falls Container nicht exec-fähig ist)
IMG="$(docker inspect "$C" --format '{{.Config.Image}}')"
echo "Image: $IMG"
# UID/GID aus dem Image holen (funktioniert auch wenn Container restartet)
N8N_UID="$(docker run --rm --entrypoint sh "$IMG" -lc 'id -u node 2>/dev/null || id -u' )"
N8N_GID="$(docker run --rm --entrypoint sh "$IMG" -lc 'id -g node 2>/dev/null || id -g' )"
echo "Ziel-Owner: $N8N_UID:$N8N_GID"
# Container stoppen (damit keine Writes während chown)
echo "Stoppe $C..."
docker stop "$C" >/dev/null 2>&1 || true
# Rechte setzen
echo "Setze Owner/Rechte auf Host-Pfad: $SRC"
chown -R "$N8N_UID:$N8N_GID" "$SRC"
chmod -R u+rwX,g+rwX "$SRC"
# Container starten
echo "Starte $C..."
docker start "$C" >/dev/null 2>&1 || true
echo "Status:"
docker ps --format 'NAME={{.Names}} STATUS={{.Status}}' | grep "$C" || true
echo "Letzte Logs:"
docker logs --tail=30 "$C" || true
echo "=== ENDE ==="