Zum Hauptinhalt springen
Zurück zur Kategorie

n8n Installation: Self-Hosted Workflow-Automatisierung

n8n Docker-Installation, Webhook-Integrationen, Workflow-Erstellung, 400+ App-Verbindungen, geplante Aufgaben, Credentials-Verwaltung und Production-Deployment.

Lesezeit: 15 Min Self-Hosting
n8nautomatisierungworkflowself-hostingdockerwebhookintegration
Autor
REXE Teknoloji Network & Security Team
Redaktion
REXE Teknoloji Technical Editorial
Erstveröffentlichung
Letzte Aktualisierung

n8n Installation: Self-Hosted Workflow-Automatisierung

n8n ist eine Open-Source-Workflow-Automatisierungsplattform mit visueller Oberfläche, die 400+ Anwendungen und Dienste verbinden kann. Sie können es als self-hosted Alternative zu Diensten wie Zapier und Make (Integromat) auf Ihrem eigenen Server betreiben. Sie können komplexe Automatisierungen ohne Code erstellen oder benutzerdefinierte Logik mit JavaScript/Python hinzufügen.

Was ist n8n?

n8n (Kurzform für "nodemation") ermöglicht die Erstellung von Workflows mit knotenbasierter visueller Programmierung. Hauptmerkmale:

  • 400+ Integrationen: Slack, GitHub, Google Sheets, Notion, Airtable und mehr
  • Webhook-Unterstützung: HTTP-Anfragen als Trigger verwenden
  • Geplante Aufgaben: Cron-basierte Planung
  • Code-Unterstützung: JavaScript- und Python-Knoten
  • Fehlerbehandlung: Retry-Mechanismus und Fehlerflüsse
  • Verschlüsselte Credentials: API-Schlüssel sicher gespeichert

Systemanforderungen

  • Server mit Docker und Docker Compose
  • Mindestens 1 GB RAM (2 GB empfohlen)
  • PostgreSQL (für Production empfohlen) oder SQLite

Grundlegende Docker-Installation

Schnellstart mit SQLite

hljs yaml
version: '3.8'

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Europe/Berlin
      - N8N_ENCRYPTION_KEY=starker-verschluesselungsschluessel
    volumes:
      - ./n8n-data:/home/node/.n8n
    ports:
      - "127.0.0.1:5678:5678"
hljs bash
# Container starten
docker compose up -d

# Logs prüfen
docker logs n8n -f

N8N_ENCRYPTION_KEY wird zur Verschlüsselung von Credentials verwendet. Wenn Sie diesen Wert verlieren, werden alle Ihre Credentials unzugänglich. Bewahren Sie ihn an einem sicheren Ort auf.

Production-Setup mit PostgreSQL

hljs yaml
version: '3.8'

services:
  postgres:
    image: postgres:15
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: n8n
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: starkes-passwort
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n8n"]
      interval: 5s
      timeout: 5s
      retries: 10

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=starkes-passwort
      - N8N_HOST=n8n.example.com
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Europe/Berlin
      - N8N_ENCRYPTION_KEY=starker-verschluesselungsschluessel
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=admin-passwort
    volumes:
      - ./n8n-data:/home/node/.n8n
    ports:
      - "127.0.0.1:5678:5678"

volumes:
  postgres-data:

Nginx Reverse Proxy

hljs nginx
server {
    listen 80;
    server_name n8n.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name n8n.example.com;

    ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 3600;
    }
}

Grundlegende Workflows erstellen

Erster Workflow: Webhook → Slack-Benachrichtigung

  1. Auf New Workflow klicken
  2. Knoten mit + hinzufügen → Webhook auswählen
    • HTTP Method: POST
    • Path: /slack-notify
  3. Neuen Knoten mit +Slack auswählen
    • Operation: Send Message
    • Channel: #allgemein
    • Message: {{ $json.message }}
  4. Speichern und Aktivieren
hljs bash
# Webhook testen
curl -X POST https://n8n.example.com/webhook/slack-notify \
  -H "Content-Type: application/json" \
  -d '{"message": "Hallo n8n!"}'

Trigger-Typen

Cron (Zeitplan) Trigger

# Cron-Ausdrücke
0 9 * * 1-5    # Werktags um 09:00
*/15 * * * *   # Alle 15 Minuten
0 0 * * *      # Jeden Mitternacht
0 8 * * 1      # Jeden Montag um 08:00

Credentials-Verwaltung

Einstellungen → Credentials → Credential hinzufügen

