← Zurück zu n8n
🔄

n8n Self-Hosting

Workflow Automation auf deiner eigenen Infrastruktur. Volle Kontrolle, keine Cloud-Abhängigkeit.

⏱️ 45-60 Minuten 📊 Mittel
💡

Was ist n8n?

n8n (pronounced "n-eight-n") ist eine Open-Source Workflow Automation Plattform. Verbinde Apps, automatisiere Prozesse und baue komplexe Workflows - alles auf deinem eigenen Server.

  • 400+ Integrationen (Slack, Telegram, Google, APIs, ...)
  • Visual Workflow Builder - kein Code nötig
  • Self-Hosted = Deine Daten bleiben bei dir
  • Fair-Code Lizenz - kostenlos nutzbar
📋 Schritt 0: Voraussetzungen pruefen +

Bevor du startest, stelle sicher dass du folgendes hast:

Server / VPS

  • Mindestens 2 GB RAM
  • 10 GB freier Speicher
  • Docker & Docker Compose installiert
  • Linux (Debian/Ubuntu empfohlen)

Netzwerk

  • Domain oder Subdomain (z.B. n8n.deine-domain.de)
  • Reverse Proxy (NPM, Traefik, Caddy)
  • SSL-Zertifikat (Let's Encrypt)
  • Port 5678 intern erreichbar
⚠️

Proxmox LXC User

Falls du n8n in einem Proxmox LXC Container betreibst: Stelle sicher, dass der Container unprivileged läuft und Docker korrekt installiert ist. Alternativ: Eigene VM für Docker-Workloads.

Docker installiert?

Docker Version prüfen
bash

docker --version && docker compose version

Falls Docker fehlt: Docker Installation Guide →

📁 Schritt 1: Projektverzeichnis anlegen +

Erstelle ein Verzeichnis für deine n8n Installation:

Verzeichnis erstellen
bash

mkdir -p /opt/n8n && cd /opt/n8n
💡

/opt/n8n ist ein guter Standardpfad. Du kannst auch einen anderen Pfad wählen, z.B. /home/user/docker/n8n.

🐳 Schritt 2: Docker Compose erstellen +

Erstelle die docker-compose.yml Datei. Wir nutzen PostgreSQL als Datenbank für bessere Performance und Stabilität.

docker-compose.yml
yaml

version: '3.8'

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      # Basis-Konfiguration
      - N8N_HOST=n8n.deine-domain.de
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8n.deine-domain.de/

      # Datenbank
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=SICHERES_PASSWORT_HIER

      # Zeitzone
      - GENERIC_TIMEZONE=Europe/Berlin
      - TZ=Europe/Berlin

      # Sicherheit
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=DEIN_ADMIN_PASSWORT

      # Optional: Execution Data Limit (verhindert DB-Bloat)
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      postgres:
        condition: service_healthy
    networks:
      - n8n-network

  postgres:
    image: postgres:15-alpine
    container_name: n8n-postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=n8n
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=SICHERES_PASSWORT_HIER
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - n8n-network

volumes:
  n8n_data:
  postgres_data:

networks:
  n8n-network:
    driver: bridge
🚨

Passwoerter aendern!

Ersetze SICHERES_PASSWORT_HIER und DEIN_ADMIN_PASSWORT durch sichere, einzigartige Passwörter! Nutze z.B. openssl rand -base64 32 um sichere Passwörter zu generieren.

Sichere Passwoerter generieren:

Passwort generieren
bash

# PostgreSQL Passwort
openssl rand -base64 32

# Admin Passwort
openssl rand -base64 24
⚙️ Schritt 3: Konfiguration anpassen +

Passe folgende Werte in der docker-compose.yml an:

Variable Beschreibung Beispiel
N8N_HOST Deine Domain n8n.firma.de
WEBHOOK_URL Vollstaendige URL fuer Webhooks https://n8n.firma.de/
DB_POSTGRESDB_PASSWORD PostgreSQL Passwort (generiert)
N8N_BASIC_AUTH_USER Admin Benutzername admin
N8N_BASIC_AUTH_PASSWORD Admin Passwort (generiert)
💡

SQLite statt PostgreSQL?

Für kleine Installationen (<10 Workflows) kannst du auch SQLite nutzen. Entferne dafür den postgres Service und die DB_* Umgebungsvariablen. n8n nutzt dann automatisch SQLite.

🚀 Schritt 4: n8n starten +

Starte n8n mit Docker Compose:

Container starten
bash

cd /opt/n8n
docker compose up -d

Pruefe ob die Container laufen:

Status prüfen
bash

docker compose ps

Erwartete Ausgabe:

Erwartete Ausgabe
text

NAME          STATUS          PORTS
n8n           Up (healthy)    0.0.0.0:5678->5678/tcp
n8n-postgres  Up (healthy)    5432/tcp
⚠️

Beim ersten Start kann es 1-2 Minuten dauern bis PostgreSQL bereit ist und n8n startet. Prüfe die Logs mit docker compose logs -f falls etwas nicht funktioniert.

🌐 Schritt 5: Reverse Proxy einrichten +

n8n laeuft jetzt auf Port 5678. Um es ueber HTTPS erreichbar zu machen, brauchst du einen Reverse Proxy.

Option A: Nginx Proxy Manager (empfohlen)

  1. Öffne Nginx Proxy Manager
  2. Klicke auf "Proxy Hosts" → "Add Proxy Host"
  3. Konfiguration:
    • Domain: n8n.deine-domain.de
    • Scheme: http
    • Forward Hostname/IP: n8n oder Server-IP
    • Forward Port: 5678
    • Websockets Support: aktivieren
  4. SSL Tab: "Request a new SSL Certificate" mit Let's Encrypt
  5. Speichern

Option B: Traefik (Labels in docker-compose.yml)

Traefik Labels hinzufügen
yaml

services:
  n8n:
    # ... bestehende config ...
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.deine-domain.de`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=letsencrypt"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"
    networks:
      - n8n-network
      - traefik  # Traefik Netzwerk hinzufügen
🚨

Websockets aktivieren!

n8n benötigt Websockets für den Editor. Stelle sicher, dass dein Reverse Proxy Websocket-Verbindungen weiterleitet, sonst funktioniert der Workflow-Editor nicht richtig.

🔐 Schritt 6: Erster Login +

Oeffne n8n in deinem Browser:

text

https://n8n.deine-domain.de

Melde dich mit den Zugangsdaten an, die du in der docker-compose.yml festgelegt hast:

  • Benutzername: N8N_BASIC_AUTH_USER
  • Passwort: N8N_BASIC_AUTH_PASSWORD

Geschafft!

Wenn du den n8n Workflow-Editor siehst, ist die Installation erfolgreich! Du kannst jetzt deinen ersten Workflow erstellen.

💾 Schritt 7: Backup einrichten +

Fuer ein vollstaendiges Backup brauchst du:

  • PostgreSQL Datenbank - enthält alle Workflows, Credentials, Execution History
  • n8n Volume - enthält Encryption Key und weitere Konfiguration

Datenbank-Backup Script:

backup-n8n.sh
bash

#!/bin/bash
# n8n Backup Script
# Speicherort: /opt/n8n/backup-n8n.sh

BACKUP_DIR="/opt/n8n/backups"
DATE=$(date +%Y-%m-%d_%H-%M)

mkdir -p $BACKUP_DIR

# PostgreSQL Backup
docker exec n8n-postgres pg_dump -U n8n n8n > "$BACKUP_DIR/n8n-db-$DATE.sql"

# n8n Volume Backup (Encryption Key!)
docker run --rm -v n8n_n8n_data:/data -v $BACKUP_DIR:/backup alpine \
  tar czf /backup/n8n-data-$DATE.tar.gz -C /data .

# Alte Backups löschen (älter als 7 Tage)
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete

echo "Backup erstellt: $DATE"

Cronjob einrichten (taeglich 3 Uhr):

Cronjob erstellen
bash

chmod +x /opt/n8n/backup-n8n.sh
(crontab -l 2>/dev/null; echo "0 3 * * * /opt/n8n/backup-n8n.sh >> /var/log/n8n-backup.log 2>&1") | crontab -
⚠️

Encryption Key sichern!

Der Encryption Key in /home/node/.n8n ist kritisch! Ohne ihn kannst du gespeicherte Credentials (API-Keys, Passwörter) nicht wiederherstellen. Sichere das n8n Volume unbedingt mit!

🔄 Schritt 8: Updates & Wartung +

n8n wird regelmaessig aktualisiert. So updatest du sicher:

n8n updaten
bash

cd /opt/n8n

# 1. Backup erstellen!
./backup-n8n.sh

# 2. Neue Images ziehen
docker compose pull

# 3. Container neu starten
docker compose up -d

# 4. Prüfen ob alles läuft
docker compose ps
docker compose logs -f n8n
💡

Update-Strategie

Wir empfehlen, n8n monatlich zu updaten. Bei kritischen Security-Updates sofort. Folge dem n8n Community Forum für Release Notes.

Nuetzliche Wartungsbefehle:

Wartungsbefehle
bash

# Logs anzeigen
docker compose logs -f n8n

# In Container shell
docker exec -it n8n /bin/sh

# Container neustarten
docker compose restart n8n

# Alles stoppen
docker compose down

# Alles starten
docker compose up -d

Haeufige Fragen

n8n startet nicht - was tun?

Prüfe die Logs:

bash

docker compose logs n8n
docker compose logs postgres

Häufige Ursachen:

  • PostgreSQL noch nicht bereit → Warte 1-2 Minuten
  • Falsches Passwort in Config → Beide Stellen prüfen
  • Port bereits belegt → lsof -i :5678
Wie exportiere ich Workflows?

Im n8n Editor: Workflow öffnen → Menu (drei Punkte) → "Download". Du erhältst eine JSON-Datei die du jederzeit wieder importieren kannst.

Webhooks funktionieren nicht

Prüfe diese Punkte:

  • WEBHOOK_URL korrekt mit https:// und trailing slash?
  • Domain von außen erreichbar?
  • SSL-Zertifikat gültig?
  • Workflow aktiviert (nicht nur gespeichert)?
Kann ich n8n mit anderen Containern verbinden?

Ja! Füge die Container zum selben Docker-Netzwerk hinzu. Dann kannst du sie über den Container-Namen ansprechen (z.B. http://nextcloud:80).

Wie viele Workflows kann ich erstellen?

Unbegrenzt! Die Self-Hosted Version hat keine Limits. Die Performance hängt von deiner Hardware ab - mit 2 GB RAM sind 50+ Workflows problemlos möglich.

Brauche ich die kostenpflichtige Version?

Für die meisten Anwendungsfälle: Nein. Die Open-Source Version enthält alle Workflow-Funktionen. Die kostenpflichtige Cloud/Enterprise Version bietet zusätzlich SSO, Audit Logs, und Support.

Lieber machen lassen?

Wir richten n8n fuer dich ein - inklusive Backup, Monitoring und Integration mit deinen anderen Services.

Kontakt aufnehmen →