HTTPS für n8n: Reverse Proxy mit Caddy oder Nginx einrichten

So sichern Sie n8n mit Caddy oder Nginx per HTTPS ab und vermeiden die WEBHOOK_URL-Falle bei produktiven Webhooks.

HTTPS für n8n richten Sie ein, indem Sie einen Reverse Proxy wie Caddy oder Nginx vor die Instanz schalten. Der Proxy übernimmt die Verschlüsselung nach außen und leitet Anfragen intern per HTTP an Port 5678 weiter. Damit Webhooks funktionieren, muss n8n zusätzlich seine öffentliche Adresse kennen. Zuständig dafür sind die Variablen N8N_WEBHOOK_URL und N8N_PROXY_HOPS.

Warum reicht ein Reverse Proxy allein nicht aus?

Ein Reverse Proxy allein reicht nicht aus, weil n8n seine Webhook-URLs aus N8N_PROTOCOL, N8N_HOST und N8N_PORT zusammensetzt. Die Standardwerte lauten http, localhost und 5678.

Hinter einem Proxy sieht n8n intern weiterhin nur die HTTP-Verbindung auf Port 5678. Nutzer und externe Dienste erreichen die Instanz dagegen über HTTPS auf Port 443 unter Ihrer Domain.

Diesen Bruch zwischen interner und externer Sicht muss die Konfiguration überbrücken. Die n8n-Dokumentation zu Webhook-URLs hinter Reverse Proxys beschreibt genau diesen Ausgangspunkt.

Welche Umgebungsvariablen setzen Sie hinter dem Proxy?

Hinter dem Proxy setzen Sie mindestens N8N_WEBHOOK_URL und N8N_PROXY_HOPS, dazu Protokoll und Hostname. Die folgende Tabelle nennt die relevanten Variablen mit ihren Standardwerten aus der Referenz der Deployment-Variablen.

Variable | Standardwert | Wert hinter einem Reverse Proxy

Variable: N8N_PROTOCOL · Standardwert: http · Wert hinter einem Reverse Proxy: https

Variable: N8N_HOST · Standardwert: localhost · Wert hinter einem Reverse Proxy: Ihre Subdomain, etwa n8n.ihre-domain.de

Variable: N8N_PORT · Standardwert: 5678 · Wert hinter einem Reverse Proxy: bleibt 5678, der Proxy hört auf 443

Variable: N8N_WEBHOOK_URL · Standardwert: nicht gesetzt · Wert hinter einem Reverse Proxy: vollständige externe Adresse mit Schrägstrich am Ende

Variable: N8N_PROXY_HOPS · Standardwert: 0 · Wert hinter einem Reverse Proxy: Anzahl der vorgeschalteten Proxys, bei einem Proxy 1

Variable: N8N_SECURE_COOKIE · Standardwert: true · Wert hinter einem Reverse Proxy: bleibt true, sofern HTTPS korrekt ankommt

Wichtig für alle älteren Anleitungen im Netz: N8N_WEBHOOK_URL ersetzt WEBHOOK_URL. Die alte Variable ist seit n8n 2.35.0 als Alias veraltet und erzeugt beim Start eine Warnung im Log.

Als Docker-Compose-Ausschnitt sieht das so aus. Die Portbindung auf 127.0.0.1 sorgt dafür, dass nur der Proxy die Instanz erreicht.

1services:
2 n8n:
3 image: n8nio/n8n:2.36.9
4 restart: always
5 ports:
6 - "127.0.0.1:5678:5678"
7 environment:
8 - N8N_PROTOCOL=https
9 - N8N_HOST=n8n.ihre-domain.de
10 - N8N_PORT=5678
11 - N8N_WEBHOOK_URL=https://n8n.ihre-domain.de/
12 - N8N_EDITOR_BASE_URL=https://n8n.ihre-domain.de/
13 - N8N_PROXY_HOPS=1
14 - GENERIC_TIMEZONE=Europe/Berlin
15 - TZ=Europe/Berlin
16 volumes:
17 - n8n_data:/home/node/.n8n
18
19volumes:
20 n8n_data:

Welche Header muss Ihr Proxy an n8n weiterreichen?

Ihr Proxy muss drei Header an n8n weiterreichen, damit die Einstellungen überhaupt greifen. Die n8n-Dokumentation nennt sie ausdrücklich für den letzten Proxy auf dem Anfrageweg.

  • X-Forwarded-Proto: meldet, ob die ursprüngliche Anfrage per HTTP oder HTTPS ankam.
  • X-Forwarded-Host: übergibt den vom Nutzer aufgerufenen Hostnamen statt des internen Namens.
  • X-Forwarded-For: gibt die echte Client-IP weiter, die sonst hinter der Proxy-IP verschwindet.

