# Troubleshooting Häufige Probleme und deren Lösungen beim Customer Installer System. ## 🔍 Diagnose-Tools ### Schnell-Diagnose ```bash # Container-Status pct status # Docker-Status pct exec -- systemctl status docker # Container-Liste pct exec -- docker ps -a # Logs anzeigen tail -f logs/sb-.log ``` ### Vollständige Diagnose ```bash # Test-Suite ausführen ./test_complete_system.sh ``` ## 🚨 Häufige Probleme ### 1. Installation schlägt fehl #### Problem: Template-Download fehlgeschlagen ``` ERROR: Failed to download template ``` **Lösung:** ```bash # Manuell Template herunterladen pveam update pveam download local debian-12-standard_12.12-1_amd64.tar.zst # Installation erneut versuchen ./install.sh --storage local-zfs --bridge vmbr0 --ip dhcp --vlan 90 ``` #### Problem: Storage nicht gefunden ``` ERROR: Storage 'local-zfs' not found ``` **Lösung:** ```bash # Verfügbare Storages auflisten pvesm status # Korrekten Storage verwenden ./install.sh --storage local-lvm --bridge vmbr0 --ip dhcp --vlan 90 ``` #### Problem: Bridge nicht gefunden ``` ERROR: Bridge 'vmbr0' not found ``` **Lösung:** ```bash # Verfügbare Bridges auflisten ip link show | grep vmbr # Korrekte Bridge verwenden ./install.sh --storage local-zfs --bridge vmbr1 --ip dhcp --vlan 90 ``` ### 2. Container startet nicht #### Problem: Container bleibt im Status "stopped" ```bash # Status prüfen pct status # Output: stopped ``` **Lösung:** ```bash # Container-Logs prüfen journalctl -u pve-container@ -n 50 # Container manuell starten pct start # Bei Fehlern: Container-Konfiguration prüfen pct config ``` #### Problem: "Failed to start container" **Lösung:** ```bash # AppArmor-Profil prüfen aa-status | grep lxc # Container im privilegierten Modus starten (nur für Debugging) pct set --unprivileged 0 pct start # Nach Debugging wieder unprivileged setzen pct stop pct set --unprivileged 1 pct start ``` ### 3. Docker-Probleme #### Problem: Docker startet nicht ```bash # Docker-Status prüfen pct exec -- systemctl status docker # Output: failed ``` **Lösung:** ```bash # Docker-Logs prüfen pct exec -- journalctl -u docker -n 50 # Docker neu starten pct exec -- systemctl restart docker # Docker neu installieren (falls nötig) pct exec -- bash -c "curl -fsSL https://get.docker.com | sh" ``` #### Problem: Docker Compose nicht gefunden ``` docker: 'compose' is not a docker command ``` **Lösung:** ```bash # Docker Compose Plugin installieren pct exec -- apt-get update pct exec -- apt-get install -y docker-compose-plugin # Version prüfen pct exec -- docker compose version ``` ### 4. Container-Probleme #### Problem: PostgreSQL startet nicht ```bash # Container-Status prüfen pct exec -- docker ps -a | grep postgres # Output: Exited (1) ``` **Lösung:** ```bash # Logs prüfen pct exec -- docker logs customer-postgres # Häufige Ursachen: # 1. Volume-Permissions pct exec -- chown -R 999:999 /opt/customer-stack/volumes/postgres-data # 2. Korrupte Daten pct exec -- rm -rf /opt/customer-stack/volumes/postgres-data/* pct exec -- docker compose -f /opt/customer-stack/docker-compose.yml up -d postgres # 3. Port bereits belegt pct exec -- netstat -tlnp | grep 5432 ``` #### Problem: n8n startet nicht ```bash # Container-Status prüfen pct exec -- docker ps -a | grep n8n # Output: Exited (1) ``` **Lösung:** ```bash # Logs prüfen pct exec -- docker logs n8n # Häufige Ursachen: # 1. Datenbank nicht erreichbar pct exec -- docker exec n8n nc -zv postgres 5432 # 2. Volume-Permissions pct exec -- chown -R 1000:1000 /opt/customer-stack/volumes/n8n-data # 3. Environment-Variablen fehlen pct exec -- cat /opt/customer-stack/.env | grep N8N_ENCRYPTION_KEY # Container neu starten pct exec -- docker compose -f /opt/customer-stack/docker-compose.yml restart n8n ``` #### Problem: PostgREST startet nicht ```bash # Container-Status prüfen pct exec -- docker ps -a | grep postgrest # Output: Exited (1) ``` **Lösung:** ```bash # Logs prüfen pct exec -- docker logs customer-postgrest # Häufige Ursachen: # 1. PostgreSQL nicht erreichbar pct exec -- docker exec customer-postgrest nc -zv postgres 5432 # 2. JWT-Secret fehlt pct exec -- cat /opt/customer-stack/.env | grep PGRST_JWT_SECRET # 3. Schema nicht gefunden pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "\dt" # Container neu starten pct exec -- docker compose -f /opt/customer-stack/docker-compose.yml restart postgrest ``` ### 5. Netzwerk-Probleme #### Problem: Container nicht erreichbar ```bash # Ping-Test ping # Output: Destination Host Unreachable ``` **Lösung:** ```bash # 1. IP-Adresse prüfen pct exec -- ip addr show # 2. Routing prüfen ip route | grep # 3. Firewall prüfen iptables -L -n | grep # 4. VLAN-Konfiguration prüfen pct config | grep net0 ``` #### Problem: Ports nicht erreichbar ```bash # Port-Test curl http://:5678/ # Output: Connection refused ``` **Lösung:** ```bash # 1. Container läuft? pct exec -- docker ps | grep n8n # 2. Port-Binding prüfen pct exec -- netstat -tlnp | grep 5678 # 3. Docker-Netzwerk prüfen pct exec -- docker network inspect customer-stack_customer-net # 4. Firewall im Container prüfen pct exec -- iptables -L -n ``` ### 6. Datenbank-Probleme #### Problem: pgvector Extension fehlt ```bash # Extension prüfen pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "SELECT * FROM pg_extension WHERE extname='vector';" # Output: (0 rows) ``` **Lösung:** ```bash # Extension manuell installieren pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "CREATE EXTENSION IF NOT EXISTS vector;" # Version prüfen pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "SELECT extversion FROM pg_extension WHERE extname='vector';" ``` #### Problem: Tabellen fehlen ```bash # Tabellen prüfen pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "\dt" # Output: Did not find any relations ``` **Lösung:** ```bash # Schema manuell initialisieren pct exec -- docker exec -i customer-postgres \ psql -U customer -d customer < /opt/customer-stack/init_pgvector.sql # Oder SQL direkt ausführen pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c " CREATE TABLE IF NOT EXISTS documents ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), content TEXT NOT NULL, metadata JSONB, embedding vector(384), created_at TIMESTAMPTZ DEFAULT NOW() ); " ``` ### 7. n8n-Probleme #### Problem: n8n Login funktioniert nicht ```bash # Login testen curl -X POST http://:5678/rest/login \ -H "Content-Type: application/json" \ -d '{"emailOrLdapLoginId":"admin@userman.de","password":"..."}' # Output: {"code":"invalid_credentials"} ``` **Lösung:** ```bash # 1. Credentials aus Datei laden cat credentials/sb-.json | jq -r '.n8n' # 2. Owner neu erstellen pct exec -- docker exec n8n \ n8n user-management:reset --email=admin@userman.de --password=NewPassword123 # 3. n8n neu starten pct exec -- docker compose -f /opt/customer-stack/docker-compose.yml restart n8n ``` #### Problem: Workflow nicht gefunden ```bash # Workflows auflisten curl -s http://:5678/rest/workflows \ -H "Cookie: ..." | jq '.data | length' # Output: 0 ``` **Lösung:** ```bash # Workflow manuell importieren pct exec -- bash /opt/customer-stack/reload-workflow.sh # Oder Workflow-Reload-Service ausführen pct exec -- systemctl start n8n-workflow-reload.service # Status prüfen pct exec -- systemctl status n8n-workflow-reload.service ``` #### Problem: Credentials fehlen ```bash # Credentials auflisten curl -s http://:5678/rest/credentials \ -H "Cookie: ..." | jq '.data | length' # Output: 0 ``` **Lösung:** ```bash # Credentials manuell erstellen via n8n UI # Oder update_credentials.sh verwenden ./update_credentials.sh \ --ctid \ --ollama-url http://192.168.45.3:11434 ``` ### 8. API-Probleme #### Problem: PostgREST API gibt 401 zurück ```bash curl http://:3000/documents # Output: {"code":"PGRST301","message":"JWT invalid"} ``` **Lösung:** ```bash # 1. API-Key verwenden ANON_KEY=$(cat credentials/sb-*.json | jq -r '.supabase.anon_key') curl http://:3000/documents \ -H "apikey: ${ANON_KEY}" \ -H "Authorization: Bearer ${ANON_KEY}" # 2. JWT-Secret prüfen pct exec -- cat /opt/customer-stack/.env | grep PGRST_JWT_SECRET # 3. PostgREST neu starten pct exec -- docker compose -f /opt/customer-stack/docker-compose.yml restart postgrest ``` #### Problem: Webhook gibt 404 zurück ```bash curl -X POST http://:5678/webhook/rag-chat-webhook/chat # Output: 404 Not Found ``` **Lösung:** ```bash # 1. Workflow aktiv? curl -s http://:5678/rest/workflows \ -H "Cookie: ..." | jq '.data[] | select(.name=="RAG KI-Bot") | .active' # 2. Workflow aktivieren # Via n8n UI oder API # 3. Webhook-URL prüfen curl -s http://:5678/rest/workflows \ -H "Cookie: ..." | jq '.data[] | select(.name=="RAG KI-Bot") | .nodes[] | select(.type=="n8n-nodes-base.webhook")' ``` ### 9. Ollama-Integration #### Problem: Ollama nicht erreichbar ```bash curl http://192.168.45.3:11434/api/tags # Output: Connection refused ``` **Lösung:** ```bash # 1. Ollama-Server prüfen ssh user@192.168.45.3 "systemctl status ollama" # 2. Firewall prüfen ssh user@192.168.45.3 "iptables -L -n | grep 11434" # 3. Alternative URL verwenden ./update_credentials.sh \ --ctid \ --ollama-url http://ollama.local:11434 ``` #### Problem: Modell nicht gefunden ```bash curl -X POST http://192.168.45.3:11434/api/generate \ -d '{"model":"ministral-3:3b","prompt":"test"}' # Output: {"error":"model not found"} ``` **Lösung:** ```bash # Modell herunterladen ssh user@192.168.45.3 "ollama pull ministral-3:3b" # Verfügbare Modelle auflisten curl http://192.168.45.3:11434/api/tags ``` ### 10. Performance-Probleme #### Problem: Langsame Vektor-Suche **Lösung:** ```bash # Index prüfen pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "\d documents" # Index neu erstellen pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c " DROP INDEX IF EXISTS documents_embedding_idx; CREATE INDEX documents_embedding_idx ON documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100); " # Statistiken aktualisieren pct exec -- docker exec customer-postgres \ psql -U customer -d customer -c "ANALYZE documents;" ``` #### Problem: Hohe Memory-Nutzung **Lösung:** ```bash # Memory-Nutzung prüfen pct exec -- free -m # Container-Limits setzen pct set --memory 8192 # Docker-Container-Limits pct exec -- docker update --memory 2g customer-postgres pct exec -- docker update --memory 2g n8n ``` ## 🔧 Erweiterte Diagnose ### Log-Analyse ```bash # Alle Logs sammeln mkdir -p debug-logs pct exec -- docker logs customer-postgres > debug-logs/postgres.log 2>&1 pct exec -- docker logs customer-postgrest > debug-logs/postgrest.log 2>&1 pct exec -- docker logs n8n > debug-logs/n8n.log 2>&1 pct exec -- journalctl -u docker > debug-logs/docker.log 2>&1 # Logs analysieren grep -i error debug-logs/*.log grep -i warning debug-logs/*.log ``` ### Netzwerk-Diagnose ```bash # Vollständige Netzwerk-Analyse pct exec -- ip addr show pct exec -- ip route show pct exec -- netstat -tlnp pct exec -- docker network ls pct exec -- docker network inspect customer-stack_customer-net ``` ### Performance-Analyse ```bash # CPU-Nutzung pct exec -- top -b -n 1 # Disk I/O pct exec -- iostat -x 1 5 # Netzwerk-Traffic pct exec -- iftop -t -s 5 ``` ## 📚 Weiterführende Hilfe - [Installation](Installation.md) - Installations-Anleitung - [Testing](Testing.md) - Test-Suites - [Monitoring](Monitoring.md) - Überwachung - [Architecture](Architecture.md) - System-Architektur --- **Support-Kontakt:** Bei persistierenden Problemen erstellen Sie bitte ein Issue im Repository mit: 1. Fehlerbeschreibung 2. Log-Dateien 3. System-Informationen 4. Reproduktionsschritte