
Grundlagen
Dieser Beitrag baut auf diesen Grundlagen-Beiträgen auf:
- VPS – Was ist das und wie funktioniert es?
- Docker Compose – Anwendungen einfach verwalten
- Nginx Proxy Manager – Reverse Proxy mit Oberfläche
- n8n – Was ist Workflow-Automatisierung?
Was wir hier tun
Wir installieren n8n auf einem eigenen Server (VPS) – sicher erreichbar über eine eigene Domain und mit SSL-Zertifikat versehen. Am Ende läuft n8n unter einer Adresse wie https://n8n.meine-domain.de und ist bereit für erste Workflows.
Das Setup entspricht dem, das wir selbst produktiv betreiben.
Kurze Wiederholung: Was ist n8n?
n8n ist ein Open-Source-Tool für Workflow-Automatisierung. Damit lassen sich wiederkehrende Aufgaben automatisieren und verschiedene Dienste miteinander verbinden – ohne dass für jede Verbindung selbst Code geschrieben werden muss.
Wer mehr über n8n und seine Einsatzmöglichkeiten erfahren möchte, findet in unserem Einführungsbeitrag zu n8n einen guten Überblick.
Hier geht es jetzt um die Installation – also darum, n8n auf einem eigenen Server zum Laufen zu bringen.
Voraussetzungen
- Einen VPS (z.B. mit Debian 13) mit SSH-Zugang
- Docker & Docker Compose installiert (Anleitung)
- Nginx Proxy Manager läuft bereits (Anleitung)
- Das Docker-Netzwerk shared_proxy existiert bereits (wird im NPM-Beitrag angelegt)
- Domain (oder Subdomain), die auf die IP des VPS zeigt – z. B. n8n.meine-domain.de

Hinweis zum Netzwerk: Damit n8n und der Nginx-Proxy-Manager (NPM) miteinander kommunizieren können, müssen beide im selben Docker-Netzwerk laufen. Wir nennen es shared_proxy. Wer dem NPM-Beitrag gefolgt ist, hat dieses Netzwerk bereits.
Schritt 1 – Verzeichnis anlegen
Hinweis: wer sich mit der Materie nicht weiter beschäftigen oder keine Zeit investieren möchte, kann auch mit nur einer Zeile Code n8n installieren. Dafür einfach zum Installations-Skript vorspringen.
Wir organisieren auf dem VPS unsere Dienste unter dem Verzeichnis /opt. Für n8n legen wir ein eigenes Verzeichnis an und wechseln hinein:
mkdir /opt/n8n
cd /opt/n8n
Innerhalb dieses Verzeichnisses wird n8n seine Daten speichern. Wir legen dafür gleich einen Unterordner an und zusätzlich einen für spätere Backups:
mkdir backups
mkdir n8n_data
chown -R 1000:1000 n8n_data
In n8n_data landen später alle Workflows, Credentials und Einstellungen – also das Herzstück von n8n. Dieser Ordner sollte regelmäßig gesichert werden.
Schritt 2 – Die docker-compose.yml erstellen
Jetzt erstellen wir die zentrale Steuerdatei für Docker Compose:
nano docker-compose.yml
Den folgenden Inhalt kopieren und in die leere Datei einfügen:
services:
n8n:
image: n8nio/n8n:2.22.3
container_name: n8n
restart: unless-stopped
expose:
- "5678"
environment:
- GENERIC_TIMEZONE=Europe/Berlin
- N8N_HOST=${N8N_DOMAIN}
- N8N_PORT=5678
- WEBHOOK_URL=https://${N8N_DOMAIN}/
- N8N_RUNNERS_MODE=external
- N8N_RUNNERS_BROKER_ENABLED=true
- N8N_RUNNERS_BROKER_PORT=5679
- N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0
- N8N_RUNNERS_AUTH_TOKEN=${N8N_RUNNERS_AUTH_TOKEN}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_NATIVE_PYTHON_RUNNER=true
- N8N_PROXY_HOPS=1
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=168
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=1000
volumes:
- ./n8n_data:/home/node/.n8n
networks:
- shared_proxy
task-runners:
image: n8nio/runners:2.22.3
restart: unless-stopped
environment:
- N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679
- N8N_RUNNERS_AUTH_TOKEN=${N8N_RUNNERS_AUTH_TOKEN}
depends_on:
- n8n
networks:
- shared_proxy
networks:
shared_proxy:
external: true
Datei speichern: Strg + X, dann Y (Yes), dann ENTER.
Schritt 2.1 .env erstellen
Die docker-compose.yml arbeitet mit Token, die wir in eine Datei namens .env packen. Das sorgt dafür, dass man Schlüssel einfach rotieren könnte und die Datei selbst, bspw. beim Teilen, keine Geheimnisse aus Versehen herausgibt. Der folgende Code erstellt die Datei und setzt dabei randomisierte Schlüssel. Bevor der Befehl abgesetzt wird, muss der Domainname (hier: n8n.your-domain.com) angepasst werden.
( printf "N8N_RUNNERS_AUTH_TOKEN=%s\n" "$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 48)"
printf "N8N_ENCRYPTION_KEY=%s\n" "$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 48)"
printf "N8N_DOMAIN=%s\n" "n8n.your-domain.com"
) > /opt/n8n/.env && chmod 600 /opt/n8n/.env
Schritt 3 – n8n starten
Jetzt starten wir n8n:
docker compose up -d
Docker lädt das n8n-Image herunter (beim ersten Start dauert das einen Moment) und startet den Container im Hintergrund (`-d` = detached).
Ob alles läuft, prüfen wir mit:
docker ps
In der Ausgabe sollte ein Container namens n8n mit dem Status Up erscheinen.
Logs anschauen (hilfreich bei Problemen):
docker logs n8n
Schritt 4 – Nginx Proxy Manager (NPM) einrichten
n8n läuft jetzt intern auf Port 5678. Damit es sicher über https://n8n.meine-domain.de erreichbar wird, richten wir im Nginx Proxy Manager einen Proxy Host ein.
Schritt 4.1 DNS-Eintrag prüfen
Zunächst muss sichergestellt sein, dass die Subdomain n8n.meine-domain.de per DNS auf die IP des VPS zeigt. Das wird beim Domain-Anbieter eingestellt (A-Record auf die VPS-IP).

