# Docker-Integration für LibreBooking n8n Node Diese Anleitung beschreibt die Integration des LibreBooking Nodes in eine **bestehende n8n Docker-Installation**. ## Inhaltsverzeichnis - [Voraussetzungen](#voraussetzungen) - [Methode 1: Automatische Integration mit Skript](#methode-1-automatische-integration-mit-skript) - [Methode 2: Manuelle Integration](#methode-2-manuelle-integration) - [Methode 3: Integration in bestehende docker-compose.yml](#methode-3-integration-in-bestehende-docker-composeyml) - [Methode 4: Dockerfile erweitern](#methode-4-dockerfile-erweitern) - [Verifizierung der Installation](#verifizierung-der-installation) - [Troubleshooting](#troubleshooting) - [Updates und Wartung](#updates-und-wartung) --- ## Voraussetzungen ### System-Anforderungen - **Docker** Version 20.10 oder höher - **Docker Compose** v2.0+ (Plugin) oder docker-compose v1.29+ - **Laufende n8n Docker-Installation** - **Zugriff auf das Dateisystem** des Docker-Hosts ### Prüfen der Voraussetzungen ```bash # Docker Version prüfen docker --version # Docker version 24.0.x, build xxxxx # Docker Compose Version prüfen docker compose version # Docker Compose version v2.x.x # Oder für ältere Versionen: docker-compose --version # docker-compose version 1.29.x, build xxxxx # n8n Container Status prüfen docker ps | grep n8n ``` --- ## Methode 1: Automatische Integration mit Skript Die einfachste Methode für die Integration in eine bestehende Installation. ### Schritt 1: Skript ausführbar machen ```bash chmod +x install-docker.sh ``` ### Schritt 2: Skript ausführen ```bash # Im aktuellen Verzeichnis (wenn dort n8n läuft) ./install-docker.sh # Oder mit Pfad zur n8n Installation ./install-docker.sh -p /pfad/zu/n8n # Mit Überschreiben bestehender Dateien ./install-docker.sh -f -p /pfad/zu/n8n ``` ### Skript-Optionen | Option | Beschreibung | |--------|--------------| | `-p, --path PATH` | Pfad zur n8n Docker-Installation | | `-b, --build` | Node im Container bauen | | `-f, --force` | Bestehende Installation überschreiben | | `-h, --help` | Hilfe anzeigen | ### Was das Skript tut 1. Prüft Docker und Docker Compose Installation 2. Prüft ob n8n Container läuft 3. Kopiert `custom-nodes/` Verzeichnis 4. Erstellt/aktualisiert `docker-compose.override.yml` 5. Setzt korrekte Berechtigungen (UID 1000) 6. Startet Container bei Bedarf neu --- ## Methode 2: Manuelle Integration Für mehr Kontrolle oder spezielle Setups. ### Schritt 1: Custom Nodes Verzeichnis kopieren ```bash # Zum n8n Verzeichnis wechseln cd /pfad/zu/ihrer/n8n/installation # Custom Nodes kopieren cp -r /pfad/zu/librebooking_n8n_node/custom-nodes ./custom-nodes ``` ### Schritt 2: Dependencies installieren und bauen ```bash cd custom-nodes # Node.js Dependencies installieren npm install # TypeScript kompilieren npm run build ``` ### Schritt 3: docker-compose.override.yml erstellen Erstellen Sie eine `docker-compose.override.yml` Datei: ```yaml version: '3.8' services: n8n: volumes: # LibreBooking Custom Node einbinden - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking:ro environment: # Custom Nodes Pfad - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom # Community Nodes aktivieren - N8N_COMMUNITY_NODES_ENABLED=true ``` ### Schritt 4: Berechtigungen setzen ```bash # n8n läuft als "node" User mit UID 1000 sudo chown -R 1000:1000 custom-nodes/ ``` ### Schritt 5: Container neustarten ```bash # Mit docker-compose docker-compose restart n8n # Oder mit Docker Compose Plugin docker compose restart n8n # Bei Problemen: Container komplett neu erstellen docker-compose down && docker-compose up -d ``` --- ## Methode 3: Integration in bestehende docker-compose.yml Wenn Sie keine Override-Datei verwenden möchten. ### Bestehende docker-compose.yml erweitern Fügen Sie folgende Einträge zu Ihrem n8n Service hinzu: ```yaml version: '3.8' services: n8n: image: n8nio/n8n:latest # ... Ihre bestehende Konfiguration ... volumes: # Bestehende Volumes beibehalten - n8n_data:/home/node/.n8n # LibreBooking Node hinzufügen - ./custom-nodes:/home/node/.n8n/custom/n8n-nodes-librebooking:ro environment: # Bestehende Umgebungsvariablen beibehalten - N8N_HOST=0.0.0.0 - N8N_PORT=5678 # Custom Nodes Konfiguration hinzufügen - N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom - N8N_COMMUNITY_NODES_ENABLED=true ``` ### Vollständiges Beispiel Siehe `docker-compose.example.yml` für eine vollständige Konfiguration mit: - PostgreSQL Datenbank (optional) - Redis Queue (optional) - Health Checks - Alle Umgebungsvariablen --- ## Methode 4: Dockerfile erweitern Für produktive Deployments oder wenn Sie ein eigenes Image benötigen. ### Einfaches Dockerfile ```dockerfile # Dockerfile.custom-nodes ARG N8N_VERSION=latest FROM n8nio/n8n:${N8N_VERSION} USER root # Custom Node Verzeichnis erstellen RUN mkdir -p /home/node/.n8n/custom/n8n-nodes-librebooking && \ chown -R node:node /home/node/.n8n/custom WORKDIR /home/node/.n8n/custom/n8n-nodes-librebooking # Dateien kopieren COPY --chown=node:node custom-nodes/ ./ # Dependencies installieren und bauen RUN npm install && npm run build USER node WORKDIR /home/node ENV N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom ENV N8N_COMMUNITY_NODES_ENABLED=true EXPOSE 5678 CMD ["n8n", "start"] ``` ### Image bauen und verwenden ```bash # Image bauen docker build -f Dockerfile.custom-nodes -t n8n-librebooking . # Container starten docker run -d \ --name n8n \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n \ n8n-librebooking ``` ### Mit docker-compose ```yaml version: '3.8' services: n8n: build: context: . dockerfile: Dockerfile.custom-nodes args: N8N_VERSION: latest # ... weitere Konfiguration ``` ### Multi-Stage Build (Optimiert) ```dockerfile # Build Stage FROM node:18-alpine AS builder WORKDIR /build COPY custom-nodes/ ./ RUN npm install && npm run build # Production Stage ARG N8N_VERSION=latest FROM n8nio/n8n:${N8N_VERSION} USER root RUN mkdir -p /home/node/.n8n/custom/n8n-nodes-librebooking && \ chown -R node:node /home/node/.n8n/custom # Nur gebaute Dateien kopieren COPY --from=builder --chown=node:node /build/dist /home/node/.n8n/custom/n8n-nodes-librebooking/dist COPY --from=builder --chown=node:node /build/package.json /home/node/.n8n/custom/n8n-nodes-librebooking/ USER node ENV N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom ENV N8N_COMMUNITY_NODES_ENABLED=true CMD ["n8n", "start"] ``` --- ## Verifizierung der Installation ### 1. Container-Logs prüfen ```bash # Logs anzeigen docker logs n8n 2>&1 | grep -i "librebooking\|custom\|node" # Live Logs verfolgen docker logs -f n8n ``` ### 2. In n8n prüfen 1. Öffnen Sie n8n im Browser (z.B. `http://localhost:5678`) 2. Erstellen Sie einen neuen Workflow 3. Fügen Sie einen neuen Node hinzu 4. Suchen Sie nach "LibreBooking" - zwei Nodes sollten erscheinen: - **LibreBooking** - Hauptnode für alle Operationen - **LibreBooking Trigger** - Trigger für neue Reservierungen ### 3. Node-Verzeichnis im Container prüfen ```bash # In Container einloggen docker exec -it n8n /bin/sh # Custom Nodes Verzeichnis prüfen ls -la /home/node/.n8n/custom/ # LibreBooking Node prüfen ls -la /home/node/.n8n/custom/n8n-nodes-librebooking/dist/ ``` ### 4. Umgebungsvariablen prüfen ```bash docker exec n8n env | grep N8N_CUSTOM # N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/custom docker exec n8n env | grep COMMUNITY # N8N_COMMUNITY_NODES_ENABLED=true ``` --- ## Troubleshooting ### Problem: Node wird nicht erkannt **Symptom:** LibreBooking Node erscheint nicht in der Node-Suche **Lösungen:** 1. **Pfad prüfen:** ```bash docker exec n8n ls -la /home/node/.n8n/custom/n8n-nodes-librebooking/ ``` 2. **Umgebungsvariablen prüfen:** ```bash docker exec n8n env | grep -E "N8N_CUSTOM|COMMUNITY" ``` 3. **Container komplett neu starten:** ```bash docker-compose down docker-compose up -d ``` 4. **Logs auf Fehler prüfen:** ```bash docker logs n8n 2>&1 | grep -i error ``` ### Problem: Permissions-Fehler **Symptom:** `EACCES: permission denied` oder ähnliche Fehler **Lösungen:** 1. **Berechtigungen setzen:** ```bash sudo chown -R 1000:1000 custom-nodes/ sudo chmod -R 755 custom-nodes/ ``` 2. **Volume mit korrektem User mounten:** ```yaml services: n8n: user: "1000:1000" ``` 3. **SELinux Context (falls aktiviert):** ```bash sudo chcon -R -t svirt_sandbox_file_t custom-nodes/ ``` ### Problem: Container startet nicht **Symptom:** Container crashed oder startet nicht **Lösungen:** 1. **Logs prüfen:** ```bash docker logs n8n ``` 2. **Ohne Override starten (zum Testen):** ```bash mv docker-compose.override.yml docker-compose.override.yml.bak docker-compose up -d ``` 3. **Volume-Konflikte prüfen:** ```bash docker volume ls docker volume inspect n8n_data ``` ### Problem: Node wird geladen aber Fehler bei Ausführung **Symptom:** Node ist sichtbar aber Ausführung schlägt fehl **Lösungen:** 1. **Build prüfen:** ```bash docker exec n8n ls -la /home/node/.n8n/custom/n8n-nodes-librebooking/dist/ ``` 2. **Neu bauen:** ```bash cd custom-nodes npm run rebuild docker-compose restart n8n ``` 3. **Dependencies prüfen:** ```bash docker exec -it n8n /bin/sh cd /home/node/.n8n/custom/n8n-nodes-librebooking npm ls ``` ### Problem: TypeScript Build schlägt fehl **Symptom:** `tsc` Fehler beim Bauen **Lösungen:** 1. **Node.js Version prüfen:** ```bash node --version # Sollte 18+ sein npm --version ``` 2. **Clean Build:** ```bash cd custom-nodes rm -rf node_modules dist package-lock.json npm install npm run build ``` ### Problem: Webhook URL nicht erreichbar **Symptom:** LibreBooking kann Webhooks nicht senden **Lösungen:** 1. **WEBHOOK_URL Umgebungsvariable setzen:** ```yaml environment: - WEBHOOK_URL=https://ihre-domain.com/ ``` 2. **Netzwerk-Konfiguration prüfen:** ```bash docker network inspect $(docker network ls -q) ``` --- ## Updates und Wartung ### Node aktualisieren ```bash # Neue Version herunterladen cd /pfad/zu/neuem/librebooking_n8n_node # Custom Nodes ersetzen rm -rf /pfad/zu/n8n/custom-nodes cp -r custom-nodes /pfad/zu/n8n/custom-nodes # Neu bauen cd /pfad/zu/n8n/custom-nodes npm install npm run build # Container neustarten cd /pfad/zu/n8n docker-compose restart n8n ``` ### n8n Version aktualisieren ```bash # Image aktualisieren docker pull n8nio/n8n:latest # Container neu erstellen docker-compose down docker-compose up -d ``` ### Backup erstellen ```bash # Docker Volumes sichern docker run --rm \ -v n8n_data:/source:ro \ -v $(pwd)/backup:/backup \ alpine tar cvzf /backup/n8n_data_backup.tar.gz -C /source . # Custom Nodes sichern tar cvzf custom-nodes-backup.tar.gz custom-nodes/ ``` ### Logs rotieren ```yaml services: n8n: logging: driver: "json-file" options: max-size: "10m" max-file: "3" ``` --- ## Erweiterte Konfiguration ### Kubernetes Deployment Für Kubernetes-Umgebungen kann ein ConfigMap oder PersistentVolume verwendet werden: ```yaml apiVersion: v1 kind: ConfigMap metadata: name: librebooking-node data: # Node-Dateien als ConfigMap --- apiVersion: apps/v1 kind: Deployment metadata: name: n8n spec: template: spec: containers: - name: n8n volumeMounts: - name: custom-nodes mountPath: /home/node/.n8n/custom/n8n-nodes-librebooking volumes: - name: custom-nodes configMap: name: librebooking-node ``` ### Mit Reverse Proxy (Nginx) Siehe `nginx.conf` für eine vollständige Nginx-Konfiguration mit: - SSL/TLS Termination - WebSocket Support - Optimierte Timeouts für Webhooks --- ## Hilfe und Support - **GitHub Issues:** [Repository Issues](https://github.com/ihr-repo/librebooking-n8n-node/issues) - **n8n Community:** [community.n8n.io](https://community.n8n.io) - **LibreBooking Dokumentation:** [LibreBooking Wiki](https://github.com/effgarces/BookedScheduler/wiki) --- *Letzte Aktualisierung: Januar 2026*