n8n-Kubernetes-Install: Schritt-für-Schritt-Anleitung
Kubernetes wird genutzt, um Anwendungen wie n8n in Containern bereitzustellen, zu verwalten und bei Bedarf zu skalieren. In dieser Anleitung erfahren Sie, wie Sie n8n mit Kubernetes installieren und so eine saubere, nachvollziehbare Basis für den späteren Betrieb schaffen.
Schritt 1: Voraussetzungen prüfen und den passenden Server wählen
Bevor Sie n8n mit Kubernetes installieren, benötigen Sie zunächst einen Linux-Server, idealerweise mit einer festen öffentlichen IP-Adresse, einer eigenen Domain oder Subdomain und Root-Zugriff. Für diese Anleitung ist ein einzelner Server mit Ubuntu als Grundlage am einfachsten, auf dem anschließend ein leichtgewichtiges Kubernetes wie K3s eingerichtet wird. K3s eignet sich gut für den Einstieg und bringt bereits mehrere typische Kubernetes-Bausteine mit.
Wichtig ist außerdem, die Servergröße realistisch zu wählen. Hierbei sollten Sie darauf achten, dass Kubernetes selbst zusätzliche Systemkomponenten mitbringt und n8n ebenfalls Speicher sowie CPU benötigt. Im Folgenden haben wir einige typische Einsatzgebiete und die passenden Server zusammengestellt.
Wenn Sie n8n noch nicht kennen oder Alternativen vergleichen möchten, lohnt sich ein Vergleich von n8n vs. Zapier oder n8n vs. Make. Während Zapier und Make stärker auf einfache Cloud-Automatisierungen ausgelegt sind, bietet n8n durch Self-Hosting deutlich mehr Kontrolle und Flexibilität.
Lern- und Testumgebung für den privaten Gebrauch
Wenn Sie n8n und Kubernetes zunächst kennenlernen möchten, reicht eine kleine Serverkonfiguration völlig aus. In diesem Szenario geht es vor allem darum, erste n8n-Workflows zu erstellen, die Oberfläche zu verstehen und grundlegende Automatisierungen auszuprobieren. Die Auslastung ist dabei in der Regel gering, da nur wenige Workflows gleichzeitig laufen und keine dauerhafte Nutzung im Hintergrund stattfindet. Eine Ausstattung Ihres VPS mit 2 vCores, 2 GB RAM und 80 GB NVMe genügt hier meist. Beachten Sie jedoch, dass Kubernetes selbst bereits Ressourcen benötigt, sodass die Leistung begrenzt ist. Für produktive oder dauerhaft laufende Workflows ist diese Variante daher nur eingeschränkt geeignet.
Privatanwenderinnen und -anwneder mit produktiver Nutzung oder kleine Startups
Wenn Sie n8n aktiv im Alltag einsetzen möchten, beispielsweise für Automatisierungen zwischen Tools, APIs oder eigenen Projekten, sollten Sie etwas mehr Leistung einplanen. In diesem Anwendungsfall laufen Workflows regelmäßig oder werden durch Webhooks ausgelöst. Auch erste Team-Nutzungen oder kleinere Projekte sind hier denkbar. Eine Konfiguration mit 4 vCores, 4 GB RAM und 120 GB NVMe bietet eine gute Balance aus Leistung und Kosten. Sie haben damit ausreichend Reserven für mehrere gleichzeitige Workflow-Ausführungen. Diese Variante eignet sich somit gut als Einstieg in eine produktive Nutzung.
KMU mit mehreren Workflows und regelmäßigen Ausführungen
Für kleine und mittlere Unternehmen wird n8n häufig zur Automatisierung von Geschäftsprozessen eingesetzt. Typische Beispiele sind die Integration von CRM-Systemen, E-Mail-Automatisierungen oder die Verarbeitung von Bestellungen aus einem Onlineshop. In solchen Szenarien laufen Workflows regelmäßig und teilweise parallel, wodurch die Systemlast deutlich steigt. Eine Ausstattung mit 6 vCores, 8 GB RAM und 240 GB NVMe bietet hier eine stabile Grundlage für den produktiven Betrieb. Sie profitieren von schnelleren Ausführungen und vermeiden Engpässe bei mehreren gleichzeitigen Prozessen. Zudem haben Sie genug Spielraum, um die Installation später zu erweitern.
Wachsende Teams, Agenturen oder stark automatisierte Umgebungen
Wenn n8n intensiv genutzt wird und viele Workflows gleichzeitig laufen, steigen die Anforderungen deutlich. In Agenturen oder größeren Teams werden oft zahlreiche Automatisierungen parallel ausgeführt, da Marketing, Datenverarbeitung und interne Prozesse abgebildet werden. Auch komplexere Workflows mit mehreren API-Aufrufen oder längeren Laufzeiten sind hier üblich. Eine leistungsstärkere Konfiguration mit 8 vCores, 16 GB RAM und 480 GB NVMe sorgt dafür, dass das System stabil und performant bleibt. Diese Variante bietet genügend Reserven für Wachstum und höhere Lastspitzen. Gleichzeitig schafft sie eine gute Basis, um später auf skalierbarere Kubernetes-Setups zu erweitern.
Übersichtstabelle: Server und Einsatzszenarien
| Anwendungsgebiet | Typischer Einsatz | Empfohlene Ausstattung |
|---|---|---|
| Lern- und Testumgebungen | Erste Schritte mit Kubernetes, einzelne n8n-Workflows, kein Dauerbetrieb mit hoher Last | 2 vCores CPU, 2 GB RAM, 80 GB NVMe |
| Privatanwendende mit produktiver Nutzung oder kleine Startups | Eigene Automatisierungen, Webhooks, kleinere API-Anbindungen, erste Team-Nutzung | 4 vCores CPU, 4 GB RAM, 120 GB NVMe |
| KMU mit mehreren Workflows und regelmäßigen Ausführungen | Interne Automatisierungen, CRM-/Shop-/Mail-Anbindungen, mehrere User | 6 vCores CPU, 8 GB RAM, 240 GB NVMe |
| Wachsende Teams, Agenturen oder stark automatisierte Umgebungen | Viele aktive Workflows, häufige Webhooks, Reserven für spätere Skalierung | 8 vCores CPU, 16 GB RAM, 480 GB NVMe |
Für besonders umfangreiche Szenarien mit vielen gleichzeitigen Ausführungen oder zusätzlichen Diensten auf demselben Server kann auch eine größere Ausstattung mit 12 vCores, 24 GB RAM und 720 GB NVMe ebenfalls sinnvoll sein.
- Maximale Effizienz ohne Mehraufwand
- Self-hosted Automation: Keine Task-Limits, volle Kostenkontrolle
- Über 500 Integrationen & Tools dank Open Source
Schritt 2: Server vorbereiten und Basis-Pakete installieren
Melden Sie sich per SSH auf Ihrem Ubuntu-Server an und aktualisieren Sie zunächst die Paketquellen sowie die installierten Pakete. Das ist wichtig, damit Sie mit einer sauberen und aktuellen Grundlage starten.
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget nano opensslbashAnschließend können Sie prüfen, ob der Server korrekt erreichbar ist und bereits eine öffentliche IP besitzt:
hostname -IbashSie können die öffentliche IP zusätzlich bei Ihrem Hosting-Anbieter überprüfen. Notieren Sie sich die Adresse, denn Sie benötigen sie gleich für den DNS-Eintrag Ihrer Subdomain.
Schritt 3: Subdomain auf den Server zeigen lassen
Legen Sie bei Ihrem Domain-Anbieter einen A-Record für Ihre gewünschte Subdomain an. Wenn Ihre n8n-Instanz später unter n8n.ihre-domain.de erreichbar sein soll, muss genau diese Subdomain auf die öffentliche IP Ihres Servers verweisen. Erst wenn dieser DNS-Record aktiv ist, können HTTPS und der externe Zugriff zuverlässig funktionieren.
Ein typischer DNS-Eintrag sieht so aus:
Typ: A
Name: n8n
Wert: 203.0.113.10
TTL: 3600txtSchritt 4: K3s installieren
Für Einsteigerinnen und Einsteiger ist K3s meist der angenehmste Weg, um Kubernetes auf einem einzelnen Server bereitzustellen. K3s bringt standardmäßig mehrere wichtige Komponenten als Addons mit, darunter Traefik als Ingress-Controller und local-storage für lokale Persistenz.
Installieren Sie K3s zunächst mit folgendem Befehl:
curl -sfL https://get.k3s.io | sh -bashPrüfen Sie danach mit folgendem Befehl, ob der Dienst läuft:
sudo systemctl status k3sbashKubernetes-Cluster nutzen unterschiedliche Ingress-Controller, um externen Traffic an Services weiterzuleiten. In K3s ist standardmäßig Traefik aktiviert. Andere Controller wie NGINX oder HAProxy werden ebenfalls häufig genutzt, unterscheiden sich aber im Verhalten und Routing sowie in den erforderlichen Einstellungen.
Wenn alles korrekt gestartet ist, können Sie den Cluster-Status abrufen:
sudo k3s kubectl get nodesbash
Damit Sie kubectl leichter verwenden können, legen Sie am besten noch einen Alias an:
echo 'alias kubectl="sudo k3s kubectl"' >> ~/.bashrc
source ~/.bashrc
kubectl get nodesbashWenn hier Ihr Server mit dem Status „Ready“ erscheint, ist Kubernetes einsatzbereit.
Wenn Sie keine Kubernetes-Umgebung betreiben möchten, gibt es auch einfachere Installationswege wie eine n8n Docker Installation oder Setups über andere Plattformen: So können Sie n8n mit CapRover oder n8n mit CasaOS nutzen. Diese eignen sich besonders für kleinere Projekte oder Einsteigerinnen und Einsteiger. Auch eine n8n Plesk Installation ist denkbar.
Schritt 5: Helm installieren
Der offizielle n8n-Helm-Chart setzt Helm 3.12 oder neuer voraus. Helm ist ein sogenannter Paketmanager für Kubernetes und übernimmt eine ähnliche Rolle wie apt unter Ubuntu. Statt einzelne Konfigurationsdateien manuell zu erstellen und zu verwalten, können Sie mit Helm komplette Anwendungen als sogenannte „Charts“ installieren. Dadurch wird die Installation deutlich einfacher, übersichtlicher und weniger fehleranfällig.
Gerade für Einsteigerinnen und Einsteiger ist Helm besonders hilfreich, da Sie nicht jede einzelne YAML-Datei verstehen oder selbst schreiben müssen. Stattdessen passen Sie nur einige zentrale Einstellungen an und Helm übernimmt den Rest automatisch. Auch Updates oder Änderungen lassen sich später einfacher durchführen, weil Helm den Zustand Ihrer Installation verwaltet.
Installieren Sie Helm nun direkt auf Ihrem Server. Die offizielle Helm-Dokumentation beschreibt die Installation über vorkompilierte Binärdateien; unter Ubuntu ist jedoch auch die Installation über das bereitgestellte Script üblich. Diese ist besonders unkompliziert:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.shbashMit dem ersten Befehl laden Sie das Installationsskript herunter. Anschließend machen Sie die Datei ausführbar und führen sie aus. Das Script installiert Helm automatisch in der passenden Version auf Ihrem System.
Prüfen Sie danach, ob die Installation erfolgreich war, indem Sie sich die installierte Version anzeigen lassen:
helm versionbash
Wenn hier eine Versionsnummer ausgegeben wird, ist Helm korrekt installiert und Sie den n8n-Chart verwenden.
Viele Nutzerinnen und Nutzer wechseln im Laufe der Zeit von einfacheren Tools zu n8n. Eine typische Entwicklung ist dabei die Zapier Migration zu n8n, um mehr Kontrolle über Daten, Workflows und Hosting zu erhalten.
Schritt 6: Namespace für n8n anlegen
Damit die n8n-Ressourcen sauber von anderen Kubernetes-Objekten getrennt sind, erstellen Sie nun einen eigenen Namespace. Das ist in Kubernetes eine bewährte Praxis.
kubectl create namespace n8nbashKontrollieren Sie danach, ob der Namespace vorhanden ist:
kubectl get namespacesbash
Schritt 7: cert-manager für TLS-Zertifikate installieren
Für eine öffentlich erreichbare Installation sollten Sie n8n direkt mit HTTPS bereitstellen. n8n selbst empfiehlt bei TLS den Einsatz eines Reverse Proxys beziehungsweise eines vorgeschalteten HTTP/HTTPS-Layers. In Kubernetes übernimmt diese Rolle in dieser Anleitung Traefik, während cert-manager die Ausstellung und Erneuerung der Zertifikate automatisiert. cert-manager kann ebenfalls über einen Helm-Chart installiert werden. Nutzen Sie hierzu folgenden Befehl:
helm install cert-manager oci://quay.io/jetstack/charts/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=truebashPrüfen Sie danach die Pods. Pods sind die kleinste ausführbare Einheit in Kubernetes und enthalten einen oder mehrere Container, die gemeinsam auf einem Knoten laufen. Sie stellen sicher, dass die enthaltenen Container zusammen ausgeführt werden und sich Ressourcen wie Netzwerk und Speicher teilen.
kubectl get pods -n cert-managerbash
Warten Sie, bis alle Pods den Status „Running“ oder „Completed“ erreicht haben.
Schritt 8: Let’s-Encrypt-ClusterIssuer anlegen
Damit cert-manager später automatisch Zertifikate für Ihre Domain erstellen kann, legen Sie jetzt einen sogenannten ClusterIssuer für Let’s Encrypt an. Ein ClusterIssuer ist eine zentrale Konfiguration in Kubernetes, die festlegt, von welchem Anbieter Zertifikate bezogen werden und wie die Überprüfung Ihrer Domain erfolgt. In diesem Fall wird Let’s Encrypt genutzt, ein kostenloser Anbieter für SSL-Zertifikate.
Für Einsteigerinnen und Einsteiger ist die Validierung per HTTP-01 meist am einfachsten, weil dabei keine Verbindung zu einer DNS-API erforderlich ist. Stattdessen prüft Let’s Encrypt, ob Ihre Domain erreichbar ist, indem eine spezielle Datei über Ihre Website abgerufen wird. Wenn diese Anfrage erfolgreich ist, gilt die Domain als verifiziert und das Zertifikat wird ausgestellt.
Erstellen Sie nun eine Datei namens clusterissuer.yaml:
nano clusterissuer.yamlbashIn dieser definieren Sie dann folgende Einstellungen:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: ihre-mailadresse@beispiel.de
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
ingressClassName: traefikyamlErsetzen Sie die E-Mail-Adresse durch Ihre eigene. Diese wird von Let’s Encrypt verwendet, um Sie über wichtige Informationen wie ablaufende Zertifikate zu informieren.
Wenden Sie die Datei anschließend auf Ihren Kubernetes-Cluster an:
kubectl apply -f clusterissuer.yamlbashDamit wird der ClusterIssuer erstellt und steht allen Anwendungen im Cluster zur Verfügung. Prüfen Sie anschließend, ob die Ressource korrekt angelegt wurde:
kubectl get clusterissuerbash
Wenn der ClusterIssuer angezeigt wird, ist die Konfiguration erfolgreich. Die eigentliche Ausstellung eines Zertifikats erfolgt später automatisch, sobald n8n über eine Domain erreichbar ist und ein entsprechender Ingress eingerichtet wurde.
Schritt 9: n8n-Secret mit den wichtigsten Umgebungsvariablen anlegen
Der offizielle Helm-Chart erwartet zentrale Secret-Werte, darunter N8N_ENCRYPTION_KEY, N8N_HOST, N8N_PORT und N8N_PROTOCOL. Diese Werte sind immer erforderlich. Ersetzen Sie n8n.ihre-domain.de durch Ihre echte Subdomain und führen Sie dann folgenden Befehl aus:
kubectl create secret generic n8n-secrets -n n8n \
--from-literal=N8N_ENCRYPTION_KEY=$(openssl rand -hex 32) \
--from-literal=N8N_HOST=n8n.ihre-domain.de \
--from-literal=N8N_PORT=5678 \
--from-literal=N8N_PROTOCOL=https \
--from-literal=WEBHOOK_URL=https://n8n.ihre-domain.de/ \
--from-literal=N8N_PROXY_HOPS=1bashSchritt 10: values-Datei für die n8n-Installation anlegen
Wir installieren n8n im sogenannten Standalone-Modus. Das bedeutet, dass n8n in einer einfachen Konfiguration betrieben wird: Es läuft in einem einzelnen Pod und benötigt keine zusätzlichen Dienste wie eine externe Datenbank oder Redis. Stattdessen wird eine integrierte SQLite-Datenbank verwendet. Diese Variante ist ideal für erste Projekte, kleinere Installationen oder zum Lernen, da sie deutlich weniger komplex ist.
Damit Helm weiß, wie n8n eingerichtet werden soll, erstellen Sie nun eine Konfigurationsdatei namens n8n-values.yaml.
nano n8n-values.yamlbashIn dieser Datei legen Sie die wichtigsten Einstellungen für Ihre Installation fest, zum Beispiel Umgebungsvariablen, Speicherplatz oder die Domain.
queueMode:
enabled: false
database:
type: sqlite
useExternal: false
redis:
enabled: false
persistence:
enabled: true
size: 10Gi
secretRefs:
existingSecret: n8n-secrets
main:
extraEnv:
- name: TZ
value: Europe/Berlin
ingress:
enabled: true
className: traefik
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: n8n.ihre-domain.de
paths:
- path: /
pathType: Prefix
tls:
- secretName: n8n-tls
hosts:
- n8n.ihre-domain.deyamlErsetzen Sie unbedingt n8n.ihre-domain.de durch Ihre eigene Domain. Diese Datei dient als zentrale Steuerung für Ihre Installation und kann später jederzeit angepasst werden, wenn Sie n8n erweitern oder skalieren möchten.
Der Chart bietet deutlich mehr Optionen, darunter auch Queue Mode, Worker, HPA und dedizierte Webhook-Prozessoren. Für eine erste Installation ist diese reduzierte Konfiguration aber meist der sinnvollste Einstieg. Die offiziellen n8n-Unterlagen unterscheiden klar zwischen Standalone für kleine Umgebungen und Queue Mode für skalierbare Setups mit PostgreSQL und Redis.
Schritt 11: n8n mit dem offiziellen Helm-Chart installieren
Nun folgt der eigentliche n8n-Kubernetes-Install mithilfe des Helm-Charts. Führen Sie dazu den Installationsbefehl aus:
helm install n8n oci://ghcr.io/n8n-io/n8n-helm-chart/n8n \
--version 1.0.0 \
-n n8n \
-f n8n-values.yamlbashDanach prüfen Sie, ob die Ressourcen erstellt wurden:
kubectl get all -n n8nbashUnd anschließend kontrollieren Sie die Pods genauer, um sicherzustellen, dass n8n korrekt gestartet wurde und keine Fehler aufgetreten sind
kubectl get pods -n n8n -wbashSobald der Haupt-Pod läuft und bereit ist, ist n8n im Cluster installiert.
Neben dem in dieser Anleitung verwendeten OCI-Chart von ghcr.io/n8n-io existieren weitere Helm-Chart-Quellen, mit denen n8n auf Kubernetes installiert werden kann. Dazu gehört ein von der Community gepflegter Chart, der über das GitHub-Community-Charts-Projekt bereitgestellt wird und regelmäßig aktualisiert wird, sowie der weit verbreitete 8gears Chart, der als Open-Source-Projekt auf GitHub und auf ArtifactHub gelistet ist.
Schritt 12: Ingress und Zertifikat prüfen
Weil Sie in der values-Datei bereits Ingress und TLS konfiguriert haben, sollte cert-manager nun ein Zertifikat für Ihre Subdomain anfordern. Prüfen Sie zuerst den Ingress:
kubectl get ingress -n n8nbashDanach prüfen Sie das Zertifikat:
kubectl get certificate -n n8n
kubectl describe certificate n8n-tls -n n8nbashSchritt 13: n8n im Browser öffnen und Ersteinrichtung abschließen
Sobald der Ingress aktiv ist und das Zertifikat erfolgreich erstellt wurde, rufen Sie Ihre Instanz im Browser auf:
https://n8n.ihre-domain.de
Beim ersten Aufruf führt n8n Sie durch die initiale Einrichtung. In der Regel legen Sie dabei zunächst den ersten User für die Instanz an.

Schritt 14: Installation testen
Nach der Ersteinrichtung sollten Sie kurz kontrollieren, ob die Installation wirklich sauber läuft. Öffnen Sie dazu den n8n-Editor, erstellen Sie einen einfachen Test-Workflow und speichern Sie ihn. Zusätzlich lohnt sich ein Blick in die Logs des Haupt-Pods.
kubectl logs -n n8n -l app.kubernetes.io/component=main --tail=100bashWenn der Editor erreichbar ist, die Anmeldung funktioniert und in den Logs keine offensichtlichen Fehler auftauchen, ist die Grundinstallation erfolgreich abgeschlossen.
Schritt 15: Was Sie für den produktiven Betrieb wissen sollten
Für kleinere Installationen ist der Standalone-Modus ein guter Start. Der offizielle Chart und die n8n-Dokumentation unterscheiden jedoch klar zwischen Standalone und Queue Mode. Sobald mehrere Nutzerinnen und Nutzer, mehr gleichzeitige Ausführungen oder hohe Webhook-Last ins Spiel kommen, ist der Queue Mode die robustere Option. Dann kommen PostgreSQL und Redis hinzu. Auch Worker können dann unabhängig skaliert werden.

