n8n mit Docker: installieren und selbst hosten kostenlos
n8n mit Docker ist der kürzeste Weg zu einer selbst gehosteten Automatisierungsinstanz, die Neustarts und Updates übersteht. Dieser Leitfaden beschränkt sich bewusst auf die Grundlage: eine Docker-Compose-Datei, ein Volume für die Daten, einen Verschlüsselungsschlüssel, den Sie kontrollieren, ein Verfahren für Backups und Updates sowie eine vorsichtige HTTPS-Bereitstellung. Die KI-Nodes und die Anbindung an Ollama werden in einem separaten Leitfaden behandelt; hier ist das Ziel eine saubere Installation, die Sie nicht erneut durchführen müssen.
#Warum n8n mit Docker statt mit npm installieren
n8n ist eine Node.js-Anwendung. Sie kann mit npm oder npx gestartet werden, und die Dokumentation schlägt dies für einen schnellen Test vor. Für eine dauerhaft laufende Instanz ist das offizielle Docker-Image der vom Projekt empfohlene Weg: Es enthält die passende Node.js-Version, isoliert n8n vom Rest der Maschine und macht Updates so einfach wie das Ändern eines Images. Dies ist außerdem das Format, in dem die n8n-Dokumentation zum Hosting all ihre Serverbeispiele beschreibt.
Der zweite Vorteil ist die Reproduzierbarkeit. Eine docker-compose.yml beschreibt die gesamte Konfiguration: Image, Port, Umgebungsvariablen und Daten-Volume. Sie können sie versionieren, auf einen anderen Rechner kopieren oder in sechs Monaten erneut lesen, um genau zu wissen, was läuft. Bei einer npm-Installation verteilen sich diese Informationen auf das System, das Benutzerprofil und den Dienstmanager.
- Was diese Anleitung abdeckt
- Lokale Installation oder Installation auf einem kleinen Server, Datenpersistenz, Verschlüsselungsschlüssel, Sicherung, Update, HTTPS-Zugriff.
- Was es nicht abdeckt
- Die KI-Nodes von n8n, die Verbindung zu Ollama, der MCP-Server und die Skalierung im Warteschlangenmodus. Die ersten beiden Punkte haben jeweils einen eigenen Leitfaden, der am Ende des Artikels verlinkt ist.
- Was wir nicht behaupten
- Keine Installationsdauer, kein gemessener Verbrauch und keine festgelegte Versionsnummer. Diese Werte ändern sich von Release zu Release und sind zum Zeitpunkt Ihrer Installation in den offiziellen Quellen nachzulesen.
#Lizenz und Einschränkungen der Community-Version
Agenten, die auf Ihrem Rechner handeln: agentisches Cline, MCP, n8n + Ollama und lokale Automatisierungen.
- Lebenslanger Online-Zugang
- PDF + Dateien
- Erstattung binnen 30 Tagen
n8n steht im Sinne der OSI nicht unter einer Open-Source-Lizenz. Der Code wird unter der Sustainable Use License veröffentlicht, einem Modell, das der Herausgeber als „fair-code“ bezeichnet. Im Großen und Ganzen können Sie n8n für Ihre internen, persönlichen oder unternehmensbezogenen Zwecke frei nutzen, ändern und hosten. Eingeschränkt ist der Weiterverkauf: Wenn Sie n8n Dritten als gehosteten Dienst anbieten oder in ein kommerzielles Produkt integrieren möchten, benötigen Sie eine Vereinbarung mit dem Herausgeber. Der vollständige Text und die FAQ stehen unter docs.n8n.io/sustainable-use-license/; lesen Sie sie, wenn Ihre Nutzung über die interne Automatisierung hinausgeht.
Die Version, die Sie mit Docker installieren, ist die Community-Edition. Sie enthält den vollständigen Editor, Hunderte Integrations-Nodes, Webhooks, geplante Auslöser, KI-Nodes und die Benutzerverwaltung. Einige Funktionen sind kostenpflichtigen, selbst gehosteten Angeboten vorbehalten: Single Sign-on (SSO), Umgebungen mit Git-Synchronisierung, externe Secrets, das Senden von Protokollen an ein externes Tool und ein Teil der Kollaborationsfunktionen. Der Herausgeber bietet außerdem einen kostenlosen Schlüssel namens „Registered Community“, den Sie erhalten, indem Sie in den Einstellungen eine E-Mail-Adresse angeben; damit werden einige zusätzliche Funktionen freigeschaltet. Die genaue Liste ändert sich: Maßgeblich ist die Seite docs.n8n.io/hosting/community-edition-features/.
#Voraussetzungen
- Docker und Docker Compose
- Docker Engine mit dem Compose-Plugin unter Linux oder Docker Desktop unter Windows und macOS. Überprüfen Sie dies mit docker compose version: Der Befehl muss mit einer Versionsnummer antworten, mit zwei Wörtern (docker compose), nicht mit dem Bindestrich des alten Werkzeugs.
- Ein Rechner, der eingeschaltet bleibt
- n8n führt Ihre Workflows zur vorgesehenen Zeit oder beim Empfang eines Webhooks aus. Ein PC, der abends ausgeschaltet wird, bekommt die nächtlichen Auslösungen nicht mit. Ein Mini-PC, ein Docker-kompatibles NAS oder ein kleiner VPS sind geeignet; für einige einfache Workflows bleiben die Speicheranforderungen gering.
- Ein freier Port
- n8n lauscht innerhalb des Containers auf Port 5678. Wir veröffentlichen ihn auf derselben Nummer auf dem Host; ändern Sie sie, wenn sie bereits von einem anderen Dienst verwendet wird.
- Nur für den HTTPS-Schritt
- Einen Domainnamen, der auf die Maschine zeigt, sowie die aus dem Internet erreichbaren Ports 80 und 443. Andernfalls beschränken Sie sich auf den lokalen Zugriff oder verwenden Sie ein VPN: Der Abschnitt zu HTTPS erläutert beide Optionen.
#n8n Schritt für Schritt mit Docker Compose installieren
Die n8n-Dokumentation nennt zunächst einen einzeiligen docker-run-Befehl, der sich für einen Test eignet. Wir verwenden direkt Compose: Die Datei ist kaum länger und wird zum Referenzpunkt Ihrer Installation. Alle folgenden Werte sind von n8n dokumentiert; nur die Werte für Zeitzone und Port wurden für diese Anleitung gewählt.
- 01Projektordner erstellenEin eigenes Verzeichnis enthält die Compose-Datei, die .env-Datei und später Ihre Sicherungen. Die n8n-Daten selbst werden in einem benannten Docker-Volume gespeichert, nicht in diesem Verzeichnis.
- 02Verschlüsselungsschlüssel generierenGenerieren Sie vor dem ersten Start einen zufälligen Schlüssel und legen Sie ihn in der Datei .env ab. Im nächsten Abschnitt wird erklärt, warum diese Reihenfolge wichtig ist.
- 03Die docker-compose.yml schreibenKopieren Sie die folgende Datei. Sie veröffentlicht n8n am Port 5678 des Rechners, beschränkt auf die lokale Adresse 127.0.0.1, und bindet das Volume n8n_data in das Verzeichnis /home/node/.n8n des Containers ein. Dort speichert n8n seine SQLite-Datenbank, seine Konfiguration und seine Dateien.
- 04Startendocker compose up -d télécharge l'image et lance le conteneur en arrière-plan. La première exécution prend le temps du téléchargement de l'image; les suivantes sont immédiates.
- 05Eigentümerkonto erstellenÖffnen Sie http://localhost:5678 in einem Browser. n8n fordert Sie auf, das erste Konto zu erstellen, das zum Eigentümer der Instanz wird. Seit Version 1.0 schützt dieses Konto den Zugriff; die frühere Basisauthentifizierung über Umgebungsvariablen gibt es nicht mehr.
Einige Erläuterungen zu den Variablen. GENERIC_TIMEZONE legt die Zeitzone fest, die der Node Schedule Trigger und Datumsausdrücke verwenden; TZ richtet die Systemuhr im Container aus. N8N_RUNNERS_ENABLED aktiviert die Task Runner, den Mechanismus, der den Code der Code-Nodes in einem separaten Prozess ausführt; die Dokumentation empfiehlt ihn, und neuere Versionen zeigen eine Warnung an, wenn er fehlt. N8N_DIAGNOSTICS_ENABLED=false deaktiviert die Übermittlung von Telemetriedaten an den Herausgeber. Die beiden Variablen EXECUTIONS_DATA_* weisen n8n an, den Verlauf der Ausführungen nach mehr als 336 Stunden, also vierzehn Tagen, zu bereinigen, damit die Datenbank nicht unbegrenzt wächst.
Das Mounten von ./local-files:/files ist optional. Dadurch erhält n8n einen Ordner, der mit der Hostmaschine geteilt wird – praktisch für Nodes, die Dateien lesen oder schreiben. Entfernen Sie die Zeile, wenn Sie sie nicht benötigen.
#Der Verschlüsselungsschlüssel: die Variable, die Sie nicht verlieren dürfen
n8n verschlüsselt alle Zugangsdaten, die Sie in der Benutzeroberfläche speichern, also API-Token, Passwörter und OAuth-Schlüssel Ihrer Integrationen. Der verwendete Verschlüsselungsschlüssel ist N8N_ENCRYPTION_KEY. Wenn Sie ihn nicht festlegen, erzeugt n8n beim ersten Start einen Schlüssel und schreibt ihn in die Konfigurationsdatei im Verzeichnis /home/node/.n8n, also in das Volume. Das funktioniert, aber der Schlüssel befindet sich dann ausschließlich in diesem Volume: Wenn Sie es verlieren oder die Instanz ohne dieses Volume neu erstellen, wird jede Zugangsdaten unlesbar und muss erneut eingegeben werden.
Deshalb setzt dieser Leitfaden den Schlüssel vor dem ersten Start in der Datei .env. Er bleibt unter Ihrer Kontrolle, wird zusammen mit der Compose-Datei gesichert und ermöglicht es, die Datenbank auf einer anderen Maschine wiederherzustellen, ohne die Zugangsdaten zu verlieren. Daraus ergeben sich zwei Regeln.
- Ändern Sie den Schlüssel niemals nachträglich
- Ein anderer Schlüssel als der zum Verschlüsseln verwendete macht alle vorhandenen Zugangsdaten unbrauchbar. Wenn Sie ihn ersetzen müssen, exportieren Sie Ihre entschlüsselten Zugangsdaten zuerst mit dem Befehl export:credentials und importieren Sie sie nach der Änderung erneut.
- Sichern Sie die Datei .env separat
- Bewahren Sie eine Kopie des Schlüssels in Ihrem Passwortmanager auf. Eine Sicherung des Volumes ist für die Zugangsdaten ohne den Schlüssel wertlos, selbst wenn die Workflows lesbar bleiben.
#Datenpersistenz und Sicherung
Alles, was n8n dauerhaft speichern muss, befindet sich in /home/node/.n8n: die SQLite-Datenbank mit Workflows, verschlüsselten Zugangsdaten und dem Ausführungsverlauf, die Konfigurationsdatei, installierte Community-Nodes und Binärdateien im Festplattenspeichermodus. Das benannte Volume n8n_data bleibt nach docker compose down und dem Löschen des Containers erhalten. Es bleibt nicht nach docker compose down -v oder docker volume rm erhalten: Diese beiden Befehle löschen die Daten.
Für eine Sicherung ergänzen sich zwei Ansätze. Der erste archiviert das gesamte Volume: n8n wird für die Dauer des Kopiervorgangs angehalten, damit keine gerade beschriebene SQLite-Datenbank erfasst wird. Der zweite verwendet das Befehlszeilenwerkzeug von n8n, um Workflows und Zugangsdaten als JSON zu exportieren, die einzeln lesbar und wieder importierbar sind.
Die Option --backup der Exportbefehle bündelt die Optionen, die für jedes Element eine lesbare Datei erzeugen. Die exportierten Zugangsdaten bleiben mit Ihrem Schlüssel verschlüsselt, es sei denn, Sie fügen --decrypted hinzu; behandeln Sie die Datei in diesem Fall wie ein Geheimnis. Für die Wiederherstellung akzeptieren die Befehle import:workflow und import:credentials denselben Ordner mit der Option --separate. Die vollständige CLI-Referenz finden Sie unter docs.n8n.io/hosting/cli-commands/.
Für eine vollständige Wiederherstellung auf einer anderen Maschine: Erstellen Sie den Ordner mit derselben docker-compose.yml und derselben .env-Datei neu, erstellen Sie das leere Volume mit docker compose up -d und führen Sie anschließend docker compose stop aus, entpacken Sie das Archiv mit dem umgekehrten Befehl der Sicherung in das Volume und starten Sie den Container neu. Derselbe Verschlüsselungsschlüssel ist Voraussetzung dafür, dass die Zugangsdaten wiederhergestellt werden können.
#n8n aktualisieren, ohne die Instanz zu beschädigen
n8n veröffentlicht häufig neue Versionen. Das Tag latest des Images verweist auf die neueste stabile Version, das Tag next auf die Testversion; nummerierte Tags ermöglichen es, eine bestimmte Version festzulegen. Mit Compose besteht das Update aus drei Befehlen: das neue Image abrufen, den alten Container anhalten und einen neuen mit derselben Konfiguration erstellen. Die Daten bleiben im Volume und werden nicht angetastet. Migrationen des Datenbankschemas werden, sofern erforderlich, beim Start automatisch durchgeführt.
Drei Vorsichtsmaßnahmen verhindern die meisten bösen Überraschungen. Erstellen Sie vorher eine Sicherung: Eine Datenbankmigration lässt sich nicht rückgängig machen. Lesen Sie die Versionshinweise auf github.com/n8n-io/n8n/releases und die Dokumentationsseite zu Updates unter docs.n8n.io/hosting/installation/updating/: Hauptversionen entfernen Umgebungsvariablen oder ändern Standardverhalten, und die Dokumentation führt eine eigene Seite zu inkompatiblen Änderungen. Wenn die Instanz für Sie wichtig ist, verwenden Sie schließlich lieber ein nummeriertes Tag statt latest: So bestimmen Sie selbst den Zeitpunkt des Versionsupdates, statt beim nächsten Pull davon überrascht zu werden.
#n8n vorsichtig über HTTPS bereitstellen
Solange Sie n8n von der Maschine aus verwenden, auf der es gehostet wird, oder aus Ihrem lokalen Netzwerk darauf zugreifen, reicht die vorherige Installation aus. Der Bedarf für eine externe Erreichbarkeit entsteht bei Webhooks: wenn ein Drittanbieterdienst Ihre Instanz aufrufen muss oder wenn Sie von außerhalb darauf zugreifen möchten. Es gibt zwei Möglichkeiten, und die erste ist oft die richtige.
- Ein VPN statt einer Veröffentlichung
- Tailscale, WireGuard oder das VPN Ihres Routers ermöglichen den Zugriff auf n8n von überall, ohne einen Port im Internet zu öffnen. Für die persönliche Nutzung ohne öffentlichen Webhook ist das die sicherste und einfachste Lösung. Die Instanz bleibt im privaten Netzwerk auf HTTP, und N8N_SECURE_COOKIE=false wird erforderlich, wenn Sie über die VPN-Adresse darauf zugreifen.
- Ein Reverse-Proxy mit Zertifikat
- Um öffentliche Webhooks zu empfangen, benötigen Sie einen Domainnamen, einen Reverse-Proxy, der TLS beendet, und ein Zertifikat. Das offizielle n8n-Beispiel verwendet Traefik; wir zeigen Caddy, dessen Konfiguration aus drei Zeilen besteht und der die Let's-Encrypt-Zertifikate selbstständig erhält.
In der folgenden Konfiguration veröffentlicht n8n keinen Port mehr: Nur Caddy ist über 80 und 443 erreichbar und leitet an den n8n-Container über das interne Compose-Netzwerk weiter. Die Variablen N8N_HOST, N8N_PROTOCOL und WEBHOOK_URL teilen n8n die öffentliche Adresse mit, unter der es bereitgestellt wird; ohne sie würden die im Editor angezeigten Webhook-URLs auf localhost verweisen und OAuth-Weiterleitungen fehlschlagen.
Bevor Sie docker compose up -d ausführen, muss der DNS-Eintrag n8n.votre-domaine.fr auf die öffentliche Adresse der Maschine zeigen, und die Ports 80 und 443 müssen an diese weitergeleitet werden. Caddy fordert dann bei Let's Encrypt ein Zertifikat an und erneuert es ohne Ihr Zutun. Die Volumes caddy_data und caddy_config bewahren Zertifikate und Status über Neustarts hinweg auf.
#Fehlerbehebung: häufige Blockaden
- Meldung zum sicheren Cookie beim Öffnen
- Sie greifen über HTTP von einer Adresse auf n8n zu, die nicht localhost ist. Entweder wechseln Sie zu HTTPS oder Sie fügen N8N_SECURE_COOKIE=false hinzu, und zwar ausschließlich in einem privaten Netzwerk.
- Berechtigungsfehler bei /home/node/.n8n
- Der Container läuft mit dem Benutzer node und nicht mit root. Das passiert, wenn Sie das benannte Volume durch einen Host-Ordner ersetzen, dessen Berechtigungen nicht übereinstimmen. Behalten Sie das benannte Volume bei oder passen Sie den Besitzer des Ordners an die Benutzer-ID 1000 an, die node im Image verwendet.
- Die geplanten Workflows laufen zur falschen Uhrzeit
- GENERIC_TIMEZONE fehlt oder ist falsch geschrieben. Erwartet wird ein IANA-Zeitzonenname wie Europe/Paris. Jeder Workflow kann in seinen Einstellungen außerdem eine eigene Zeitzone festlegen.
- Webhooks zeigen eine localhost-Adresse an
- WEBHOOK_URL ist nicht definiert oder entspricht nicht der Adresse, unter der der Drittanbieterdienst Sie erreicht. Der Wert muss mit einem Schrägstrich enden und das Protokoll enthalten.
- Die Datenbank wächst unaufhörlich
- Das Bereinigen von Ausführungen ist deaktiviert oder dauert zu lange. Prüfen Sie EXECUTIONS_DATA_PRUNE und EXECUTIONS_DATA_MAX_AGE und denken Sie auch an die Option, die Daten erfolgreicher Ausführungen aufbewahrt und sich Workflow für Workflow deaktivieren lässt.
- Nach einem Update startet n8n nicht mehr
- Lesen Sie das Protokoll mit docker compose logs n8n: Die Meldung weist normalerweise auf eine entfernte Variable oder eine fehlgeschlagene Migration hin. Vergleichen Sie sie mit den Versionshinweisen und stellen Sie das Backup bei Bedarf wieder her.
- n8n findet Ollama auf derselben Maschine nicht
- In einem Container bezeichnet localhost den Container selbst, nicht den Host. Welche Adresse Sie verwenden müssen, hängt vom System und davon ab, wie Ollama gestartet wird; genau darum geht es in der unten genannten n8n-Anleitung und Ollama.
Für Fragen, die in der Dokumentation keine Antwort finden, ist das Forum community.n8n.io aktiv, und der Herausgeber antwortet dort. Geben Sie die genaue Version, die Installationsart und die Logzeilen an: Das sind die drei ersten Angaben, nach denen gefragt wird.
#Weiterführende Informationen
Die Instanz ist eingerichtet, gesichert und aktuell. Der logische nächste Schritt besteht darin, sie mit einem lokalen Modell zu verbinden und anschließend in einen umfassenderen Stack zu integrieren. Für diesen Leitfaden konsultierte offizielle Quellen: der Hosting-Abschnitt der n8n-Dokumentation (docs.n8n.io/hosting/), die Seite zur Docker-Installation (docs.n8n.io/hosting/installation/docker/), die Seite zur Aktualisierung, die Seite zur Lizenz und die Seite zu den Funktionen der Community-Edition. Diese Seiten werden mit den Versionen weiterentwickelt: Bei Abweichungen von diesem Leitfaden sind sie maßgeblich.
- n8n + Ollama: Automatisieren mit einer 100 % lokalen KI
- Die anschließende Anleitung: KI-Nodes, Verbindung zu Ollama aus dem Container, erste Workflows für Übersetzung und Zusammenfassung. https://quelllm.fr/guide/n8n-ollama-automatisation-workflow
- Ollama mit Docker
- Wenn Sie Ollama ebenfalls als Container neben n8n mit Zugriff auf die GPU ausführen möchten. https://quelllm.fr/guide/ollama-docker-installation-guide
- Ein LLM mit Docker Compose in einer Produktionsumgebung bereitstellen
- Der vollständige Stack Ollama, Open WebUI, Qdrant, n8n und Traefik in einer einzigen Compose-Datei, um über eine isolierte Instanz hinauszugehen. https://quelllm.fr/guide/deployer-llm-docker-compose-production
- Den eigenen Ollama-Server absichern
- Authentifizierung, Firewall, Reverse-Proxy: Die Regeln für die Veröffentlichung gelten für jeden selbst gehosteten Dienst, einschließlich n8n. https://quelllm.fr/guide/securiser-serveur-ollama
Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.