Wie installiert man n8n? Vollständiges Tutorial für Einsteiger zur lokalen Bereitstellung und zum ersten Start

n8n selbst zu installieren ist nicht schwer, schwer ist die Frage „gehen die Daten verloren“, nachdem es installiert ist. Ich habe zu viele Leute gesehen, die es mit einem Befehl zum Laufen gebracht haben, es eine Woche benutzt haben, den container gelöscht und neu erstellt haben, und alle Workflows waren weg – weil das Daten-Volume nicht richtig gemountet war.

Dieser Artikel erklärt die drei gängigen Installationsmethoden klar, geordnet nach „minimalen Fallstricken“: Docker, Docker Compose, npm. Nach der Installation hast du: ein n8n, das sich im Browser öffnen lässt, Daten lokal gespeichert und nicht verloren, und die Zeitzone ist korrekt.

Für wen das geeignet ist, was man vor dem Start braucht

Geeignet für Leute, die noch nie einen Dienst deployed haben, aber du musst ein Terminal öffnen und Befehle eingeben können. Windows, macOS, Linux lassen sich alle installieren, dieser Artikel konzentriert sich auf Docker, weil Upgrades und Migrationen später am wenigsten Aufwand machen.

Wenn du es nur auf jemand anderem Rechner ausprobieren willst und nicht langfristig nutzen möchtest, spring direkt zum npm-Weg im dritten Abschnitt, zwei Befehle reichen zum Laufen, aber leg dort keine wichtigen Daten ab.

Zuerst entscheiden, wo installiert wird

Methode Für wen geeignet Vorteile Preis
Docker (einzelner container) Privater Rechner, leichte Nutzung Sauber isoliert, gelöscht ist gelöscht, Upgrade tauscht nur das image Man muss ein wenig Docker lernen
Docker Compose Langfristiger Betrieb, muss an eine Datenbank angebunden werden Konfiguration in eine Datei schreiben, versionierbar, startet nach Neustart automatisch Eine zusätzliche yaml muss gepflegt werden
npm-Globalinstallation Node-Umgebung bereits vorhanden, Ressourcen sollen gespart werden Kein container, direkte Anbindung an den Host, minimaler Performance-Verlust Abhängig von der System-Node-Version, Upgrades werden leicht unübersichtlich

Meine Empfehlung: Für den persönlichen Gebrauch Docker Compose wählen, nicht ein einzelnes docker run. Der Grund ist ganz praktisch – nachdem du es mit einem einzelnen Befehl zum Laufen gebracht hast, kannst du dich zwei Monate später absolut nicht mehr erinnern, welche Parameter du damals gesetzt hast. Compose schreibt die Parameter in eine Datei, bei Problemen kann man nachschauen, ändern und sichern.

Umgebung prüfen

Zuerst prüfen, ob Docker vorhanden ist. Im Terminal ausführen:

docker -v

Wenn eine Versionsnummer angezeigt wird (in der Form Docker version 29.5.3, build d1c06ef), ist es installiert. Unter Windows und macOS ist es bei Docker Desktop dabei; unter Linux verwendet man Docker Engine.

Dann prüfen, ob Port 5678 nicht belegt ist. Linux:

ss -lntp | grep 5678

macOS oder Linux kann auch lsof -i :5678verwenden. Ausgabe bedeutet belegt, wechsle den Port, zum Beispiel -p 5679:5678. Windows verwendet netstat -ano | findstr 5678。

Methode 1: Mit einem einzigen docker run starten

Zuerst das Datenvolume erstellen, dann den container starten. Diese beiden Schritte nicht zu einem zusammenfassen – das Volume separat anlegen, damit bei späterem Löschen und Neuerstellen des containers keine Daten verloren gehen:

docker volume create n8n_data

docker run -d --name n8n 
  -p 5678:5678 
  -e GENERIC_TIMEZONE="Asia/Shanghai" 
  -e TZ="Asia/Shanghai" 
  -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true 
  -e N8N_DEFAULT_LOCALE=zh-CN 
  -v n8n_data:/home/node/.n8n 
  --restart unless-stopped 
  n8nio/n8n