Fehlen die Header oder passt N8N_PROXY_HOPS nicht zur Anzahl der Stationen, wertet n8n die Angaben nicht aus. Dann fällt die Instanz auf ihre internen Standardwerte zurück.

Wie sieht die Konfiguration in Caddy und Nginx aus?

Die Konfiguration unterscheidet sich deutlich im Umfang: Caddy braucht drei Zeilen, Nginx einen vollständigen Server-Block. Caddy ab Version 2 setzt die drei X-Forwarded-Header bei reverse_proxy selbst und holt das Zertifikat automatisch.

1n8n.ihre-domain.de {
2 reverse_proxy 127.0.0.1:5678
3}

Bei Nginx tragen Sie Zertifikat und Header selbst ein. Der Block zum Upgrade der Verbindung ist nötig, weil n8n die Oberfläche per WebSocket aktualisiert.

1server {
2 listen 443 ssl;
3 server_name n8n.ihre-domain.de;
4
5 ssl_certificate /etc/letsencrypt/live/n8n.ihre-domain.de/fullchain.pem;
6 ssl_certificate_key /etc/letsencrypt/live/n8n.ihre-domain.de/privkey.pem;
7
8 location / {
9 proxy_pass http://127.0.0.1:5678;
10
11 proxy_set_header Host $host;
12 proxy_set_header X-Forwarded-Host $host;
13 proxy_set_header X-Forwarded-Proto $scheme;
14 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
15
16 proxy_http_version 1.1;
17 proxy_set_header Upgrade $http_upgrade;
18 proxy_set_header Connection "upgrade";
19 proxy_read_timeout 3600s;
20 }
21}

Danach prüfen Sie die Konfiguration und laden sie neu.

1sudo nginx -t && sudo systemctl reload nginx

Caddy oder Nginx: Was passt zu Ihrem n8n-Setup?

Für n8n selbst spielt die Wahl keine Rolle, solange die Header ankommen und die Variablen stimmen. Der Unterschied liegt allein im Betriebsaufwand.

Kriterium | Caddy 2 | Nginx

Kriterium: Zertifikat · Caddy 2: wird automatisch ausgestellt und erneuert · Nginx: separat über Certbot oder ACME-Client

Kriterium: X-Forwarded-Header · Caddy 2: setzt reverse_proxy selbst · Nginx: jede Zeile manuell im Server-Block

Kriterium: WebSocket-Upgrade · Caddy 2: standardmäßig aktiv · Nginx: proxy_http_version und Upgrade von Hand

Kriterium: Konfigurationsumfang · Caddy 2: drei Zeilen · Nginx: rund zwanzig Zeilen je Host

Kriterium: Typischer Einsatz · Caddy 2: neue, dedizierte n8n-Hosts · Nginx: Server, auf dem Nginx bereits andere Dienste bedient

Alternativ beschreibt die n8n-Dokumentation zum Einrichten von SSL einen Weg ohne separaten Proxy. Sie setzen N8N_SSL_CERT und N8N_SSL_KEY, damit n8n Zertifikat und Schlüssel selbst einliest.

Die Dokumentation empfiehlt trotzdem den Reverse Proxy, weil dieser die Erneuerung übernimmt. Bei direkten Zertifikaten tragen Sie die Verantwortung dafür allein.

Warum bricht der Login trotz korrektem Zertifikat manchmal weg?

Der Login bricht weg, weil n8n Sitzungscookies als secure markiert und der Browser solche Cookies nur über eine verschlüsselte Verbindung sendet. Gesteuert wird das über N8N_SECURE_COOKIE mit dem Standardwert true.

Erreicht die HTTPS-Information n8n nicht über X-Forwarded-Proto, hält die Anwendung die Verbindung intern für unverschlüsselt. Sie verwirft das Cookie, und das Login-Formular scheitert ohne klare Fehlermeldung.

Webhook-Variablen, Proxy-Header und Cookie-Einstellung hängen technisch zusammen. Prüfen Sie die drei Punkte deshalb immer gemeinsam.

Typische Fehler und Ursachen

Die folgenden vier Fehlerbilder decken die meisten gescheiterten HTTPS-Setups ab. Jede Zeile nennt Ursache, Lösung und die zugehörige Stelle in der Herstellerdokumentation.

Symptom | Ursache | Lösung

Symptom: Der Webhook-Node zeigt eine URL mit localhost:5678 · Ursache: N8N_WEBHOOK_URL ist nicht gesetzt, n8n baut die URL aus den Standardwerten · Lösung: N8N_WEBHOOK_URL auf die vollständige externe Adresse setzen und den Container neu starten (Quelle)

