- Add credentials management system with automatic saving and updates - Add upload form URL to JSON output - Add Ollama model information to JSON output - Implement credential update system (update_credentials.sh) - Implement credential save system (save_credentials.sh) - Add comprehensive test suites (infrastructure, n8n, PostgREST, complete system) - Add workflow auto-reload system with systemd service - Add detailed documentation (CREDENTIALS_MANAGEMENT.md, TEST_REPORT.md, VERIFICATION_SUMMARY.md) - Improve n8n setup with robust API-based workflow import - Add .gitignore for credentials directory - All tests passing (40+ test cases) Key Features: - Credentials automatically saved to credentials/<hostname>.json - Update Ollama URL from IP to hostname without container restart - Comprehensive testing with 4 test suites - Full documentation and examples - Production-ready system
7.2 KiB
n8n Workflow Auto-Reload bei LXC-Neustart
Übersicht
Diese Funktion sorgt dafür, dass der n8n-Workflow bei jedem Neustart des LXC-Containers automatisch neu geladen wird. Dies ist nützlich, um sicherzustellen, dass der Workflow immer im gewünschten Zustand ist, auch nach Updates oder Änderungen am Container.
Funktionsweise
Komponenten
-
Systemd-Service (
/etc/systemd/system/n8n-workflow-reload.service)- Wird beim LXC-Start automatisch ausgeführt
- Wartet auf Docker und n8n-Container
- Führt das Reload-Script aus
-
Reload-Script (
/opt/customer-stack/reload-workflow.sh)- Liest Konfiguration aus
.env - Wartet bis n8n API bereit ist
- Sucht nach bestehendem Workflow
- Löscht alten Workflow (falls vorhanden)
- Importiert Workflow aus Template
- Aktiviert den Workflow
- Loggt alle Aktionen
- Liest Konfiguration aus
-
Workflow-Template (
/opt/customer-stack/workflow-template.json)- Persistente Kopie des Workflows
- Wird bei Installation erstellt
- Wird bei jedem Neustart verwendet
Ablauf beim LXC-Neustart
LXC startet
↓
Docker startet
↓
n8n-Container startet
↓
Systemd-Service startet (nach 10s Verzögerung)
↓
Reload-Script wird ausgeführt
↓
1. Lade Konfiguration aus .env
2. Warte auf n8n API (max. 60s)
3. Login bei n8n
4. Suche nach bestehendem Workflow "RAG KI-Bot (PGVector)"
5. Lösche alten Workflow (falls vorhanden)
6. Suche nach Credentials (PostgreSQL, Ollama)
7. Verarbeite Workflow-Template (ersetze Credential-IDs)
8. Importiere neuen Workflow
9. Aktiviere Workflow
↓
Workflow ist bereit
Installation
Die Auto-Reload-Funktion wird automatisch bei der Installation konfiguriert:
bash install.sh --debug
Was wird installiert?
- Workflow-Template:
/opt/customer-stack/workflow-template.json - Reload-Script:
/opt/customer-stack/reload-workflow.sh - Systemd-Service:
/etc/systemd/system/n8n-workflow-reload.service - Log-Verzeichnis:
/opt/customer-stack/logs/
Logging
Alle Reload-Vorgänge werden geloggt:
- Log-Datei:
/opt/customer-stack/logs/workflow-reload.log - Systemd-Journal:
journalctl -u n8n-workflow-reload.service
Log-Beispiel
[2024-01-15 10:30:00] =========================================
[2024-01-15 10:30:00] n8n Workflow Auto-Reload gestartet
[2024-01-15 10:30:00] =========================================
[2024-01-15 10:30:00] Konfiguration geladen aus /opt/customer-stack/.env
[2024-01-15 10:30:00] Warte auf n8n API...
[2024-01-15 10:30:05] n8n API ist bereit
[2024-01-15 10:30:05] Login bei n8n als admin@userman.de...
[2024-01-15 10:30:06] Login erfolgreich
[2024-01-15 10:30:06] Suche nach Workflow 'RAG KI-Bot (PGVector)'...
[2024-01-15 10:30:06] Workflow gefunden: ID=abc123
[2024-01-15 10:30:06] Bestehender Workflow gefunden, wird gelöscht...
[2024-01-15 10:30:07] Workflow abc123 gelöscht
[2024-01-15 10:30:07] Suche nach bestehenden Credentials...
[2024-01-15 10:30:07] Suche nach Credential 'PostgreSQL (local)' (Typ: postgres)...
[2024-01-15 10:30:08] Credential gefunden: ID=def456
[2024-01-15 10:30:08] Suche nach Credential 'Ollama (local)' (Typ: ollamaApi)...
[2024-01-15 10:30:09] Credential gefunden: ID=ghi789
[2024-01-15 10:30:09] Verarbeite Workflow-Template...
[2024-01-15 10:30:10] Workflow-Template erfolgreich verarbeitet
[2024-01-15 10:30:10] Importiere Workflow aus /tmp/workflow_processed.json...
[2024-01-15 10:30:11] Workflow importiert: ID=jkl012, Version=v1
[2024-01-15 10:30:11] Aktiviere Workflow jkl012...
[2024-01-15 10:30:12] Workflow jkl012 erfolgreich aktiviert
[2024-01-15 10:30:12] =========================================
[2024-01-15 10:30:12] Workflow-Reload erfolgreich abgeschlossen
[2024-01-15 10:30:12] Workflow-ID: jkl012
[2024-01-15 10:30:12] =========================================
Manuelles Testen
Service-Status prüfen
# Im LXC-Container
systemctl status n8n-workflow-reload.service
Manuelles Reload auslösen
# Im LXC-Container
/opt/customer-stack/reload-workflow.sh
Logs anzeigen
# Log-Datei
cat /opt/customer-stack/logs/workflow-reload.log
# Systemd-Journal
journalctl -u n8n-workflow-reload.service -f
Service neu starten
# Im LXC-Container
systemctl restart n8n-workflow-reload.service
Fehlerbehandlung
Häufige Probleme
-
n8n API nicht erreichbar
- Prüfen:
docker ps- läuft n8n-Container? - Prüfen:
curl http://127.0.0.1:5678/rest/settings - Lösung: Warten oder Docker-Container neu starten
- Prüfen:
-
Login fehlgeschlagen
- Prüfen: Sind die Credentials in
.envkorrekt? - Prüfen:
cat /opt/customer-stack/.env - Lösung: Credentials korrigieren
- Prüfen: Sind die Credentials in
-
Credentials nicht gefunden
- Prüfen: Existieren die Credentials in n8n?
- Lösung: Credentials manuell in n8n erstellen
-
Workflow-Template nicht gefunden
- Prüfen:
ls -la /opt/customer-stack/workflow-template.json - Lösung: Template aus Backup wiederherstellen
- Prüfen:
Service deaktivieren
Falls Sie die Auto-Reload-Funktion deaktivieren möchten:
# Im LXC-Container
systemctl disable n8n-workflow-reload.service
systemctl stop n8n-workflow-reload.service
Service wieder aktivieren
# Im LXC-Container
systemctl enable n8n-workflow-reload.service
systemctl start n8n-workflow-reload.service
Technische Details
Systemd-Service-Konfiguration
[Unit]
Description=n8n Workflow Auto-Reload Service
After=docker.service
Wants=docker.service
Requires=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/bin/sleep 10
ExecStart=/bin/bash /opt/customer-stack/reload-workflow.sh
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
Workflow-Verarbeitung
Das Reload-Script verwendet Python, um das Workflow-Template zu verarbeiten:
- Entfernt Felder:
id,versionId,meta,tags,active,pinData - Ersetzt PostgreSQL Credential-IDs
- Ersetzt Ollama Credential-IDs
- Schreibt verarbeitetes JSON nach
/tmp/workflow_processed.json
API-Endpunkte
- Login:
POST /rest/login - Workflows auflisten:
GET /rest/workflows - Workflow löschen:
DELETE /rest/workflows/{id} - Workflow importieren:
POST /rest/workflows - Workflow aktivieren:
POST /rest/workflows/{id}/activate - Credentials auflisten:
GET /rest/credentials
Sicherheit
- Credentials werden aus
.envgelesen (nicht im Script hardcoded) - Session-Cookies werden nach Verwendung gelöscht
- Temporäre Dateien werden aufgeräumt
- Logs enthalten keine Passwörter
Wartung
Workflow-Template aktualisieren
Wenn Sie den Workflow ändern möchten:
- Exportieren Sie den Workflow aus n8n UI
- Kopieren Sie die JSON-Datei nach
/opt/customer-stack/workflow-template.json - Beim nächsten Neustart wird der neue Workflow geladen
Backup
Wichtige Dateien für Backup:
/opt/customer-stack/workflow-template.json/opt/customer-stack/.env/opt/customer-stack/logs/workflow-reload.log
Support
Bei Problemen:
- Prüfen Sie die Logs:
/opt/customer-stack/logs/workflow-reload.log - Prüfen Sie den Service-Status:
systemctl status n8n-workflow-reload.service - Führen Sie das Script manuell aus:
/opt/customer-stack/reload-workflow.sh - Prüfen Sie die n8n-Container-Logs:
docker logs n8n