Beispiel: GitHub API
- Credential-Typ: GitHub API
- Access Token: ghp_xxxxxxxxxxxx
- Verbindung testen

Beliebte Workflow-Beispiele

GitHub → Slack-Benachrichtigung

GitHub Trigger (Push-Event)
  → IF (branch == 'main')
    → Slack ("Neues Deployment: {{ $json.commits[0].message }}")
    → E-Mail (Team benachrichtigen)

Täglicher Bericht

Cron Trigger (jeden Morgen um 09:00)
  → PostgreSQL (gestrige Verkäufe abrufen)
  → Code (Daten formatieren)
  → Google Sheets (zum Bericht hinzufügen)
  → Slack (Zusammenfassung senden)

Queue-Modus (Hohe Last)

hljs yaml
environment:
  - EXECUTIONS_MODE=queue
  - QUEUE_BULL_REDIS_HOST=redis
  - QUEUE_BULL_REDIS_PORT=6379

redis:
  image: redis:7-alpine
  container_name: n8n-redis
  restart: unless-stopped

Backup

hljs bash
# n8n-Daten sichern
tar -czf n8n-backup-$(date +%Y%m%d).tar.gz ./n8n-data/

# PostgreSQL-Backup
docker exec n8n-postgres pg_dump -U n8n n8n > n8n-db-$(date +%Y%m%d).sql

Mit n8n auf REXE VPS-Servern können Sie alle Ihre Geschäftsprozesse automatisieren. Mit 2 GB RAM können Sie Hunderte von Workflows ausführen.

Häufig gestellte Fragen

Was ist der Unterschied zwischen n8n und Zapier?

n8n ist self-hosted und Open-Source; Zapier ist cloudbasiert und kostenpflichtig. Bei n8n bleiben Ihre Daten auf Ihrem eigenen Server und Sie können unbegrenzte Workflows und Ausführungen erstellen. Zapier kann benutzerfreundlicher sein, hat aber monatliche Ausführungslimits und hohe Kosten. n8n erlaubt auch das Schreiben von benutzerdefiniertem Code mit JavaScript/Python.

Meine Webhook-URL funktioniert nicht, kann von außen nicht erreicht werden.

Stellen Sie sicher, dass die WEBHOOK_URL-Umgebungsvariable korrekt gesetzt ist (https://n8n.example.com/). Überprüfen Sie, ob der Nginx-Proxy WebSocket-Verbindungen unterstützt (Upgrade- und Connection-Header). Vergewissern Sie sich, dass Port 443 in der Firewall geöffnet ist. Stellen Sie sicher, dass der Workflow in n8n im Status 'Active' ist.

Ich habe meine Credentials verloren, den Verschlüsselungsschlüssel vergessen.

Wenn N8N_ENCRYPTION_KEY geändert wird, können vorhandene Credentials nicht entschlüsselt werden. In diesem Fall müssen Sie alle Credentials neu erstellen. Deshalb ist es wichtig, den Verschlüsselungsschlüssel an einem sicheren Ort (Passwort-Manager, Vault) aufzubewahren. Sichern Sie diesen Schlüssel auch bei Backups.

n8n verbraucht zu viel Speicher, wie optimiere ich es?

Begrenzen Sie den Ausführungsverlauf: EXECUTIONS_DATA_MAX_AGE=168 (7 Tage). Für große Datensätze speichern Sie Binärdaten im Dateisystem: N8N_DEFAULT_BINARY_DATA_MODE=filesystem. Kontrollieren Sie die Worker-Anzahl mit dem Queue-Modus. Deaktivieren Sie unnötige Workflows.

Wie debugge ich in n8n?

Sie können die Ausgabe jedes Knotens im Workflow-Editor sehen. Testen Sie einzelne Knoten mit 'Execute Node'. Überprüfen Sie vergangene Ausführungen aus der Ausführungsliste. Fügen Sie einen Fehlerknoten hinzu, um Fehler abzufangen und Slack/E-Mail-Benachrichtigungen zu erhalten. Überprüfen Sie Systemlogs mit docker logs n8n.

Ist es sicher, n8n zu aktualisieren, verliere ich meine Daten?

Bei PostgreSQL ist das Update sicher. Erstellen Sie vor dem Update ein Datenbank-Backup: docker exec n8n-postgres pg_dump -U n8n n8n > backup.sql. Dann mit docker compose pull && docker compose up -d aktualisieren. n8n führt automatische Migrationen durch. Bei SQLite sichern Sie das ./n8n-data/-Verzeichnis.

Verwandte Artikel

NetzwerkverkehrEingehend GbpsAusgehend Gbps