Jeden Parameter einzeln erklären, was er tut – hier liegen die tatsächlichen Stolperfallen:

  • -d: Im Hintergrund ausführen. Die offizielle Dokumentation gibt an -it --rm(Vordergrundbetrieb, Löschung beim Beenden), das ist zum Ausprobieren gedacht. Für den dauerhaften Einsatz unbedingt ändern zu -d --restart unless-stopped, damit der container nach einem Serverneustart automatisch startet.
  • -p 5678:5678: Den port 5678 im container auf den Host mounten. Links ist der Host-port, nur die linke Seite ändern.
  • GENERIC_TIMEZONE 和 TZ: Beide müssen gesetzt werden.TZ steuert die Zeit für Systembefehle im container,GENERIC_TIMEZONE steuert, nach welcher Zeitzone zeitgesteuerte Nodes (z. B. Schedule Trigger) berechnet werden. Nur eines setzen führt dazu, dass „ich 9 Uhr morgens eingestellt habe, es aber tatsächlich um 17 Uhr läuft".
  • -v n8n_data:/home/node/.n8n:Die entscheidendste Zeile. Die SQLite-Datenbank, der Verschlüsselungsschlüssel und die Logs von n8n liegen alle in diesem Verzeichnis. Ohne gemountetes Volume ist nach dem Löschen des containers alles weg.
  • N8N_DEFAULT_LOCALE=zh-CN: Oberfläche standardmäßig auf Chinesisch. Beachten: Die chinesische Übersetzung von n8n betrifft nur die Oberfläche, Node-Parameter bleiben auf Englisch.

Nach dem Start im Browser öffnen http://localhost:5678. Beim ersten Mal wirst du aufgefordert, ein Administratorkonto zu erstellen, das Passwort muss mindestens 8 Zeichen lang sein. Dieses Konto wird lokal gespeichert; wenn du es vergisst, kannst du es nur zurücksetzen – merk es dir gut.

Methode 2: Docker Compose (empfohlen)

Erstelle ein Verzeichnis und lege darin ab docker-compose.yml:

services:
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Shanghai
      - TZ=Asia/Shanghai
      - N8N_DEFAULT_LOCALE=zh-CN
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_SECURE_COOKIE=false
    volumes:
      - ./n8n_data:/home/node/.n8n

Führe dann in diesem Verzeichnis aus:

docker compose up -d

Einige Hinweise:

N8N_SECURE_COOKIE=false Diese Zeile ist nur erforderlich, wenn „lokal per http zugegriffen“ wird. Wenn du bereits eine Domain und HTTPS konfiguriert hast, lösche sie – HTTPS aktiviert zu haben, aber false zu schreiben, verringert die Sicherheit. Viele, deren Anmeldeseite nach der lokalen Installation endlos lädt, werden genau durch diese cookie-Einstellung blockiert.

Das Datenverzeichnis verwendet ./n8n_data, also einen Ordner auf derselben Ebene wie die yml. Der Vorteil ist, dass du für die Sicherung einfach dieses Verzeichnis packst und nicht raten musst, wo das Docker-Volume versteckt ist.

Logs anzeigen und prüfen, ob es läuft:

docker compose logs -f --tail=50

Wenn du die Zeile mit der Editor-Adresse und Versionsnummer siehst, heißt das, es läuft. Mit Ctrl+C beendest du nur die Logs, der container läuft weiter.

Methode 3: npm-Globalinstallation

Die Instanz, die ich selbst nutze, läuft auf diese Weise, ohne container, direkt auf dem Host. Voraussetzung ist eine Node.js-Umgebung; n8n 2.x erfordert Node 20 oder höher (meine Instanz läuft mit Node 24.21.0).

npm install -g n8n
n8n start

Aber wenn du es so direkt laufen lässt, gibt es ein Problem: Die Daten landen standardmäßig im Benutzerverzeichnis unter .n8n, und wenn du das Terminal schließt, stoppt es. In Produktionsumgebungen wird üblicherweise das Datenverzeichnis über Umgebungsvariablen angegeben und dann mit systemd oder pm2 verwaltet. Die tatsächlich verwendeten Schlüsselvariablen dieser Instanz sehen so aus (Werte durch deine eigenen ersetzen):

N8N_USER_FOLDER=/data/n8n
N8N_HOST=127.0.0.1
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_EDITOR_BASE_URL=https://你的域名/
N8N_DEFAULT_LOCALE=zh-CN

