n8n_node_librebooking/check-installation.sh

282 lines
7.6 KiB
Bash
Executable File

#!/bin/sh
# ============================================================================
# check-installation.sh - Debug-Skript für LibreBooking Node Installation
# Kann sowohl im Container als auch auf dem Host ausgeführt werden
# ============================================================================
echo "============================================"
echo " LibreBooking Node - Installation Check"
echo "============================================"
echo ""
echo "Ausgeführt: $(date)"
echo "Hostname: $(hostname)"
echo ""
# Status-Zähler
OK_COUNT=0
WARN_COUNT=0
ERROR_COUNT=0
ok() {
echo "[✓] $1"
OK_COUNT=$((OK_COUNT + 1))
}
warn() {
echo "[!] $1"
WARN_COUNT=$((WARN_COUNT + 1))
}
error() {
echo "[✗] $1"
ERROR_COUNT=$((ERROR_COUNT + 1))
}
info() {
echo "[i] $1"
}
echo "============================================"
echo " 1. UMGEBUNG"
echo "============================================"
# Node.js/npm prüfen
if command -v node >/dev/null 2>&1; then
ok "Node.js installiert: $(node --version)"
else
error "Node.js nicht gefunden"
fi
if command -v npm >/dev/null 2>&1; then
ok "npm installiert: $(npm --version)"
else
error "npm nicht gefunden"
fi
# Aktueller Benutzer
info "Aktueller Benutzer: $(whoami) (UID: $(id -u))"
echo ""
echo "============================================"
echo " 2. UMGEBUNGSVARIABLEN"
echo "============================================"
if [ -n "$N8N_CUSTOM_EXTENSIONS" ]; then
ok "N8N_CUSTOM_EXTENSIONS: $N8N_CUSTOM_EXTENSIONS"
else
warn "N8N_CUSTOM_EXTENSIONS nicht gesetzt"
info " Empfehlung: N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom"
fi
if [ "$N8N_COMMUNITY_NODES_ENABLED" = "true" ]; then
ok "N8N_COMMUNITY_NODES_ENABLED: true"
else
warn "N8N_COMMUNITY_NODES_ENABLED ist nicht 'true'"
info " Aktueller Wert: ${N8N_COMMUNITY_NODES_ENABLED:-<nicht gesetzt>}"
fi
# Weitere n8n Variablen
if [ -n "$N8N_LOG_LEVEL" ]; then
info "N8N_LOG_LEVEL: $N8N_LOG_LEVEL"
fi
echo ""
echo "============================================"
echo " 3. VERZEICHNISSE PRÜFEN"
echo "============================================"
# Mögliche Pfade
POSSIBLE_PATHS="
/home/node/.n8n/custom/n8n-nodes-librebooking
/home/node/.n8n/custom
/opt/n8n/custom-nodes
/data/custom-nodes
"
FOUND_PATH=""
for path in $POSSIBLE_PATHS; do
if [ -d "$path" ]; then
if [ -f "$path/package.json" ]; then
ok "Custom Node Verzeichnis: $path"
FOUND_PATH="$path"
break
elif [ -f "$path/n8n-nodes-librebooking/package.json" ]; then
ok "Custom Node Verzeichnis: $path/n8n-nodes-librebooking"
FOUND_PATH="$path/n8n-nodes-librebooking"
break
else
info "Verzeichnis existiert (ohne package.json): $path"
fi
fi
done
if [ -z "$FOUND_PATH" ]; then
error "Kein Custom Node Verzeichnis mit package.json gefunden!"
info " Geprüfte Pfade:"
for path in $POSSIBLE_PATHS; do
info " - $path"
done
fi
echo ""
echo "============================================"
echo " 4. NODE-DATEIEN PRÜFEN"
echo "============================================"
if [ -n "$FOUND_PATH" ]; then
cd "$FOUND_PATH" 2>/dev/null || true
# package.json
if [ -f "package.json" ]; then
ok "package.json vorhanden"
info " Name: $(grep '"name":' package.json | head -1 | cut -d'"' -f4)"
info " Version: $(grep '"version":' package.json | head -1 | cut -d'"' -f4)"
else
error "package.json fehlt"
fi
# node_modules
if [ -d "node_modules" ]; then
MODULE_COUNT=$(ls -1 node_modules 2>/dev/null | wc -l)
ok "node_modules vorhanden ($MODULE_COUNT Pakete)"
else
error "node_modules fehlt - führen Sie 'npm install' aus"
fi
# dist Verzeichnis
if [ -d "dist" ]; then
ok "dist/ Verzeichnis vorhanden"
# .node.js Dateien suchen
echo ""
info "Gefundene Node-Dateien:"
NODE_FILES=$(find dist -name "*.node.js" 2>/dev/null)
if [ -n "$NODE_FILES" ]; then
echo "$NODE_FILES" | while read -r f; do
if [ -f "$f" ]; then
ok " $f ($(ls -lh "$f" | awk '{print $5}'))"
fi
done
else
error " Keine .node.js Dateien gefunden!"
fi
# Credentials
echo ""
info "Gefundene Credential-Dateien:"
CRED_FILES=$(find dist -name "*.credentials.js" 2>/dev/null)
if [ -n "$CRED_FILES" ]; then
echo "$CRED_FILES" | while read -r f; do
if [ -f "$f" ]; then
ok " $f"
fi
done
else
error " Keine .credentials.js Dateien gefunden!"
fi
else
error "dist/ Verzeichnis fehlt - führen Sie 'npm run build' aus"
fi
# Icons
echo ""
info "Icon-Dateien:"
find . -name "*.svg" 2>/dev/null | while read -r f; do
info " $f"
done
fi
echo ""
echo "============================================"
echo " 5. BERECHTIGUNGEN"
echo "============================================"
# Funktion: Prüft ob ein Verzeichnis read-only ist
check_readonly() {
local dir="$1"
local test_file="$dir/.write_test_$$"
# Versuche eine Test-Datei zu erstellen
if touch "$test_file" 2>/dev/null; then
rm -f "$test_file" 2>/dev/null
return 0 # Schreibbar
else
return 1 # Read-only
fi
}
if [ -n "$FOUND_PATH" ]; then
# Prüfe Schreibrechte (inkl. read-only Volume Check)
if check_readonly "$FOUND_PATH"; then
ok "Schreibrechte auf $FOUND_PATH"
else
error "KEINE Schreibrechte auf $FOUND_PATH (Read-only Volume?)"
echo ""
info " PROBLEM: Das Verzeichnis ist möglicherweise als :ro gemountet."
info " LÖSUNG 1: Volume ohne :ro mounten:"
info " - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking"
info " LÖSUNG 2: Auf dem Host bauen mit ./build-on-host.sh"
info " Siehe: TROUBLESHOOTING.md"
echo ""
fi
# Besitzer prüfen
OWNER=$(ls -ld "$FOUND_PATH" | awk '{print $3}')
GROUP=$(ls -ld "$FOUND_PATH" | awk '{print $4}')
info "Besitzer: $OWNER:$GROUP"
# n8n läuft als node (UID 1000)
if [ "$(id -u)" = "1000" ]; then
ok "Läuft als UID 1000 (Standard für n8n)"
else
warn "Läuft nicht als UID 1000 (aktuell: $(id -u))"
fi
fi
echo ""
echo "============================================"
echo " ZUSAMMENFASSUNG"
echo "============================================"
echo ""
echo "Ergebnisse:"
echo " ✓ OK: $OK_COUNT"
echo " ! Warnung: $WARN_COUNT"
echo " ✗ Fehler: $ERROR_COUNT"
echo ""
if [ "$ERROR_COUNT" -gt 0 ]; then
echo "============================================"
echo " EMPFOHLENE AKTIONEN"
echo "============================================"
echo ""
if [ ! -d "node_modules" ] 2>/dev/null; then
echo "1. Dependencies installieren:"
echo " cd $FOUND_PATH && npm install"
echo ""
fi
if [ ! -d "dist" ] 2>/dev/null; then
echo "2. Node bauen:"
echo " cd $FOUND_PATH && npm run build"
echo ""
fi
echo "3. Container neustarten:"
echo " docker restart n8n"
echo ""
exit 1
elif [ "$WARN_COUNT" -gt 0 ]; then
echo "Status: TEILWEISE OK (Warnungen beachten)"
exit 0
else
echo "Status: ALLES OK ✓"
echo ""
echo "Falls der Node trotzdem nicht erscheint:"
echo " 1. Starten Sie n8n neu: docker restart n8n"
echo " 2. Prüfen Sie die Logs: docker logs n8n | grep -i libre"
exit 0
fi