593 lines
12 KiB
Markdown
593 lines
12 KiB
Markdown
# 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*
|