Zum Hauptinhalt springen

Docker-Installation

n8n empfiehlt die Verwendung von Docker für die meisten Self-Hosting-Szenarien. Docker bietet eine saubere, isolierte Umgebung, vermeidet Inkompatibilitäten mit dem Betriebssystem und der Toolchain und vereinfacht das Datenbank- sowie Umgebungsmanagement.

Sie können n8n auch mit Docker Compose in Docker ausführen. Passende Docker-Compose-Konfigurationsdateien für verschiedene Architekturen finden Sie im n8n-hosting-Repository.

Voraussetzungen für Self-Hosting

Für das Self-Hosting von n8n sind grundlegende technische Kenntnisse erforderlich, darunter:

  • Einrichtung und Konfiguration von Servern und Containern
  • Ressourcenmanagement und Skalierung der Anwendung
  • Sicherheitshärtung von Server und Anwendung
  • Konfigurationsverwaltung von n8n

n8n empfiehlt Self-Hosting erfahrenen Nutzern. Fehlerhafte Bedienung kann zu Datenverlust, Sicherheitsproblemen oder Dienstunterbrechungen führen. Falls Sie keine Erfahrung im Server-Management haben, empfehlen wir Ihnen stattdessen n8n Cloud.

Alternativ können Sie auch unsere Videoanleitungen nutzen:

Voraussetzungen

Bevor Sie beginnen, installieren Sie Docker:

  • Docker Desktop für Mac, Windows und Linux. Docker Desktop enthält Docker Engine und Docker Compose.
  • Docker Engine und Docker Compose können alternativ als eigenständige Pakete unter Linux installiert werden – ideal für Linux-Server ohne grafische Oberfläche oder wenn Sie auf die Docker Desktop UI verzichten möchten.

Stable- und Beta-Versionen

n8n veröffentlicht nahezu wöchentlich eine neue Minor-Version. Die stable-Version ist für Produktionsumgebungen geeignet, während beta die neueste veröffentlichte Version darstellt, die möglicherweise noch instabil ist. Für Feedback oder Fehlermeldungen nutzen Sie bitte unser Community-Forum.

Aktuelle stable-Version: 2.10.2 Aktuelle beta-Version: 2.11.1

Starten von n8n

Führen Sie den folgenden Befehl im Terminal aus und ersetzen Sie dabei den Platzhalter <YOUR_TIMEZONE> durch Ihre Zeitzone:

docker volume create n8n_data

docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

Dieser Befehl erstellt ein Volume zur persistenten Datenspeicherung, lädt das benötigte n8n-Image herunter und startet den Container mit folgenden Einstellungen:

  • Der Port 5678 des Containers wird auf den Host gemappt und exponiert.
  • Die Zeitzone des Containers wird konfiguriert:
    • Die Umgebungsvariable TZ legt die Systemzeitzone fest und beeinflusst Rückgabewerte von Befehlen wie date.
    • Die Umgebungsvariable GENERIC_TIMEZONE stellt sicher, dass zeitgesteuerte Knoten wie der Schedule Trigger in der richtigen Zeitzone arbeiten.
  • Es werden sichere Dateiberechtigungen für die n8n-Konfigurationsdateien erzwungen.
  • Runners werden aktiviert – dies ist die empfohlene Methode zur Ausführung von Aufgaben in n8n.
  • Das Volume n8n_data wird an das Verzeichnis /home/node/.n8n gemountet, um Daten auch nach einem Neustart des Containers zu erhalten.

Nach dem Start öffnen Sie Ihren Browser und rufen http://localhost:5678 auf, um n8n zu verwenden.

Verwendung von PostgreSQL

Standardmäßig verwendet n8n SQLite zur Speicherung von Anmeldedaten, Ausführungsverläufen und Workflows. n8n unterstützt jedoch auch PostgreSQL, das über Umgebungsvariablen konfiguriert werden kann.

Hinweis zur Persistenz des .n8n-Verzeichnisses

Bei Verwendung von PostgreSQL speichert n8n keine SQLite-Datenbankdateien mehr im .n8n-Verzeichnis. Dennoch enthält dieses Verzeichnis weiterhin wichtige Daten wie Verschlüsselungsschlüssel, Instanz-Logs und Assets für die Quellcodeverwaltung. Obwohl einige Anforderungen umgangen werden können (z. B. durch Setzen der Umgebungsvariable N8N_ENCRYPTION_KEY), empfehlen wir dringend, weiterhin ein persistentes Volume für dieses Verzeichnis zu verwenden, um potenzielle Probleme zu vermeiden.

Um n8n mit PostgreSQL zu verwenden, führen Sie den folgenden Befehl aus und ersetzen Sie die Platzhalter in spitzen Klammern (z. B. <Datenbankname>) durch Ihre tatsächlichen Werte.

