n8n_node_librebooking/DOCKER-INTEGRATION.md

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*