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
5678des Containers wird auf den Host gemappt und exponiert. - Die Zeitzone des Containers wird konfiguriert:
- Die Umgebungsvariable
TZlegt die Systemzeitzone fest und beeinflusst Rückgabewerte von Befehlen wiedate. - Die Umgebungsvariable
GENERIC_TIMEZONEstellt sicher, dass zeitgesteuerte Knoten wie der Schedule Trigger in der richtigen Zeitzone arbeiten.
- Die Umgebungsvariable
- 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_datawird an das Verzeichnis/home/node/.n8ngemountet, 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:

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:
- Starten cloudflared und leiten Anfragen an
host.docker.internal:5678(Ihre lokale n8n-Instanz) weiter. - Holen die öffentliche Tunnel-URL vom Metrik-Endpunkt von cloudflared ab.
- Schreiben eine
.env-Datei mitWEBHOOK_URLundN8N_PROXY_HOPS=1nachpackages/cli/bin/.env. pnpm devundpnpm startladen 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.