docker volume create n8n_data

docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
-e TZ="<YOUR_TIMEZONE>" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE=<Datenbankname> \
-e DB_POSTGRESDB_HOST=<Hostadresse> \
-e DB_POSTGRESDB_PORT=<Portnummer> \
-e DB_POSTGRESDB_USER=<Benutzername> \
-e DB_POSTGRESDB_SCHEMA=<Schemaname> \
-e DB_POSTGRESDB_PASSWORD=<Passwort> \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

Eine vollständige docker-compose-Datei für PostgreSQL finden Sie im n8n-hosting-Repository.

Aktualisierung

Um n8n zu aktualisieren, navigieren Sie in Docker Desktop zum Reiter Images und wählen im Kontextmenü Pull, um das neueste n8n-Image herunterzuladen:

Docker Desktop

Alternativ können Sie die neueste oder eine bestimmte Version über die Kommandozeile ziehen:

# Neueste (stable) Version ziehen
docker pull docker.n8n.io/n8nio/n8n

# Bestimmte Version ziehen
docker pull docker.n8n.io/n8nio/n8n:1.81.0

# Next (instabile) Version ziehen
docker pull docker.n8n.io/n8nio/n8n:next

Nachdem Sie das aktualisierte Image gezogen haben, stoppen Sie Ihren n8n-Container und starten ihn neu. Dies können Sie auch über die Kommandozeile tun. Ersetzen Sie in den folgenden Befehlen <Container-ID> durch die ID Ihres Containers, die Sie mit dem ersten Befehl ermitteln:

# Container-ID suchen
docker ps -a

# Container mit <Container-ID> stoppen
docker stop <Container-ID>

# Container mit <Container-ID> entfernen
docker rm <Container-ID>

# Container starten
docker run --name=<Containername> [Optionen] -d docker.n8n.io/n8nio/n8n

Aktualisierung mit Docker Compose

Wenn Sie n8n mit einer Docker-Compose-Datei betreiben, führen Sie zur Aktualisierung folgende Schritte aus:

# Wechseln Sie in das Verzeichnis mit Ihrer docker-compose-Datei
cd <Ihr Verzeichnis>

# Neueste Version ziehen
docker compose pull

# Alte Version stoppen und entfernen
docker compose down

# Container starten
docker compose up -d

n8n mit Tunnel

Achtung: Nur für lokale Entwicklung und Tests gedacht – nicht für Produktionsumgebungen geeignet.

Entwicklungswerkzeug

Die Tunnel-Funktion ist ein praktisches Hilfsmittel für die lokale Entwicklung. Ihre zugrundeliegende Implementierung kann sich bei n8n-Versionen ändern.

Damit Webhook-basierte Trigger-Knoten (z. B. von GitHub) funktionieren, muss Ihre n8n-Instanz aus dem Internet erreichbar sein. n8n bietet hierfür einen Tunnel-Dienst über cloudflared, der Anfragen an Ihre lokale n8n-Instanz weiterleitet. Für die Tunnel-Funktion ist Docker erforderlich.

Je nachdem, wie Sie n8n ausführen, gibt es zwei Möglichkeiten, den Tunnel zu nutzen:

Integrierter Modus (n8n und cloudflared gemeinsam)

Bei dieser Methode werden n8n und cloudflared gemeinsam in einem Container ausgeführt. Die Tunnel-URL wird beim Start ausgegeben, und alle Komponenten werden automatisch verbunden:

pnpm stack --tunnel

Nur Dienste (Services only)

Wenn Sie n8n lieber lokal mit pnpm dev oder pnpm start ausführen möchten, können Sie cloudflared als eigenständigen Dienst starten:

# Terminal 1: cloudflared-Tunnel starten
pnpm --filter n8n-containers services --services cloudflared

# Terminal 2: n8n lokal starten
pnpm dev

Die services-Kommandos führen folgende Aktionen aus:

  1. Starten cloudflared und leiten Anfragen an host.docker.internal:5678 (Ihre lokale n8n-Instanz) weiter.
  2. Holen die öffentliche Tunnel-URL vom Metrik-Endpunkt von cloudflared ab.
  3. Schreiben eine .env-Datei mit WEBHOOK_URL und N8N_PROXY_HOPS=1 nach packages/cli/bin/.env.
  4. pnpm dev und pnpm start laden diese .env-Datei automatisch über dotenv.

Zum Aufräumen nach der Nutzung:

pnpm --filter n8n-containers services:clean

Nächste Schritte

  • Erfahren Sie mehr über Docker-Konfigurationen in der README-Datei des Docker-Images.
  • Lernen Sie, wie Sie n8n konfigurieren und skalieren können.
  • Oder erkunden Sie die Nutzung von n8n direkt: Probieren Sie die Schnellstart-Anleitung aus.