N8N_HOST=127.0.0.1 In Kombination mit N8N_EDITOR_BASE_URL, ist es eine gängige Praxis, n8n hinter Nginx zu verstecken und den port nicht direkt freizugeben; dies wird im nächsten Artikel bei der Bereitstellung auf einem Server im Detail erklärt. Wenn du es nur lokal verwendest, setze HOST auf localhost .

So sieht es nach der Installation aus

Nach dem Login gelangst du zur Seite „Übersicht". Links befindet sich die Funktionsnavigation, in der Mitte die Tabs Workflows, Ausführungen und Anmeldedaten, oben rechts die Schaltfläche „Workflow erstellen".

n8n 登录后进入的概览页,左侧为功能导航,中间为工作流列表
So sieht es beim ersten Login nach abgeschlossener Installation aus. Wenn du eine englische Oberfläche siehst, ändere die Sprache in den Einstellungen auf Vereinfachtes Chinesisch.

Klicke auf „Workflow erstellen", und du erhältst eine leere Arbeitsfläche, in deren Mitte nur eine Zeile „Ersten Schritt hinzufügen" steht:

n8n 新建工作流后的空白画布,中间显示添加第一步
Eine leere Arbeitsfläche bedeutet nicht, dass etwas defekt ist — das ist der normale Ausgangspunkt. Alle Workflows beginnen mit diesem einen Pluszeichen.

Der erste Workflow: drei Nodes

Klicke auf das Pluszeichen in der Mitte der Arbeitsfläche, rechts öffnet sich die Node-Bibliothek. Gib im Suchfeld ein manual, wähle „Manual Trigger (manuelle Auslösung)" — er ist der Startpunkt dieses Ablaufs.

n8n 节点库搜索 http 的结果,列出 HTTP Request、Webhook 等节点
Die Node-Bibliothek lässt sich nach englischen Namen durchsuchen oder nach Kategorien durchblättern. In der chinesischen Oberfläche bleiben Node-Namen und Beschreibungen auf Englisch; die Suche nach englischen Begriffen ist treffsicherer.

Füge anschließend über das kleine Pluszeichen rechts neben dem Manual-Trigger-Node einen „Edit Fields (Felder bearbeiten)"-Node hinzu und schreibe zwei beliebige Felder, zum Beispiel city mit „Fuzhou" füllen,temp mit 27 füllen. Füge weiter rechts einen „Code"-Node hinzu und füge im Codefeld ein:

return items.map(item => ({
  json: {
    message: `${item.json.city} 现在 ${item.json.temp} 度`
  }
}));

Klicke abschließend auf die Schaltfläche „Ausführen" unterhalb der Arbeitsfläche. Die drei Nodes leuchten nacheinander auf und werden alle zu grünen Häkchen — das bedeutet, dass die gesamte Kette durchgängig funktioniert. Wenn du nun einen beliebigen Node öffnest, siehst du im Ausgabebereich rechts die tatsächlichen Daten.

Der Zweck dieses Schritts ist nicht, Code schreiben zu lernen, sondern sicherzustellen: Das installierte Setup läuft.

Wann gilt die Installation als wirklich erfolgreich

Die Oberfläche öffnen zu können zählt nicht als Erfolg. Gehe die folgenden vier Punkte durch; erst wenn alle bestanden sind, gilt es als erfolgreich:

  1. Editor lässt sich öffnen: Der Browser zeigt keinen Fehler, und die Workflow-Liste ist sichtbar.
  2. Speichern funktioniert: Erstelle einen neuen Workflow, füge irgendeinen Node hinzu, warte auf das automatische Speichern, lade dann die Seite neu – der Inhalt ist noch da.
  3. Neustart ohne Verlust:docker compose restart, dann neu laden – der eben erstellte Workflow ist noch da. Dieser Punkt ist die einzige Möglichkeit zu prüfen, ob das Daten-Volume korrekt gemountet ist.
  4. Ausführung funktioniert: Führe einen manuellen Workflow einmal aus, die Nodes werden grün, und beim Aufklappen sind die Ausgabedaten sichtbar.

Der dritte Punkt wird am leichtesten übersprungen und ist am kritischsten. Wenn der Workflow nach dem Neustart weg ist, zweifle nicht an n8n, sondern prüfe, -v ob der dahinterstehende Pfad falsch geschrieben ist oder ein anonymes Volume verwendet wurde.

