• 02.08.2026
  • Automatisierung
  • Self-Hosting

n8n mit Docker selbst hosten: Schritt für Schritt auf dem eigenen Server bei Hetzner

Stand: 02.08.2026

Die meisten Anleitungen zu n8n hören genau da auf, wo es interessant wird: Du hast n8n gestartet, es läuft auf localhost, und dann stehst du vor der Frage, wie das Ding sicher, dauerhaft und über eine echte Domain erreichbar auf einem Server landet. Diese Anleitung geht den kompletten Weg: erst n8n lokal mit Docker installieren und ausprobieren, dann auf einer kleinen Hetzner-Instanz produktiv betreiben, mit HTTPS, Backups und Updates. Und am Ende der Teil, den fast alle vergessen, nämlich ob Self-Hosting allein dich schon DSGVO-konform macht.

Das Wichtigste in Kürze:

  • Zum Ausprobieren genügt Docker auf deinem eigenen Rechner. Mit zwei kurzen Befehlen läuft n8n unter http://localhost:5678.
  • Für den Produktivbetrieb nimmst du eine kleine Cloud-Instanz (z. B. bei Hetzner), Docker Compose und einen Reverse Proxy wie Traefik, der dir automatisch ein HTTPS-Zertifikat holt.
  • Das Wichtigste beim Backup ist nicht nur die Datenbank, sondern der Verschlüsselungsschlüssel im Volume. Ohne ihn sind alle gespeicherten Zugangsdaten verloren.
  • Self-Hosting ist eine technische, keine rechtliche Garantie. Den Datenschutz musst du zusätzlich sauber aufsetzen.

Was brauche ich, um n8n selbst zu hosten?

Für den Anfang brauchst du nur Docker auf deinem Rechner, für den Dauerbetrieb einen kleinen Server und eine Domain. Mehr nicht. n8n ist bewusst genügsam: Eine Cloud-Instanz mit 2 CPU-Kernen und 4 GB RAM trägt die meisten Mittelstands-Workflows problemlos, und so eine Instanz kostet bei einem deutschen Hoster wie Hetzner nur wenige Euro im Monat.

Zwei Wege führen zum Ziel, und diese Anleitung nimmt beide der Reihe nach. Zuerst installierst du n8n lokal mit Docker, um ein Gefühl dafür zu bekommen. Danach setzt du es produktiv auf einem Hetzner-Server auf, diesmal über deine eigene Domain und mit verschlüsselter Verbindung. Der lokale Schritt ist optional, aber er spart dir später Fehlersuche, weil du n8n dann schon kennst.

Warum Docker und nicht die npm-Installation?

Weil Docker dir das halbe Betriebssystem-Chaos erspart. n8n empfiehlt Docker ausdrücklich als bevorzugten Weg, weil es eine saubere, isolierte Umgebung liefert, Inkompatibilitäten zwischen Betriebssystem und Node-Versionen vermeidet und Datenbank sowie Konfiguration einfacher handhabbar macht (n8n Docs, Install with Docker).

Die Alternative, n8n direkt über npm zu installieren, funktioniert zwar, bindet dich aber an die richtige Node-Version auf dem Host und macht Updates fummeliger. Für einen Server, der stabil laufen soll, ist Docker die ruhigere Wahl. Ein Update ist dann ein neues Image statt einer Bastelei an der Systemumgebung.

Wie installiere ich n8n lokal mit Docker?

Mit Docker sind es genau zwei Befehle. Der erste legt ein benanntes Volume an, in dem n8n seine Daten dauerhaft speichert, der zweite startet den Container:

docker volume create n8n_data

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

Danach öffnest du http://localhost:5678 im Browser und legst dein Benutzerkonto an. Ein paar Dinge sind hier wichtig zu verstehen. Die beiden Zeitzonen-Variablen musst du beide setzen: GENERIC_TIMEZONE steuert die zeitgesteuerten Nodes (etwa den Schedule-Trigger), TZ die Systemzeit des Containers (n8n Docs, Install with Docker). Für Deutschland ist Europe/Berlin richtig. N8N_RUNNERS_ENABLED=true aktiviert die sogenannten Task Runners, die ab n8n 2.0 ohnehin Standard sind und in der 1.x-Reihe empfohlen werden (n8n Docs, Task runners).