Schritt 4.2 Proxy Host anlegen
Im NPM-Dashboard (http://SERVER-IP:81 oder eigene Domain) auf Hosts → Proxy Hosts → Add Proxy Host klicken.

Im nun erscheinenden Modal (Fenster) die Tabs Details und SSL befüllen:
| Feld | Wert |
|---|---|
| Domain Names | n8n.meine-domain.de |
| Scheme | http |
| Forward Hostname / IP | n8n |
| Forward Port | 5678 |
| Block Common Exploits | ✅ aktivieren |
| Websockets Support | ✅ aktivieren |
| Feld | Wert |
|---|---|
| SSL Certificate | Request a new SSL Certificate |
| Force SSL | ✅ aktivieren |
| HTTP/2 Support | ✅ aktivieren |
Mit Save speichern. NPM beantragt automatisch ein kostenloses SSL-Zertifikat über Let’s Encrypt.

Schritt 5 – n8n aufrufen und einrichten
Nach ein paar Sekunden Wartezeit sollte n8n jetzt erreichbar sein unter:
https://n8n.meine-domain.de
Beim ersten Aufruf erscheint n8n’s Setup-Assistent:
- E-Mail-Adresse eingeben (wird der Admin-Account)
- Vorname / Nachname eingeben
- Passwort wählen (mindestens 8 Zeichen +)
- Fertig – n8n ist einsatzbereit!
Wichtig: Accounts stets gut absichern. n8n bietet einen 2. Faktor zur Anmeldung an. Wir halten das für selbstverständlich, den auch zu nutzen.
Ein weiterer Schritt zu mehr Sicherheit könnte sein, den Zugriff auf n8n zu „whitelisten“. So würden sich nur bestimmte IPs mit der Website verbinden können. Hierbei ist dann darauf zu achten, dass alle Webseiten, die mit n8n interagieren (sollen), dann auch erlaubt werden.
Tipps für den Betrieb
Installations-Skript
Wir stellen auch ein Installations-Skript via Github zur Verfügung. Mit nur eine Zeile Code interaktiv zur eigenen n8n Instanz (s. Video):
bash <(curl -fsSL https://raw.githubusercontent.com/nephilim75/scripts/main/n8n/install/install-n8n.sh)
Einführungskurse
Wer nicht so auf intuitives „learning by doing“ steht, findet neben unzähligen Tutorials im Netz, direkt bei und von n8n bereitgestellte Kurse. Sie sind kostenlos und bieten einen sehr guten Einstieg in das gesamte Thema.
- Kurs Level 1: https://docs.n8n.io/courses/level-one/
- Kurs Level 2: https://docs.n8n.io/courses/level-two/
Alles zu technisch?
Wir unterstützen Sie gern dabei, Ihre Infrastruktur vorzubereiten, anzupassen oder aufzubauen. Schreiben Sie uns, wir freuen uns auf Ihre Nachricht.