Häufige Fehler

Port bereits belegt.Der Fehler enthält port is already allocated. Wechsle den Host-Port, z. B. -p 5679:5678, und greife dann über 5679 zu.

Lässt sich öffnen, aber der Login dreht sich im Kreis.Beim lokalen Zugriff über http, wenn N8N_SECURE_COOKIE standardmäßig true ist, verweigert der Browser das Schreiben von Cookies. Für lokale Tests auf false setzen, nach Konfiguration von HTTPS diese Zeile entfernen.

Die Zeit des Cron-Jobs stimmt nicht.Nur TZ gesetzt, aber GENERIC_TIMEZONEnicht gesetzt, der Schedule-Node rechnet nach UTC. Beide auf Asia/Shanghai。

Nach dem Neustart ist der Container nicht hochgekommen.Vergessen, --restart unless-stopped hinzuzufügen, oder das restartin der yml. Nach einem Server-Neustart muss man manuell docker start n8n。

Das Ziehen des Images ist langsam oder schlägt fehl.Beim Zugriff auf Docker Hub aus dem chinesischen Netz kommt es häufig zu Timeouts; konfiguriere einen Mirror-Beschleuniger und ziehe dann, oder verwende docker pull n8nio/n8n und warte geduldig, das Image ist mehrere hundert MB groß.

Chinesisch wurde nicht wirksam.N8N_DEFAULT_LOCALE Es wirkt sich nur auf die Standardsprache neuer Sitzungen aus; bestehende Konten müssen dies selbst in den Einstellungen ändern. Und wie bereits erwähnt, ist nur die Oberfläche auf Chinesisch.

Stelle es nicht vorschnell ins öffentliche Netz

Nach der Installation will man sofort per Handy zugreifen und öffnet deshalb Port 5678 ins öffentliche Netz – das ist der häufigste Fehler. In n8n liegen die API Keys deiner verschiedenen Systeme; sie ungeschützt im öffentlichen Netz zu betreiben ist, als würde man den Schlüssel an die Haustür hängen.

Der richtige Weg ist: zuerst lokal oder im Intranet verwenden, und erst nach Bestätigung der langfristigen Nutzung gemäß dem Ablauf im nächsten Artikel eine Domain binden, HTTPS einrichten, Nginx als Reverse Proxy verwenden und nur 127.0.0.1 lauschen lassen.

Ändere außerdem nach dem ersten Login sofort das Administratorkennwort in ein starkes Passwort, verwende nicht admin123 so etwas.

Zur Version

n8n veröffentlicht jede Woche eine Minor-Version. Zum Zeitpunkt dieses Artikels ist die in der offiziellen Dokumentation angegebene stabile Version 2.44.5, beta ist 2.45.2; meine Instanz läuft mit 2.43.7, alle Screenshots der Oberfläche stammen davon.

Empfehlung:In Produktionsumgebungen nicht latest verwenden. Pinne das Image auf eine konkrete Versionsnummer, zum Beispiel n8nio/n8n:2.44.5Wenn du upgraden willst, ändere die Zahl und ziehe das Image erneut. Die Folge von latest ist, dass sich eines Tages nach einem Neustart die Version still und leise ändert, das Verhalten der Workflows sich mitändert und die Fehlersuche sehr mühsam wird.

So siehst du deine Version: Nach dem Login unten links in die Einstellungen gehen oder ausführen docker exec n8n n8n --version。

Nächster Schritt

Installiert – nimm dir zuerst zehn Minuten Zeit und präge dir die Oberfläche ein:n8n-Oberflächen-Tour: Was Canvas, Nodes und Ausführungsprotokolle jeweils bedeutenWenn du dich eingeprägt hast, tippe mit dem heute installierten Setup das obige Beispiel mit drei Nodes einmal durch – die Hände merken es sich besser als die Augen.

Wenn du lieber zuerst verstehen willst, „warum es sich lohnt, das zu lernen“, schau dir den vorherigen Artikel an:Was ist n8n – Einstieg von null und Anwendungsszenarien。

Referenzen

Letzte Aktualisierung: 22. Oktober 2026. Die Docker-Befehle wurden anhand der offiziellen Dokumentation geprüft (die damals angegebene stabile Version war 2.44.5), die Screenshots stammen von meiner eigenen 2.43.7.

THE END