Zwei Flags am docker run sind nur für den Test gedacht: -it hängt dich an die Konsole, und --rm löscht den Container beim Beenden wieder. Deine Daten bleiben trotzdem erhalten, weil sie im Volume n8n_data liegen, nicht im Container. Für den echten Betrieb tauschst du diese Flags gleich gegen einen Dauerbetrieb aus.

Wie richte ich den Hetzner-Server für n8n ein?

Du erstellst eine kleine Cloud-Instanz mit Ubuntu, installierst Docker und öffnest die richtigen Ports. Konkret sind das vier Schritte. Erstens legst du in der Hetzner Cloud Console einen Server an, eine kleine Instanz mit 2 Kernen und 4 GB RAM genügt, als Betriebssystem nimmst du Ubuntu in der aktuellen LTS-Version. Zweitens verbindest du dich per SSH mit dem Server.

Drittens installierst du Docker. Der offizielle Weg von Docker selbst ist ein kurzes Skript:

curl -fsSL https://get.docker.com | sh

Viertens sorgst du dafür, dass die Firewall die Ports 80 und 443 durchlässt, denn über die läuft gleich der verschlüsselte Zugriff. Bei Hetzner stellst du das entweder in der Cloud Firewall in der Console ein oder direkt auf dem Server. Den Port 5678 aus dem lokalen Test brauchst du von außen nicht mehr offen, weil der Reverse Proxy den Zugriff übernimmt.

Warum Hetzner und nicht ein US-Anbieter? Weil der Serverstandort für den Datenschutz zählt. Hetzner ist ein deutscher Hoster mit Rechenzentren in Deutschland und der EU, und das macht die spätere DSGVO-Einordnung deutlich einfacher als eine Instanz irgendwo in den USA. Genau darauf gehen wir im Datenschutz-Abschnitt noch ein.

Wie mache ich n8n über eine Domain mit HTTPS erreichbar?

Über Docker Compose mit einem Reverse Proxy, der das HTTPS-Zertifikat automatisch besorgt. n8n liefert dafür eine offizielle Vorlage mit Traefik, einem Reverse Proxy, der sich per Let’s Encrypt selbst um das TLS-Zertifikat kümmert (n8n Docs, Use Docker Compose). Bevor du startest, lässt du in deiner DNS-Verwaltung einen A-Record deiner Subdomain (etwa n8n.deinefirma.de) auf die IP-Adresse des Hetzner-Servers zeigen.

So hängen die Teile zusammen: Der Browser spricht ausschließlich verschlüsselt mit Traefik, und Traefik reicht die Anfrage intern an den n8n-Container weiter. Von außen ist nur der Reverse Proxy erreichbar, n8n selbst und seine Daten bleiben im internen Netz des Servers.

Architektur einer self-hosted n8n-Instanz hinter Traefik auf einem Hetzner-Server Hetzner-Server: Ubuntu + Docker Browser Nutzer Traefik Reverse Proxy Let's Encrypt n8n Container Volume n8n_data Workflows + Verschlüsselungsschlüssel HTTPS · 443 5678 liest / schreibt
Der Weg einer Anfrage: Von außen ist nur Traefik über HTTPS erreichbar. Die n8n-Daten liegen im Volume, weshalb genau dieses Volume ins Backup gehört.

Die Konfiguration besteht aus zwei Dateien im selben Ordner. Zuerst eine .env-Datei mit deinen Werten:

DOMAIN_NAME=deinefirma.de
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Berlin
SSL_EMAIL=du@deinefirma.de

Dann die docker-compose.yml. Die folgende Fassung ist die auf das Wesentliche gekürzte Variante der offiziellen Vorlage aus dem n8n-hosting-Repository, wo auch der vollständige, immer aktuelle Traefik-Block liegt:

services:
  traefik:
    image: traefik
    restart: always
    command:
      - "--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.mytls.acme.tlschallenge=true"
      - "--certificatesresolvers.mytls.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytls.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
    restart: always
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.entrypoints=websecure
      - traefik.http.routers.n8n.tls.certresolver=mytls
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PROTOCOL=https
      - N8N_PORT=5678
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
      - N8N_RUNNERS_ENABLED=true
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
  traefik_data:

Gestartet wird das Ganze mit einem Befehl:

docker compose up -d

Das -d startet die Container im Hintergrund, sie laufen also weiter, auch wenn du die SSH-Verbindung schließt. Beim ersten Aufruf deiner Domain holt Traefik das Zertifikat, das kann einen Moment dauern. Danach erreichst du n8n unter https://n8n.deinefirma.de. Die Variablen N8N_HOST und WEBHOOK_URL sind hier keine Kosmetik: Ohne die korrekte WEBHOOK_URL erzeugt n8n Webhook-Adressen mit localhost, und externe Dienste können deine Workflows dann nicht auslösen.

Wie sichere und aktualisiere ich meine n8n-Instanz?

Backup heißt bei n8n vor allem: das Volume sichern, und zwar inklusive des Verschlüsselungsschlüssels. Das ist der Punkt, an dem die meisten Anleitungen zu kurz greifen. n8n verschlüsselt deine gespeicherten Zugangsdaten mit einem Schlüssel, der im Verzeichnis /home/node/.n8n liegt, also in deinem Volume (n8n Docs, Encryption key).

Wichtig: Verlierst du diesen Schlüssel, sind alle gespeicherten Credentials unbrauchbar, selbst wenn die Datenbank noch da ist. Ein Backup, das nur die Workflows, aber nicht den Schlüssel umfasst, ist deshalb nur ein halbes Backup. Sichere das gesamte Volume n8n_data, dann hast du beides. Wer den Schlüssel fest im Griff haben will, setzt ihn über die Variable N8N_ENCRYPTION_KEY selbst und legt ihn zusätzlich an einem sicheren Ort ab, dann lässt sich eine Instanz jederzeit reproduzieren.

Ein Update ist mit Docker unspektakulär. Du holst das neue Image, stoppst den alten Container und startest neu:

docker compose pull
docker compose up -d

Weil deine Daten im Volume liegen und nicht im Container, übersteht ein Update den Austausch des Images unbeschadet. Trotzdem gilt die alte Regel: erst Backup, dann Update. Für den Produktivbetrieb ist es außerdem ratsam, im image-Eintrag eine feste Version (etwa docker.n8n.io/n8nio/n8n:1.NN.N) statt des mitlaufenden latest einzutragen, damit ein docker compose pull dich nicht unbemerkt auf einen Versionssprung zieht. Vor größeren Sprüngen (etwa 1.x auf 2.x) lohnt sich ein kurzer Blick in die Release Notes, weil sich dabei Standardeinstellungen ändern können.

Reicht Self-Hosting schon für die DSGVO?

Nein, und das ist der wichtigste Satz dieser Anleitung. Self-Hosting gibt dir die technische Kontrolle über deine Daten, aber es ist keine automatische Datenschutz-Garantie. Zwei Dinge musst du zusätzlich klären. Erstens ist dein Hoster, sobald deine Instanz bei ihm läuft, dein Auftragsverarbeiter, mit dem du in der Regel einen Auftragsverarbeitungsvertrag (AVV) brauchst. Bei einem deutschen Hoster wie Hetzner bekommst du den üblicherweise direkt im Kundenkonto.

Zweitens, und das ist das eigentliche Risiko, verlassen deine Daten dein Haus in dem Moment, in dem ein Workflow einen externen Dienst aufruft, etwa ein US-Sprachmodell wie OpenAI. Dann hast du wieder eine Drittlandübermittlung, egal wie sauber n8n self-hosted läuft. Warum das so ist und welche Verträge in welchem Modell gelten, haben wir ausführlich im Beitrag n8n self-hosted oder Cloud: Was ist DSGVO-konform aufgeschlüsselt. Und welche KI-Tools du überhaupt DSGVO-konform einsetzen kannst, klärt unser Leitfaden zu DSGVO-konformer KI. Lies beide, bevor du produktiv gehst.