Symptom: Beim Start erscheint eine Deprecation-Warnung im Log · Ursache: Die Konfiguration nutzt noch WEBHOOK_URL, seit n8n 2.35.0 nur ein veralteter Alias · Lösung: Variable auf N8N_WEBHOOK_URL umbenennen, Wert bleibt gleich (Quelle)

Symptom: Der Login lädt neu, ohne eine Fehlermeldung zu zeigen · Ursache: X-Forwarded-Proto fehlt, n8n verwirft das als secure markierte Cookie · Lösung: Header im Proxy ergänzen und N8N_PROXY_HOPS passend setzen, statt N8N_SECURE_COOKIE abzuschalten (Quelle)

Symptom: Jede Ausführung protokolliert dieselbe IP-Adresse · Ursache: N8N_PROXY_HOPS steht auf dem Standardwert 0, n8n vertraut X-Forwarded-For nicht · Lösung: Wert exakt auf die Anzahl der vorgeschalteten Proxys setzen, bei Cloudflare vor Caddy also 2 (Quelle)

Wenn Ihnen das für den produktiven Einsatz zu fehleranfällig ist, übernehmen wir bei NordFlux das Hosting-Setup zum Festpreis. Unsere n8n-Leistungen enthalten die hier beschriebene HTTPS- und Webhook-Konfiguration.

Häufige Fragen zu HTTPS für n8n

Muss ich N8N_WEBHOOK_URL manuell setzen, wenn mein Proxy schon SSL terminiert?

Ja, in nahezu jedem Reverse-Proxy-Setup. Der Proxy terminiert die Verschlüsselung, ändert aber nichts an den internen Standardwerten von n8n. Erst die explizite Angabe sorgt dafür, dass registrierte Webhooks die erreichbare Adresse enthalten.

Was ist der Unterschied zwischen Reverse Proxy und direkten SSL-Zertifikaten in n8n?

Der Unterschied liegt darin, wer die Verschlüsselung terminiert. Beim Reverse Proxy übernimmt Caddy oder Nginx das Zertifikat, intern läuft HTTP. Bei direkten Zertifikaten liest n8n über N8N_SSL_CERT und N8N_SSL_KEY selbst ein, und Sie verwalten die Erneuerung.

Wie viele Proxy-Hops trage ich ein, wenn Cloudflare vor Caddy oder Nginx läuft?

Der Wert muss der Anzahl der Stationen entsprechen, die eine Anfrage durchläuft. Bei einem einzelnen Proxy tragen Sie 1 ein, mit Cloudflare davor 2. Prüfen Sie das mit einem eingehenden Webhook-Aufruf und der protokollierten Client-IP.

Kann ich n8n auch ohne eigene Domain per HTTPS betreiben?

In der Praxis nicht. Caddy und die kostenlosen Zertifikatsstellen brauchen eine Domain mit öffentlichem DNS-Eintrag, eine reine IP-Adresse genügt nicht. Für produktive Webhooks benötigen Sie ohnehin eine stabile, öffentlich erreichbare Subdomain.

Simon Glowik, Gründer von NordFlux
Über den Autor

Gründer von NordFlux. Sieben Jahre Erfahrung von Web und SEO bis zur Automatisierung im Konzern-Maßstab, heute pragmatisch für den Mittelstand und mit deutscher Datenhoheit.

Zertifizierungen

  • Microsoft zertifiziert — PL-900 und AZ-900
  • UiPath zertifiziert — Automation Developer Associate
Alle Beiträge
Weiterlesen

Verwandte Anleitungen

Kostenlose Erstanalyse

HTTPS für n8n eingerichtet, aber die WEBHOOK_URL-Falle übersehen?

Ein Reverse Proxy allein reicht nicht: Ohne korrekt weitergereichte Header und eine passend gesetzte WEBHOOK_URL bricht die Webhook-Funktion trotz gültigem Zertifikat. NordFlux übernimmt den betreuten n8n-Betrieb inklusive Reverse-Proxy-Konfiguration mit Caddy oder Nginx, damit HTTPS, Login und Webhooks dauerhaft zusammenspielen. Im ersten Gespräch prüfen wir Ihr Proxy-Setup auf genau diese Stolperfallen.

n8n Kosten und Lizenzenn8n Hosting in Deutschland

  • Reverse-Proxy-Konfiguration mit korrekt weitergereichten Headern
  • WEBHOOK_URL und Editor-Base-URL sauber aufeinander abgestimmt
  • Laufende Betreuung, damit ein Zertifikatswechsel den Login nicht lahmlegt