Zum Ausprobieren läuft n8n in zehn Minuten auf dem eigenen Rechner. Für den Betrieb braucht es einen Server, der rund um die Uhr erreichbar ist, mit HTTPS, Sicherung und Updates. Der offizielle Weg dafür ist Docker Compose: Eine Datei beschreibt n8n und einen Reverse Proxy, ein Befehl startet beides. Der Proxy, in der offiziellen Anleitung Traefik, holt automatisch ein SSL-Zertifikat. Mit einem Server in Deutschland und einer eigenen Subdomain ist n8n in rund einer Stunde einsatzbereit. Die eigentliche Arbeit beginnt danach: Schlüssel sichern, Updates einspielen, den Server sauber halten. Dieser Artikel zeigt beides.
Was Sie brauchen
- Einen Linux-Server mit Docker und Docker Compose. Bei Hetzner etwa gibt es Rechenzentren in Falkenstein und Nürnberg und ein fertiges Image „Docker CE“ mit Ubuntu 24.04. Für die meisten Betriebe reicht ein kleiner Server. Wer den KI-Assistenten in n8n nutzt, sollte laut n8n mindestens 4 GB Arbeitsspeicher und zwei Prozessorkerne einplanen.
- Eine Domain und Zugriff auf deren DNS-Einstellungen.
- SSH-Zugang mit Schlüssel statt Passwort.
- Grundkenntnisse im Terminal. n8n schreibt selbst, dass Selbsthosten etwas für erfahrene Nutzer ist, weil Fehler zu Datenverlust und Sicherheitslücken führen können.
Ob Selbsthosten oder die Cloud von n8n besser passt, steht im Artikel n8n selbst hosten oder Cloud.
Schritt 1: Server vorbereiten
Melden Sie sich per SSH an und prüfen Sie, ob Docker Compose installiert ist:
docker compose version
Kommt eine Versionsnummer, ist alles da. Wenn nicht, installieren Sie Docker nach der offiziellen Anleitung von Docker (öffnet in neuem Tab) über das apt-Repository.
Firewall: Offen sein müssen nur die Ports 22 (SSH), 80 und 443. Wichtig zu wissen: Docker umgeht die Firewall ufw bei veröffentlichten Ports. Die offizielle Konfiguration bindet n8n deshalb nur an 127.0.0.1, sodass es von außen nur über den Proxy erreichbar ist. Bei Hetzner können Sie zusätzlich die kostenlose Cloud Firewall davorschalten.
Schritt 2: Subdomain einrichten
Legen Sie in den DNS-Einstellungen Ihrer Domain einen A-Eintrag an, etwa n8n, der auf die IP-Adresse des Servers zeigt. Ohne diesen Eintrag bekommt Traefik kein Zertifikat.
Schritt 3: Konfiguration anlegen
Legen Sie einen Ordner an und darin die Datei .env:
mkdir n8n-compose && cd n8n-compose
mkdir local-files
nano .env
DOMAIN_NAME=ihre-firma.de
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Berlin
SSL_EMAIL=it@ihre-firma.de
Die Zeitzone ist wichtiger, als sie aussieht: Ohne sie laufen zeitgesteuerte Workflows nach der Uhrzeit von New York.
Dann die Datei compose.yaml. Sie entspricht der offiziellen Anleitung von n8n, nur das Image steht auf einer festen Version. Stand Oktober 2026 ist 2.42.6 die stabile Version:
services:
traefik:
image: "traefik"
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n:2.42.6
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- TZ=${GENERIC_TIMEZONE}
- N8N_RESTRICT_FILE_ACCESS_TO=/files
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
n8n_data:
traefik_data:
Warum eine feste Version? n8n hat angekündigt, die Tags latest und next in einer künftigen Hauptversion zu entfernen, und empfiehlt, die Version zu pinnen. So entscheiden Sie selbst, wann ein Update kommt.
Schritt 4: Starten
sudo docker compose up -d
Nach ein, zwei Minuten ist n8n unter https://n8n.ihre-firma.de erreichbar. Beim ersten Aufruf legen Sie das Konto des Eigentümers an. Schalten Sie danach in den persönlichen Einstellungen die Zwei-Faktor-Anmeldung ein.
Schritt 5: Den Schlüssel sichern
Beim ersten Start erzeugt n8n einen Schlüssel, mit dem es alle gespeicherten Zugangsdaten verschlüsselt. Er liegt im Volume n8n_data, in der Datei config. Geht er verloren, lassen sich gesicherte Zugangsdaten nicht wiederherstellen. Kopieren Sie ihn an einen sicheren Ort außerhalb des Servers, etwa in Ihren Passwortmanager.
Für die Sicherung gehören zwei Dinge zusammen: das Volume mit dem Ordner /home/node/.n8n und die Datenbank. Zusätzlich exportiert n8n Workflows und Zugangsdaten als Dateien. Weil der Ordner local-files als /files eingebunden ist, landen die Dateien auf dem Server:
sudo docker compose exec -u node n8n n8n export:workflow --backup --output=/files/backup/workflows/
sudo docker compose exec -u node n8n n8n export:credentials --backup --output=/files/backup/credentials/
Dieser Export ersetzt keine vollständige Sicherung. Benutzer, Ausführungen und der Schlüssel fehlen darin.
Schritt 6: Updates einspielen
n8n empfiehlt, mindestens einmal im Monat zu aktualisieren, die Release Notes auf Änderungen zu prüfen und vorher zu sichern. Dann tragen Sie die neue Versionsnummer in die compose.yaml ein und starten neu:
sudo docker compose pull
sudo docker compose up -d
Ein Sicherheitscheck der eigenen Instanz geht mit einem Befehl. Er prüft unter anderem Zugangsdaten, ungeschützte Webhooks und veraltete Versionen:
sudo docker compose exec -u node n8n n8n audit
Für den Dauerbetrieb: Postgres und Task Runner
Die Konfiguration oben ist der offizielle Einstieg. Für den Dauerbetrieb empfiehlt n8n zwei Ergänzungen:
- PostgreSQL statt SQLite. SQLite ist laut n8n gut zum Ausprobieren, für Instanzen mit mehreren Nutzern oder Workflows rund um die Uhr ist Postgres die bessere Wahl.
- Task Runner im externen Modus. Der Code-Baustein in n8n führt JavaScript und Python aus. Ohne separaten Runner-Container läuft dieser Code im n8n-Prozess. n8n warnt: Dann könnte jeder, der Workflows bearbeiten darf, an Datenbank, Schlüssel und Zugangsdaten gelangen. Für den Betrieb gehört ein eigener Container mit dem Image
n8nio/runnersin derselben Version dazu.
Ein offizielles Beispiel mit beidem liegt im Repository n8n-hosting (öffnet in neuem Tab). Achten Sie beim Übernehmen darauf, n8n auch dort nur an 127.0.0.1 zu binden.
Ihre Checkliste für den Betrieb
Zum Abhaken
Checkliste: n8n sicher betreiben
Gehen Sie die Punkte nach der Installation durch. Der Stand bleibt in Ihrem Browser gespeichert.
-
Passwort-Anmeldung am Server abgeschaltet.
-
n8n selbst nur an 127.0.0.1 gebunden, Cloud Firewall davor.
-
Zertifikat gültig, http leitet auf https um.
-
Für das Eigentümerkonto und alle weiteren Konten.
-
Datei config aus dem Volume, etwa im Passwortmanager.
-
Und die Wiederherstellung einmal ausprobiert.
-
Feste Versionsnummer in der compose.yaml statt latest.
-
Release Notes lesen, sichern, aktualisieren.
-
Eigener Container mit n8nio/runners in derselben Version.
-
Nach der Einrichtung und nach größeren Änderungen.
Unterstützung anfragen Ihr Stand und die offenen Punkte stehen schon in der Nachricht.
Was die Lizenz erlaubt
n8n steht unter einer eigenen Lizenz, die n8n inzwischen Community-Lizenz nennt. Die Grenze zieht n8n daran, wer Workflows erstellt oder bearbeitet: Wenn das nur Sie und Menschen aus Ihrem Unternehmen tun, ist die Nutzung kostenlos. Nicht erlaubt ist, n8n als Dienst anzubieten, in dem Kunden eigene Workflows bauen. Ein Dienstleister darf n8n aber auf dem Server des Kunden einrichten und betreuen. Die Details stehen in der Lizenz-FAQ von n8n (öffnet in neuem Tab). Dieser Abschnitt ist keine Rechtsberatung.
Wo Selbsthosten an Grenzen stößt
Ein eigener Server heißt eigene Verantwortung. Niemand spielt Sicherheitsupdates für Betriebssystem, Docker und n8n ein, wenn Sie es nicht tun. Niemand merkt nachts, wenn der Server voll läuft. Für einen Betrieb ohne eigene IT kann die Cloud von n8n oder eine betreute Instanz deshalb die bessere Wahl sein, auch wenn sie mehr kostet. Und wer nur ausprobieren will, ist mit der lokalen Installation besser bedient.
So fangen Sie an
Richten Sie n8n zuerst auf einem Testserver ein und spielen Sie einmal den ganzen Kreislauf durch: installieren, Workflow bauen, sichern, Server neu aufsetzen, Sicherung zurückspielen. Wenn das klappt, sind Sie bereit für den Betrieb.
Meine eigene Instanz läuft auf einem Droplet bei DigitalOcean. Für Kunden richte ich n8n auf ihrem eigenen Server ein, baue die Workflows dazu und kümmere mich auf Wunsch um Updates und Überwachung. Server und n8n-Instanz gehören dabei Ihnen, so wie es die Lizenz von n8n vorsieht.