Checkliste: n8n mit Docker produktiv betreiben

  • Lokal getestet: n8n läuft mit docker run unter localhost:5678.
  • Server steht: kleine Hetzner-Instanz mit Ubuntu, Docker installiert, Ports 80 und 443 offen.
  • DNS gesetzt: A-Record der Subdomain zeigt auf die Server-IP.
  • HTTPS aktiv: Docker Compose mit Traefik, Zertifikat von Let’s Encrypt wird automatisch bezogen.
  • WEBHOOK_URL und N8N_HOST korrekt auf die echte Domain gesetzt.
  • Backup eingerichtet: das gesamte Volume n8n_data inklusive Verschlüsselungsschlüssel.
  • Update-Weg klar: docker compose pull und docker compose up -d, immer nach einem Backup.
  • Datenschutz geklärt: AVV mit dem Hoster, und jede Drittanbieter-Node geprüft.

Häufige Fragen

Kann ich n8n auch nur lokal installieren, ohne Server?

Ja. Der docker run-Befehl aus dieser Anleitung startet n8n direkt auf deinem Rechner unter localhost:5678. Das ist ideal, um Workflows zu bauen und auszuprobieren. Für Automatisierungen, die dauerhaft laufen oder von außen per Webhook erreichbar sein müssen, brauchst du aber einen Server, weil dein Laptop dafür nicht rund um die Uhr online ist.

Welche Servergröße brauche ich für n8n bei Hetzner?

Für die meisten Mittelstands-Workflows reicht eine kleine Instanz mit 2 CPU-Kernen und 4 GB RAM. n8n ist ressourcenschonend, solange du keine sehr großen Datenmengen in einem einzelnen Workflow verarbeitest oder Dutzende Workflows gleichzeitig laufen lässt. Du kannst klein anfangen und den Server bei Hetzner später mit wenigen Klicks vergrößern.

Brauche ich für n8n zwingend eine Datenbank wie PostgreSQL?

Nicht am Anfang. n8n nutzt standardmäßig eine eingebettete SQLite-Datenbank im Volume, und das genügt für viele Instanzen. Wenn deine Instanz stark wächst oder du mehrere n8n-Prozesse parallel betreiben willst, ist ein Wechsel auf PostgreSQL sinnvoll. Für den Einstieg brauchst du dich darum nicht zu kümmern.

Darf ich n8n kommerziell selbst hosten?

Ja, für den eigenen Geschäftsbetrieb. n8n steht unter der Sustainable Use License, die das Self-Hosting für interne Zwecke und das Bauen von Kunden-Workflows erlaubt. Nicht erlaubt ist, n8n als gehosteten Dienst an Dritte weiterzuverkaufen. Details dazu stehen im Beitrag zu n8n-Lizenz und DSGVO im Detail.

Fazit

n8n selbst zu hosten ist kein Hexenwerk: ein docker run zum Testen, eine kleine Hetzner-Instanz mit Docker Compose und Traefik für den Betrieb, und ein Backup, das den Verschlüsselungsschlüssel nicht vergisst. Der technische Teil ist an einem Nachmittag erledigt. Der Teil, der wirklich zählt, ist danach: zu wissen, welche Daten deine Workflows wohin schicken, und den Datenschutz von Anfang an mitzudenken statt hinterher.

Wenn du den Betrieb nicht selbst übernehmen willst oder eine saubere, DSGVO-feste Einrichtung brauchst, ist genau das unsere Arbeit. Wir richten n8n auf deiner eigenen Infrastruktur ein, kümmern uns um Betrieb und Weiterentwicklung und klären die Datenschutzfrage direkt mit. Buch dir dafür ein kostenloses Erstgespräch oder schreib uns kurz.

Wir haben diesen Beitrag nach bestem Wissen und Gewissen erstellt und alle Schritte sorgfältig geprüft. Trotzdem erfolgt die Umsetzung vollständig auf eigene Verantwortung, und wir übernehmen keinerlei Haftung für Fehler, Ausfälle oder Datenverluste, die beim Nachbauen entstehen. Erstelle vor Änderungen immer ein Backup. Der Datenschutz-Teil ist eine allgemeine Einordnung und keine Rechtsberatung; für deinen konkreten Fall zieh bitte deinen Datenschutzbeauftragten oder fachkundigen Rat hinzu.

← Zurück zum Blog