Infrastruktur · Selbst hosten

n8n — Abläufe automatisieren auf dem eigenen Server

Ein Formular nimmt Kundenanfragen an, eine KI ordnet sie ein und entwirft eine Antwort, ein Mensch gibt frei. Alles auf Deinem eigenen Server, mit einem Update-Weg, dem Du vertrauen kannst.

▶ Das ganze Video

Am Stück, oder unten Stufe für Stufe mit Text daneben.

n8n — Abläufe automatisieren auf dem eigenen Server

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Aufgenommen im September 2026: n8n 2.39.10 und das Update auf 2.40.5 im Docker-Container auf einem VPS, die KI über das AuxData-Gateway mit GLM 5.3. Terminal mit OBS, Browser als Bildschirmmitschnitt. Untertitel lassen sich im Player zuschalten.

Worum geht's?

Jede Firma hat Abläufe, die immer gleich beginnen: Eine Anfrage kommt herein, jemand liest sie, sortiert sie und schreibt eine Antwort. n8n verbindet solche Schritte zu einem Workflow, der auf Deinem eigenen Server läuft.

In dieser Schulung baust Du einen Ablauf für die fiktive Nordwerk GmbH. Eine KI ordnet Anfragen ein und entwirft Antworten, aber abgeschickt wird nichts, bevor ein Mensch freigegeben hat. Zwei Stellen, an denen es beim Aufbau wirklich gehakt hat, stehen drin: der Fehler 404 beim Anschluss des Modells (Stufe 7) und ein Formular, das der Kundin die Freigabe gezeigt hätte (Stufe 10).

Den Abschluss bildet Stufe 11: sichern, aktualisieren, prüfen und der Rückweg. n8n erscheint fast jede Woche neu, und genau dort passieren die meisten Unfälle.

Selbstlern-Kurs zum Durchklicken. Dein Fortschritt wird lokal gespeichert.

? Für wen ist das interessant?

📨
Wer Anfragen sortiert
Postfach, Kontaktformular, Support: überall dort, wo dieselbe Vorarbeit jeden Tag anfällt.
🔒
Wer Daten im Haus halten will
n8n auf dem eigenen Server, die KI über ein Gateway mit Modell in Europa, oder ganz lokal.
🛠️
Wer betreibt
Installation mit fester Version, vollständige Sicherung, Update mit Rückweg.
🐳
Docker-Fortgeschrittene
Der nächste Schritt nach der Docker-Schulung, die n8n schon als Beispiel startet.

↗ Was Du vorher brauchst

  1. Einen VPS mit SSH-Zugang: Self-Hosting & VPS, SSH.
  2. Docker mit Compose auf diesem Server: Docker.
  3. Einen Zugang zu einem Sprachmodell: hier ein AuxData-API-Schlüssel. Ein lokales Ollama aus Lokale KI geht auch.

📚 Die zwölf Stufen

ℹ Stand der Dinge

Aufgenommen am 23. September 2026 mit n8n 2.39.10 und dem Update auf 2.40.5 (damals stable), Docker 29.6 mit Compose 5.3 auf einem VPS mit Ubuntu 24.04 LTS. Das Sprachmodell ist GLM 5.3 (mistral/zai-glm-5-3) über das AuxData-Gateway.

n8n erscheint fast wöchentlich neu, Beschriftungen und Knotenversionen ändern sich. Was sich selten ändert, sind die Begriffe: Trigger, Node, Item, Expression, Credential, Execution, Publish. Danach suchen, nicht nach dem genauen Wortlaut im Video. Im Oktober 2026 folgt n8n 3.0.

Stufe 1

Was n8n ist

Knoten, Auslöser, Ausführungen und das Ziel dieser Schulung.

Stufe 1 · Das Zielbild

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die beiden fertigen Workflows und die Tabelle, gedreht am Ende des Aufbaus. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

n8n ist ein Werkzeug für Abläufe. Man setzt Knoten auf eine Fläche und verbindet sie. Jeder Knoten erledigt einen Schritt, und die Daten wandern von links nach rechts.

Das hier ist der erste der beiden Abläufe, die wir bauen. Links kommt eine Anfrage über ein Formular herein. Ein Sprachmodell ordnet sie ein, ein zweites schreibt einen Entwurf, und am Ende landet alles in einer Tabelle.

Der zweite Ablauf ist das Freigabeformular. Nur wer bei n8n angemeldet ist, kann es öffnen, den Entwurf prüfen, ändern und freigeben.

Und hier sieht man das Ergebnis: jede Anfrage mit Kategorie, Entwurf und Status. Alles läuft auf einem eigenen Server. Die KI kommt über das AuxData-Gateway mit einem Modell in Europa.

1 Die Begriffe, die Du brauchst

⚡
Auslöser (Trigger)
Der erste Knoten. Er entscheidet, wann ein Ablauf startet: ein Klick, ein Formular, ein Zeitplan, eine eingehende Nachricht.
🧩
Knoten (Node)
Ein Schritt. Felder setzen, entscheiden, ein Sprachmodell fragen, in eine Tabelle schreiben.
📦
Item
Ein Datensatz, der von Knoten zu Knoten wandert. Jede Kundenanfrage ist ein Item.
🧾
Ausführung (Execution)
Ein Durchlauf des Ablaufs. n8n hebt jede auf, damit Du nachsehen kannst, was passiert ist.

2 Was wir bauen

Die fiktive Nordwerk GmbH baut Werkstattmöbel und bekommt jeden Tag Anfragen. Am Ende dieser Schulung laufen zwei Workflows:

  1. Kundenanfragen vorsortieren. Ein Formular nimmt die Anfrage an. Ein Sprachmodell ordnet sie ein (Angebot, Support, Beschwerde, Sonstiges), ein zweiter Aufruf schreibt einen Antwortentwurf. Alles landet mit Status offen in einer Tabelle.
  2. Antworten freigeben. Ein zweites Formular, das nur angemeldete n8n-Nutzer öffnen können. Dort prüft ein Mensch den Entwurf, ergänzt ihn und gibt ihn frei. Solange Platzhalter in eckigen Klammern stehen, lehnt der Ablauf die Freigabe ab.
💡 Der Ablauf verschickt nichts von allein. Das ist Absicht: Die KI entwirft, der Mensch entscheidet. Den Versand per E-Mail kannst Du später als weiteren Knoten anhängen.

3 Was n8n ist und was nicht

n8n ist ein Werkzeug für Abläufe mit über tausend fertigen Knoten. Du betreibst es selbst, mit Docker auf einem eigenen Server. Die Lizenz heißt Sustainable Use License: Für Deine eigenen Abläufe darfst Du n8n frei nutzen, als Dienst an andere weiterverkaufen darfst Du es nicht.

n8n rechnet keine KI selbst. Es ruft ein Sprachmodell über eine Schnittstelle auf. In dieser Schulung ist das GLM 5.3 über das AuxData-Gateway, das Modell wird über Mistral in Europa betrieben. Ein lokales Ollama aus der Schulung Lokale KI geht genauso.

✓ Kurz geprüft

Stufe 2

Voraussetzungen und Sicherheitsregeln

Was vor dem ersten Befehl stehen muss.

Stufe 2 · Was Du brauchst

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die vier Voraussetzungen in einer Minute. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Erstens einen eigenen Server, also einen VPS, auf den Du Dich per SSH anmelden kannst. Wie das geht, zeigen die Schulungen zu Self-Hosting und SSH.

Zweitens Docker mit Compose auf diesem Server. Die Grundlagen stehen in der Docker-Schulung, hier setze ich sie voraus.

Drittens einen Zugang zu einem Sprachmodell. Ich nehme das AuxData-Gateway. Jeder Dienst, der wie OpenAI spricht, geht genauso, auch ein lokales Ollama.

Und viertens eine Regel für die ganze Schulung: Wir üben auf einer eigenen Instanz. Nicht auf dem n8n, in dem schon echte Abläufe Deiner Firma laufen.

1 Deine Ausgangslage

  1. Ein VPS mit SSH-Zugang. Ein gemieteter Linux-Server, auf den Du Dich per Schlüssel anmeldest. Wie das geht: Self-Hosting & VPS und SSH. Für diese Übung reichen 2 GB RAM, n8n braucht im Leerlauf etwa 300 MB.
  2. Docker und Docker Compose auf dem Server. Prüfen mit docker compose version. Wenn Container neu für Dich sind: erst die Docker-Schulung.
  3. Ein Zugang zu einem Sprachmodell. Hier: ein persönlicher API-Schlüssel aus AuxData (Profil → API-Schlüssel). Jeder Dienst mit OpenAI-kompatibler Schnittstelle geht genauso.
  4. Die Übungsdateien aus dem Abschnitt Befehle zum Kopieren: Compose-Datei, .env, Systemanweisung und der Freigabe-Workflow zum Einfügen.

2 Drei Regeln, bevor Du anfängst

⚠️ Üben nur auf einer eigenen Instanz. Wenn in Deiner Firma schon ein n8n läuft: nicht dort. Diese Schulung installiert ein zweites, eigenes n8n.
🔒 Port nicht öffnen. n8n lauscht nur auf 127.0.0.1. Du erreichst es über einen SSH-Tunnel. Wer zuerst die Einrichtungsseite aufruft, wird Eigentümer der Instanz. Deshalb darf sie nie offen im Netz stehen.
↩️ Zurück geht immer. docker compose down -v im Ordner /opt/n8n löscht die Übungsinstanz samt Daten. Danach kannst Du bei Stufe 3 neu anfangen.

✓ Kurz geprüft

Stufe 3

Installieren

Eine Compose-Datei, eine feste Version, ein Schlüssel. Auf dem VPS, im Terminal.

Stufe 3 · Im Terminal: n8n aufsetzen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Aufgenommen am 23. September 2026 auf einem VPS mit Ubuntu 24.04 LTS, Docker 29.6 und Compose 5.3. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Wir sind per SSH auf dem Server angemeldet. Zuerst die Kontrolle, ob Docker und Compose da sind. Beide antworten mit ihrer Versionsnummer, also kann es losgehen.

n8n bekommt einen eigenen Ordner unter /opt. Darin liegt die Compose-Datei. Das Wichtigste steht in der Zeile mit dem Image: Dort steht keine feste Zahl, sondern eine Variable für die Version. Und der Port ist nur an 127.0.0.1 gebunden, also von außen nicht erreichbar.

Die Einstellungen stehen in der Datei .env. Die Version ist hier fest auf 2.39.10 gesetzt, mit Absicht eine ältere, damit wir später ein echtes Update machen können. Dazu kommt ein zufälliger Schlüssel, mit dem n8n alle gespeicherten Zugangsdaten verschlüsselt. Den zeige ich nicht, und die Datei darf nur root lesen.

Compose prüft die Datei, dann startet ein einziger Befehl alles. Docker lädt beim ersten Mal das Image, legt ein Netzwerk und ein Volume für die Daten an und startet den Container.

Der Container läuft. Die Warnungen in den Logs sind an dieser Stelle harmlos. Entscheidend ist die letzte Zeile: Der Gesundheitscheck antwortet mit Status ok.

Von außen ist Port 5678 zu. Auf Deinem eigenen Rechner öffnest Du deshalb einen SSH-Tunnel. Solange er läuft, ist n8n im Browser unter localhost:5678 erreichbar, und nur für Dich.

1 Ordner und Compose-Datei

📍
Ausgangslage
Du bist per SSH auf dem Server angemeldet, docker compose version antwortet.
👉
Deine Handlung
Ordner /opt/n8n anlegen, hineinwechseln, compose.yml mit dem Inhalt unten anlegen (z. B. mit nano compose.yml).
✅
Das siehst Du danach
ls zeigt die Datei compose.yml.
🛟
Wenn es anders aussieht
Einrückung prüfen: YAML verlangt Leerzeichen, keine Tabs. docker compose config zeigt den Fehler mit Zeilennummer.
1compose.yml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
    container_name: n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
Zwei Entscheidungen stecken darin: Die Version steht nicht hier, sondern kommt als Variable aus der .env. Und der Port hängt nur an 127.0.0.1. Von außen ist n8n damit nicht erreichbar.

2 Einstellungen und Schlüssel

2.env
N8N_VERSION=2.39.10
GENERIC_TIMEZONE=Europe/Berlin
TZ=Europe/Berlin
WEBHOOK_URL=http://localhost:5678/
N8N_DIAGNOSTICS_ENABLED=false
N8N_VERSION ist bewusst eine feste Nummer, nicht latest. So entscheidest Du, wann sich etwas ändert. Wir starten absichtlich mit einer älteren Version, damit Stufe 11 ein echtes Update zeigen kann.
3Schlüssel erzeugen, Datei schützen
echo "N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)" >> .env
chmod 600 .env
Mit diesem Schlüssel verschlüsselt n8n alle gespeicherten Zugangsdaten. Geht er verloren, sind sie wertlos, auch in jeder Sicherung. Deshalb gehört die .env in jede Sicherung (Stufe 11) und nie in ein Git-Repository.

3 Starten und prüfen

4Starten
docker compose config --quiet && echo 'Konfiguration ok'
docker compose up -d
docker compose ps
curl -s http://127.0.0.1:5678/healthz
📍
Ausgangslage
Beide Dateien liegen in /opt/n8n.
👉
Deine Handlung
Die vier Befehle oben nacheinander.
✅
Das siehst Du danach
docker compose ps zeigt den Container n8n als Up, curl antwortet {"status":"ok"}.
🛟
Wenn es anders aussieht
Container startet immer neu? docker compose logs n8n lesen. Häufigste Ursache: ein Tippfehler in der .env.

4 Der Tunnel von Deinem Rechner

5Auf Deinem eigenen Rechner (PowerShell, Terminal)
ssh -N -L 5678:127.0.0.1:5678 root@DEIN-SERVER
Solange dieses Fenster offen ist, erreichst Du n8n unter http://localhost:5678, und nur Du. DEIN-SERVER ist ein Platzhalter für Adresse oder SSH-Alias.
💡 Der Tunnel ist hier der Hauptweg, nicht nur eine Notlösung. Wie man n8n später mit eigener Domain und HTTPS hinter einen Reverse Proxy stellt, steht in der Self-Hosting-Schulung. Das braucht es erst, wenn andere Menschen das Formular erreichen sollen.

✓ Kurz geprüft

Stufe 4

Der erste Zugang

Wer sich zuerst anmeldet, gehört die Instanz.

Stufe 4 · Konto anlegen und umsehen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die frisch installierte Instanz beim ersten Aufruf. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Beim ersten Aufruf fragt n8n nach einem Konto. Wer das hier ausfüllt, wird Eigentümer der ganzen Instanz. Deshalb der Tunnel: Niemand anderes kommt vor Dir an diese Seite.

Danach bietet n8n einen eingebauten KI-Assistenten an. Den brauchen wir nicht, er würde zusätzliche Dienste einschalten. Ich lege ihn für später zurück.

Die Startseite ist noch leer. Links oben geht es zu neuen Workflows, unten liegen Hilfe und Einstellungen. Unter Hilfe steht der Punkt About n8n.

Hier steht die Version, 2.39.10, und die Lizenz. n8n ist Fair Code: Du darfst es für Deine eigenen Abläufe frei betreiben, aber nicht als Dienst an andere weiterverkaufen.

1 Das Eigentümerkonto

📍
Ausgangslage
Der Tunnel aus Stufe 3 läuft.
👉
Deine Handlung
Im Browser http://localhost:5678 öffnen, E-Mail, Vor- und Nachname und ein Passwort mit mindestens 8 Zeichen eintragen, Next.
✅
Das siehst Du danach
n8n bietet einen KI-Assistenten an. Set up later in Settings wählen. Danach die leere Startseite mit Build a workflow.
🛟
Wenn es anders aussieht
Statt der Einrichtung erscheint eine Anmeldeseite? Dann hat schon jemand ein Konto angelegt. Bei einer Übungsinstanz: docker exec n8n n8n user-management:reset setzt die Konten zurück.
🔒 Dieses Konto ist Owner: Es sieht alle Workflows und Zugänge und verwaltet weitere Nutzer. Das Passwort gehört in einen Passwortmanager.

2 Die Oberfläche in einem Satz je Bereich

  1. Links oben: neuer Workflow, Suche, Seitenleiste.
  2. Übersicht (Haus): Workflows, Zugänge (Credentials), Ausführungen (Executions), Variablen und Datentabellen (Data tables). Solange noch nichts da ist, fehlen die Reiter.
  3. Links unten: Hilfe mit About n8n (Version, Lizenz) und die Einstellungen.

Die Oberfläche von n8n ist englisch. Diese Schulung nennt die englischen Beschriftungen so, wie sie auf dem Bildschirm stehen, und erklärt sie auf Deutsch.

✓ Kurz geprüft

Stufe 5

Der erste Workflow

Auslöser, Felder und ein Ausdruck: die drei Handgriffe, die in jedem Ablauf vorkommen.

Stufe 5 · Auslöser, Felder, Ausdruck

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Ein kleiner Übungsablauf, bevor es ernst wird. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Ein neuer Workflow bekommt zuerst einen Namen. Dann braucht er einen Auslöser, denn ohne Auslöser läuft nichts. Für den Anfang nehme ich den einfachsten: Er startet, wenn ich auf einen Knopf drücke.

Dahinter kommt Edit Fields. Dieser Knoten setzt Felder mit Namen und Wert. Das erste Feld heißt gruss und hat einen festen Text.

Das zweite Feld bekommt keinen festen Text, sondern einen Ausdruck. Dafür schalte ich von Fixed auf Expression. Alles zwischen den doppelten geschweiften Klammern rechnet n8n aus, hier die aktuelle Uhrzeit. Darunter steht schon die Vorschau.

Ein Klick auf Execute step, und rechts erscheint das Ergebnis. Das ist ein Item: ein Datensatz mit zwei Feldern. Alles in n8n sind solche Items. Jeder Knoten bekommt welche und gibt welche weiter.

1 Selbst nachbauen

📍
Ausgangslage
Startseite, angemeldet.
👉
Deine Handlung
Neuer Workflow, Name Erster Versuch. Add first step → Manual Trigger. Am Ausgang auf + → Edit Fields. Add Field: Name gruss, Wert Hallo Nordwerk.
✅
Das siehst Du danach
Nach Execute step steht rechts unter Output eine Zeile mit dem Feld gruss.
🛟
Wenn es anders aussieht
Rechts steht nichts? Execute step im geöffneten Knoten drücken, nicht nur schließen.

2 Fixed oder Expression

Jedes Feld hat zwei Zustände. Fixed heißt: Der Text wird genau so übernommen. Expression heißt: Alles zwischen {{ }} rechnet n8n aus, bevor der Knoten läuft.

1Zweites Feld: uhrzeit (auf Expression umschalten)
{{ $now.toFormat('HH:mm') }}
Unter dem Feld erscheint sofort die Vorschau. $now ist die aktuelle Zeit, $json sind die Daten des Items, das gerade im Knoten ankommt. Beides begegnet Dir in jeder weiteren Stufe.
⚠️ Zwei geschweifte Klammern in ein Feld zu tippen, das auf Fixed steht, macht daraus keinen Ausdruck. Dann steht im Ergebnis wörtlich {{ $now… }}. Erst auf Expression umschalten.

✓ Kurz geprüft

Stufe 6

Das Anfrageformular

Ein Formular, das n8n selbst ausliefert, mit Test-Adresse und festgepinnten Daten.

Stufe 6 · Formular bauen und testen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Das Formular wird im zweiten Tab ausgefüllt, n8n empfängt die Daten. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Jetzt der echte Ablauf. Er beginnt mit einem Formular, das n8n selbst ausliefert. Titel und Beschreibung sind das, was Kundinnen und Kunden später oben lesen.

Drei Felder: Name, E-Mail und das Anliegen als großes Textfeld. Alle drei sind Pflicht. Die Beschriftung ist gleichzeitig der Name, unter dem der Wert später im Ablauf steht.

Execute step öffnet das Formular unter seiner Test-Adresse. Ich fülle es aus wie eine Kundin, die nach einem Preis fragt, und schicke es ab.

Zurück in n8n sind die Daten angekommen, als ein Item mit Name, E-Mail und Anliegen. Ich pinne sie fest. Dann muss ich beim Weiterbauen nicht jedes Mal das Formular neu ausfüllen.

Das lila Symbol am Knoten zeigt: Hier liegen festgepinnte Testdaten. Beim echten Betrieb werden sie nicht benutzt.

1 Das Formular

📍
Ausgangslage
Neuer Workflow, Name Kundenanfragen vorsortieren.
👉
Deine Handlung
Erster Schritt n8n Form → On new n8n Form event. Titel Anfrage an Nordwerk, Beschreibung nach Wahl. Drei Elemente über Add Form Element: Name (Text), E-Mail (Email), Anliegen (Textarea). Bei jedem unter Add Attributes → Required Field einschalten.
✅
Das siehst Du danach
Drei Felder, alle Pflicht. Die Beschriftung ist gleichzeitig der Feldname im Ablauf: $json.Anliegen.
🛟
Wenn es anders aussieht
Ein Feld fehlt im Ergebnis? Wahrscheinlich anders beschriftet, zum Beispiel mit Leerzeichen am Ende.

2 Testen und festpinnen

Execute step öffnet das Formular unter seiner Test-URL in einem neuen Tab. Nur solange n8n auf diesen einen Test wartet, nimmt die Adresse etwas an. Nach dem Absenden stehen die Daten rechts im Knoten.

Nimm als Testanfrage eine Preisfrage, zum Beispiel: „Guten Tag, was kostet die Werkbank WB-180 mit Buchenplatte, und wie lange ist die Lieferzeit nach Augsburg? Wir bräuchten drei Stück.“ Weitere Beispiele stehen in beispielanfragen.md.

Dann das Pin-Symbol im Output drücken. Festgepinnte Daten benutzt n8n bei jedem Test, ohne dass Du das Formular erneut ausfüllen musst. Im echten Betrieb werden sie ignoriert.

💡 Die Production URL gilt erst, wenn der Workflow veröffentlicht ist (Stufe 10). Vorher antwortet sie mit einem Fehler. Das ist kein Defekt.

✓ Kurz geprüft

Stufe 7

KI anschließen

Text Classifier, der Zugang zum AuxData-Gateway und ein Fehler, den man kennen sollte.

Stufe 7 · Einordnen mit GLM

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Mit dem Fehler 404, der beim ersten Versuch wirklich kam. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Hinter das Formular kommt ein Text Classifier. Welcher Text eingeordnet werden soll, ziehe ich einfach aus der linken Spalte ins Feld. So entsteht der Ausdruck von selbst, und die Vorschau zeigt gleich den echten Text.

Drei Kategorien: Angebot, Support und Beschwerde, jede mit einer kurzen Beschreibung. Das Modell liest die Beschreibungen mit. Und alles, was nicht klar passt, soll nicht verschwinden, sondern in einen eigenen Zweig namens Other.

Jetzt das Modell. Ich nehme den Knoten OpenAI Chat Model, weil das AuxData-Gateway dieselbe Sprache spricht. Im Zugang stehen zwei Dinge: der persönliche Schlüssel aus AuxData und die Adresse des Gateways statt der von OpenAI.

Die Modellliste kommt schon vom Gateway, das ist der Beweis, dass der Zugang stimmt. Ich suche nach GLM und nehme GLM 5.3, über Mistral in Europa betrieben.

Der erste Test geht schief, und zwar mit Absicht. Fehler 404. Der Grund steht nicht in der Meldung: Der Knoten benutzt von sich aus die neuere Responses-Schnittstelle von OpenAI, und die kennt das Gateway nicht.

Also im Modell den Schalter Use Responses API ausschalten und noch einmal. Jetzt kommt die Antwort, gut eine Sekunde später, und die Anfrage landet im Zweig Angebot.

Auf der Fläche sieht man die vier Ausgänge. Jeder Zweig ist ein eigener Weg, den die Daten nehmen können.

1 Der Klassifizierer

📍
Ausgangslage
Formular-Knoten mit festgepinnten Daten.
👉
Deine Handlung
Am Ausgang + → Text Classifier. Anliegen aus der linken Spalte ins Feld Text to Classify ziehen. Drei Kategorien mit Beschreibung anlegen. Unter Options → When No Clear Match → Output on Extra, 'Other' Branch.
✅
Das siehst Du danach
Das Feld zeigt {{ $json.Anliegen }} und darunter den echten Text. Der Knoten hat vier Ausgänge: Angebot, Support, Beschwerde, Other.
🛟
Wenn es anders aussieht
Ohne den Other-Zweig verwirft der Knoten alles, was nicht eindeutig passt. Dann verschwinden Anfragen spurlos.
KategorieBeschreibung (liest das Modell mit)
AngebotFragt nach Preis, Angebot, Kauf, Lieferzeit oder Verfügbarkeit.
SupportMeldet ein Problem mit einem Produkt oder braucht Hilfe bei der Nutzung.
BeschwerdeÄußert Ärger oder Unzufriedenheit, reklamiert oder fordert Ersatz.

2 Der Zugang zum Modell

📍
Ausgangslage
Klassifizierer offen, unten Model mit +.
👉
Deine Handlung
OpenAI Chat Model wählen. Bei Credential → Create new credential: API Key = Dein persönlicher AuxData-Schlüssel, Base URL = https://auxdata.ai/v1, Name z. B. AuxData-Gateway. Speichern.
✅
Das siehst Du danach
Die Modellliste füllt sich mit den Modellen des Gateways. Suche nach glm, wähle mistral/zai-glm-5-3.
🛟
Wenn es anders aussieht
Die Liste bleibt leer: Schlüssel falsch kopiert (Leerzeichen am Ende?) oder Base URL ohne /v1.
⚠️ Fehler 404 beim ersten Test. Das OpenAI-Chat-Model benutzt von sich aus die neuere Responses API von OpenAI. Das AuxData-Gateway spricht die ältere, weit verbreitete Chat-Schnittstelle. Abhilfe: im Modell-Knoten Use Responses API ausschalten. Gemessen am 23. September 2026 mit n8n 2.39.10: mit Schalter 404 page not found, ohne Schalter Antwort in unter einer Sekunde.
💡 Andere Modelle: Ollama aus Lokale KI hat einen eigenen Knoten Ollama Chat Model. Läuft n8n im Container und Ollama auf dem Host, heißt die Adresse http://host.docker.internal:11434, nicht localhost. Ein Programm, das nur die Responses API spricht, lässt sich über einen Übersetzer wie die FL-Pro-Bridge anbinden. Für n8n braucht es den nicht.

✓ Kurz geprüft

Stufe 8

Der Antwortentwurf

Vier Zweige zusammenführen und der KI klare Regeln geben.

Stufe 8 · Entwurf mit Regeln

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Der Entwurf, den GLM im Aufbau tatsächlich geschrieben hat. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Hinter den Zweig Angebot kommt ein Edit-Fields-Knoten namens Kategorie festhalten. Er merkt sich, über welchen Ausgang die Anfrage kam. Das steht in einem kurzen Ausdruck: eine Liste der vier Namen, und die Nummer des Ausgangs sucht den richtigen heraus. Die Vorschau zeigt noch undefined, weil sie den Zweig nicht kennt. Beim Ausführen steht dort der richtige Name.

Include Other Input Fields behält Name, E-Mail und Anliegen. Dann ziehe ich die anderen drei Ausgänge in denselben Knoten. Egal wie die Anfrage eingeordnet wurde, ab hier geht es gemeinsam weiter.

Den Entwurf schreibt eine Basic LLM Chain. Die Nachricht an das Modell enthält die Kategorie und das Anliegen. Dazu kommt eine Systemanweisung mit Regeln, die ich von der Schulungsseite einfüge. Die wichtigste Regel: keine Preise, Termine oder Zusagen erfinden, sondern Platzhalter in eckigen Klammern setzen.

Die Kette bekommt ihr eigenes Modell, wieder GLM über das Gateway, wieder ohne Responses API. Und das Ergebnis: ein höflicher Entwurf, bei dem Preis und Lieferzeit als Platzhalter offen bleiben. Genau so soll es sein. Die KI erfindet nichts, der Mensch ergänzt.

Auf der Fläche steht jetzt der Ablauf bis zum Entwurf.

1 Die Kategorie festhalten

Hinter jedem Zweig muss später dasselbe passieren. Statt vier gleicher Ketten kommt ein einziger Knoten, in den alle Zweige münden. Er schreibt dazu, über welchen Ausgang die Anfrage kam.

1Edit Fields · Feld kategorie (Expression)
{{ ['Angebot', 'Support', 'Beschwerde', 'Sonstiges'][$prevNode.outputIndex] }}
$prevNode.outputIndex ist die Nummer des Ausgangs, über den das Item kam, gezählt ab 0. Die Vorschau zeigt undefined, weil sie keinen Zweig kennt. Beim Ausführen steht dort der richtige Name. Include Other Input Fields einschalten, sonst gehen Name, E-Mail und Anliegen verloren.
📍
Ausgangslage
Klassifizierer mit vier Ausgängen, der erste hat ein +.
👉
Deine Handlung
Am Ausgang Angebot den Knoten Edit Fields anlegen, oben auf den Titel klicken und Kategorie festhalten nennen. Dann die Ausgänge Support, Beschwerde und Other mit der Maus auf den Eingang dieses Knotens ziehen.
✅
Das siehst Du danach
Vier Linien laufen in einen Knoten.
🛟
Wenn es anders aussieht
Eine Linie landet im falschen Knoten: anklicken und mit Entf löschen, neu ziehen.

2 Die Kette mit Regeln

📍
Ausgangslage
Kategorie festhalten ist angelegt.
👉
Deine Handlung
Dahinter Basic LLM Chain, Name Antwortentwurf. Source for Prompt → Define below. Prompt als Expression: Kategorie und Anliegen (siehe unten). Add Prompt → Typ System → Systemanweisung einfügen. Modell: wieder OpenAI Chat Model mit dem Zugang aus Stufe 7, GLM, Responses API aus.
✅
Das siehst Du danach
Nach Execute step steht im Output ein Feld text mit dem Entwurf.
🛟
Wenn es anders aussieht
Der Entwurf nennt einen Preis? Dann fehlt die Systemanweisung oder sie steht als User- statt System-Nachricht.
2Prompt (User Message, Expression)
Kategorie: {{ $json.kategorie }}
Anliegen: {{ $json.Anliegen }}
3Systemanweisung (Typ System)
Du schreibst Antwortentwürfe für die Nordwerk GmbH, einen kleinen Hersteller von Werkstattmöbeln. Schreibe höflich, knapp (höchstens 120 Wörter), per Sie, auf Deutsch.
Regeln:
- Erfinde keine Preise, Termine, Lieferzeiten oder Zusagen. Wo eine solche Angabe nötig ist, schreibe einen Platzhalter in eckigen Klammern, z. B. [Preis ergänzen].
- Bei Beschwerden: entschuldige dich für den Ärger, versprich nichts, kündige einen persönlichen Rückruf an.
- Gib nur den Text der Antwort aus, ohne Betreffzeile und ohne Erklärungen.
Die wichtigste Regel ist die zweite. Sprachmodelle schreiben gern etwas Plausibles hin, auch einen Preis, den es nicht gibt. Die Platzhalter machen sichtbar, was ein Mensch noch ergänzen muss, und Stufe 10 nutzt genau das.
📝 Gemessen im Aufbau: Für die Preisfrage nach der WB-180 schrieb GLM einen höflichen Entwurf mit [Preis ergänzen], [Lieferzeit ergänzen] und [Kontaktdaten ergänzen]. Die vier Testanfragen aus beispielanfragen.md wurden alle richtig eingeordnet. Das ist eine Stichprobe, keine Garantie. Deshalb gibt es die Freigabe.

✓ Kurz geprüft

Stufe 9

Ablegen

Eine Datentabelle als Arbeitsliste, ohne eigene Datenbank.

Stufe 9 · Tabelle und Testlauf

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Der erste vollständige Durchlauf mit den festgepinnten Testdaten. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Die Entwürfe brauchen einen Ort. n8n hat dafür eigene Datentabellen, ohne zusätzliche Datenbank. Ich lege die Tabelle anfragen an, mit sieben Spalten für Name, E-Mail, Anliegen, Kategorie, Entwurf, Status und die freigegebene Antwort.

Zurück im Workflow kommt hinter den Entwurf der Knoten Data table mit der Aktion Insert row. Er bekommt den Namen Zur Freigabe ablegen.

Die Felder ziehe ich wieder aus der linken Spalte in die Spalten der Tabelle. Beim Status steht fester Text: offen.

Tidy up räumt die Fläche auf. Dann der ganze Ablauf auf einmal, mit den festgepinnten Testdaten.

Alle Knoten sind grün, und in der Tabelle steht die erste Zeile: Jana Berger, Kategorie Angebot, ein Entwurf, Status offen.

1 Die Tabelle anlegen

📍
Ausgangslage
Übersicht → Reiter Data tables.
👉
Deine Handlung
Create data table, Name anfragen, From scratch. Über Add Column sieben Textspalten: name, email, anliegen, kategorie, entwurf, status, antwort_final.
✅
Das siehst Du danach
Die Tabelle hat neben id, createdAt und updatedAt Deine sieben Spalten.
🛟
Wenn es anders aussieht
Die Namen genau so schreiben, klein und mit Unterstrich. Der Freigabe-Workflow aus Stufe 10 sucht die Tabelle und die Spalten unter diesen Namen.
💡 Datentabellen sind für kleine bis mittlere Mengen gedacht, standardmäßig bis 200 MB für alle Tabellen einer Instanz zusammen. Für eine Arbeitsliste reicht das lange.

2 Der Knoten, der ablegt

📍
Ausgangslage
Workflow Kundenanfragen vorsortieren, der Entwurf funktioniert.
👉
Deine Handlung
Hinter Antwortentwurf: Data table → Insert row, Tabelle anfragen, Name Zur Freigabe ablegen. Links Kategorie festhalten aufklappen und Name, E-Mail, Anliegen, kategorie in die gleichnamigen Spalten ziehen. text aus Antwortentwurf in entwurf. Bei status fest offen eintippen.
✅
Das siehst Du danach
Execute workflow: alle Knoten grün, in der Tabelle steht eine Zeile mit Status offen.
🛟
Wenn es anders aussieht
status ist leer? Beim Eintippen lag die Vorschau des vorigen Feldes über dem Eingabefeld. Einmal daneben klicken, dann tippen. Genau das ist beim Dreh passiert.

✓ Kurz geprüft

Stufe 10

Freigabe und Veröffentlichen

Ein Mensch entscheidet, und erst mit Publish gelten die echten Adressen.

Stufe 10 · Freigeben, veröffentlichen, durchspielen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Kundensicht, Freigabe, Platzhalter-Sperre: alles echte Durchläufe. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Die Freigabe ist ein eigener, zweiter Workflow. Ich kopiere ihn fertig von der Schulungsseite und füge ihn ein. Der erste Knoten ist wieder ein Formular, aber mit einem Unterschied: Authentication steht auf n8n User Auth. Nur wer bei n8n angemeldet ist, kommt hinein.

Warum zwei Workflows? Beim Aufbau habe ich es zuerst in einem versucht. Dann landete die Kundin nach dem Absenden direkt im Freigabeformular und hätte ihre eigene Antwort freigeben können. Getrennt kann das nicht passieren. Jetzt veröffentliche ich beide. Erst damit gelten die echten Adressen.

Die Kundensicht: das Formular unter seiner echten Adresse. Ein Kunde fragt nach einem Rollcontainer. Nach dem Absenden sieht er nur eine kurze Bestätigung. Sonst nichts.

In n8n taucht die Ausführung unter Executions auf. Ein paar Sekunden später steht die Anfrage in der Tabelle, eingeordnet, mit Entwurf und Status offen.

Jetzt die Freigabe. Beim ersten Mal fragt n8n, ob das Formular mit meiner Anmeldung laufen darf. Ich gebe die Nummer der Anfrage ein und sehe den Entwurf. Ich klicke Freigeben, ohne etwas zu ändern. Und der Ablauf sagt nein: Da stehen noch Platzhalter in eckigen Klammern.

Zweiter Anlauf. Preis und Lieferzeit trage ich ein, dann speichern. Jetzt ist die Anfrage freigegeben.

In der Tabelle steht der neue Status und die Antwort, die ein Mensch geprüft hat. Verschicken könnte sie ab hier ein weiterer Knoten, zum Beispiel per E-Mail.

1 Warum zwei Workflows

Naheliegend wäre, im selben Ablauf mit einem Wait-Knoten auf eine Freigabe zu warten. Das haben wir beim Aufbau ausprobiert. Das Ergebnis: Die Kundin landete nach dem Absenden direkt im Freigabeformular und hätte ihre eigene Antwort freigeben können. n8n verkettet ein Formular mit jedem weiteren Formularschritt derselben Ausführung, auch hinter einer Dankesseite.

Deshalb ist die Freigabe ein eigener Workflow mit eigenem Formular, und dieses ist mit n8n User Auth geschützt. Nur angemeldete Nutzer Deiner Instanz kommen hinein, beim ersten Aufruf fragt n8n einmal um Zustimmung.

2 Einfügen, veröffentlichen, durchspielen

📍
Ausgangslage
Die Tabelle anfragen gibt es, Workflow 1 legt Zeilen an.
👉
Deine Handlung
Neuer Workflow Antworten freigeben. Den Inhalt von freigabe-workflow.json kopieren (Abschnitt Befehle zum Kopieren) und mit Strg+V auf die Fläche einfügen. Oben rechts Publish. Dann Workflow 1 öffnen und ebenfalls Publish.
✅
Das siehst Du danach
Beide zeigen Published. Unter der Production URL des Formulars nimmt Workflow 1 jetzt echte Anfragen an.
🛟
Wenn es anders aussieht
Publish ist ausgegraut? Dann gibt es keine ungespeicherten Änderungen, der Workflow ist schon veröffentlicht.

Und dann das Ganze aus beiden Sichten:

  1. Kundensicht: Formular unter der Production URL öffnen, eine Preisanfrage schicken. Zu sehen ist nur eine kurze Bestätigung („Your response has been recorded“, den Text kannst Du im Formular-Knoten unter Options ändern).
  2. In n8n: Unter Executions erscheint der Durchlauf, wenige Sekunden später steht die Zeile in der Tabelle.
  3. Freigabe: Das Formular von Antworten freigeben öffnen, einmal Allow access, die Nummer (Spalte id) eingeben. Entwurf lesen, Freigeben wählen und ohne Änderung speichern: „Noch nicht freigegeben“, weil Platzhalter übrig sind.
  4. Zweiter Anlauf: Platzhalter ersetzen, speichern: „Anfrage … ist jetzt: freigegeben“. In der Tabelle stehen Status und geprüfte Antwort.
💡 Save ist nicht Publish. n8n speichert jede Änderung sofort als Entwurf. Live wird sie erst mit Publish. So kannst Du an einem laufenden Ablauf arbeiten, ohne dass halbfertige Änderungen Anfragen kaputtmachen.

✓ Kurz geprüft

Stufe 11

Sichern und Updaten

n8n erscheint fast wöchentlich neu. So spielst Du Updates ein, ohne etwas zu riskieren.

Stufe 11a · Im Terminal: sichern und aktualisieren

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Das echte Update von 2.39.10 auf 2.40.5, aufgenommen am 23. September 2026. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

n8n erscheint fast jede Woche in einer neuen Version. Zuerst also: Was läuft gerade, und was ist neu? Bei uns läuft 2.39.10, die aktuelle stabile ist 2.40.5. Vor jedem Update lohnt ein Blick in die Release-Notes.

Dann sichern, und zwar vollständig. Die Workflows und die Zugänge werden exportiert. Danach halte ich n8n kurz an und packe das ganze Datenvolume in ein Archiv. Und die Datei .env kommt mit, denn ohne den Schlüssel darin sind die gesicherten Zugänge wertlos.

Das eigentliche Update ist klein. In der .env steht jetzt die neue Nummer, nicht latest. So entscheide ich, wann sich etwas ändert, und nicht der nächste Neustart. Pull lädt das Image, up startet den Container neu.

Und dann prüfen. n8n schreibt beim Start selbst, von welcher Version es kommt. Die Versionsnummer stimmt, der Gesundheitscheck sagt ok. In den Startmeldungen stehen übrigens Hinweise auf Einstellungen, die sich mit der nächsten großen Version ändern. Die sollte man lesen.

Und falls doch etwas nicht stimmt: Nur die alte Nummer zurückzusetzen reicht nicht. n8n baut beim Start seine Datenbank auf die neue Version um. Zurück geht es deshalb nur mit der alten Nummer und der Sicherung zusammen. Das habe ich beim Aufbau einmal durchgespielt, es funktioniert.

Stufe 11b · Im Browser: alles noch da?

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Die Gegenprobe nach dem Update. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Im Browser die Gegenprobe. About n8n zeigt jetzt 2.40.5.

Beide Workflows sind noch da und weiterhin veröffentlicht. Die Anmeldung, die Zugänge und die Tabelle haben das Update überstanden.

1 Wie oft, und welche Version

  1. Feste Nummer statt latest. Mit latest ändert sich n8n beim nächsten Neustart des Servers, ohne dass Du es beschlossen hast. Mit fester Nummer entscheidest Du den Zeitpunkt.
  2. Stable, nicht beta. Am 23. September 2026 zeigten latest und stable auf 2.40.5, beta auf 2.41.0. Übernimm die Nummer von stable.
  3. Rhythmus: etwa einmal im Monat, Sicherheitsupdates sofort. Vorher die Release-Notes lesen, besonders bei einer neuen Hauptversion.

2 Sichern: vier Dinge

1Im Ordner /opt/n8n
mkdir -p backups/vor-2.40.5
docker exec n8n n8n export:workflow --backup --output=/home/node/.n8n/sicherung/workflows/
docker exec n8n n8n export:credentials --backup --output=/home/node/.n8n/sicherung/zugaenge/
docker cp n8n:/home/node/.n8n/sicherung backups/vor-2.40.5/
docker compose stop
docker run --rm -v n8n_n8n_data:/daten:ro -v $PWD/backups/vor-2.40.5:/ziel alpine tar czf /ziel/n8n_data.tar.gz -C /daten .
cp .env backups/vor-2.40.5/env.sicherung && chmod 600 backups/vor-2.40.5/env.sicherung
Workflows und Zugänge als einzelne Dateien, zum Nachsehen oder Übertragen. Das Datenvolume als Ganzes, damit Tabellen, Konten und Ausführungen mitkommen. Und die .env: Die exportierten Zugänge sind mit dem Schlüssel darin verschlüsselt und ohne ihn wertlos. Für die Volume-Sicherung wird n8n kurz angehalten.
⚠️ Viele Update-Skripte exportieren nur die Workflows. Dann fehlen Zugänge, Tabellen und Konten, und nach einem missglückten Update fängt man bei null an.

3 Aktualisieren und prüfen

2Neue Nummer eintragen, laden, starten
sed -i 's/^N8N_VERSION=.*/N8N_VERSION=2.40.5/' .env
docker compose pull
docker compose up -d
3Prüfen
docker compose logs n8n | grep -E 'version change|Version:'
docker exec n8n n8n --version
curl -s http://127.0.0.1:5678/healthz
n8n schreibt beim Start selbst Recorded version change: 2.39.10 -> 2.40.5. Danach im Browser: About n8n, beide Workflows veröffentlicht, ein Testformular abschicken.
📝 In den Startmeldungen von 2.40.5 stehen Hinweise auf Einstellungen, deren Standardwerte sich demnächst ändern, etwa die Zeitgrenze für Code-Knoten von 300 auf 60 Sekunden. Solche Zeilen sind die Vorwarnung für die nächste Hauptversion.

4 Der Rückweg

n8n baut beim Start seine Datenbank auf die neue Version um. Nur die alte Nummer zurückzusetzen, reicht deshalb nicht. Zurück geht es mit der alten Nummer und der Sicherung. Beim Aufbau dieser Schulung ausprobiert: danach wieder 2.39.10, alle 36 Probe-Workflows da.

4Nur falls nötig
docker compose down
docker run --rm -v n8n_n8n_data:/daten -v $PWD/backups/vor-2.40.5:/quelle:ro alpine \
  sh -c "rm -rf /daten/* /daten/.[!.]* 2>/dev/null; tar xzf /quelle/n8n_data.tar.gz -C /daten"
sed -i 's/^N8N_VERSION=.*/N8N_VERSION=2.39.10/' .env
docker compose up -d

Für später liegt alles zusammen in n8n-update.sh: sichern, Nummer umstellen, laden, starten, prüfen. Aufruf: ./n8n-update.sh 2.40.5.

✓ Kurz geprüft

Stufe 12

Betrieb und Grenzen

Was im Alltag zählt, und wo diese Übung aufhört.

Stufe 12a · Im Terminal: nachsehen

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Speicher, Warnungen, Sicherungen. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Im Alltag reichen ein paar Blicke. Docker stats zeigt, wie viel Speicher n8n gerade braucht. Auf einem kleinen Server ist das die Zahl, auf die man achten muss.

Die Logs zeigen, was sich ankündigt. Hier die Einstellungen, deren Standardwerte sich in einer kommenden Version ändern.

Und die Sicherungen liegen auf demselben Server wie n8n. Das ist bequem, schützt aber nicht vor dem Ausfall des Servers. Deshalb gehört eine Kopie regelmäßig auf einen anderen Rechner.

Stufe 12b · Worauf es ankommt

Sprecherstimme synthetisch erzeugt (Text-to-Speech).

Vier Regeln zum Schluss. Untertitel lassen sich im Player zuschalten.
Was im Video gesagt wird

Erstens: n8n nicht offen ins Internet stellen, solange es nicht nötig ist. Wenn doch, dann nur hinter einem Reverse Proxy mit HTTPS. Das zeigt die Self-Hosting-Schulung.

Zweitens: eine feste Version und ein fester Rhythmus. Etwa einmal im Monat updaten, Sicherheitsupdates sofort, und immer mit Sicherung.

Drittens: Im Oktober kommt n8n drei. Ab dann gibt es n8n nur noch als Docker-Image, und einige Standardwerte ändern sich. Wer die Warnungen jetzt liest, ist vorbereitet.

Und viertens: Die KI entwirft, der Mensch entscheidet. Dieser Ablauf verschickt nichts von allein, und das ist Absicht.

1 Drei Blicke im Alltag

1Im Ordner /opt/n8n
docker stats --no-stream n8n            # Speicher und CPU
docker compose logs --since 24h n8n | grep -i error
du -sh backups/*                         # wie groß sind die Sicherungen?
2Sicherungen auf einen anderen Rechner holen (auf Deinem Rechner)
scp -r root@DEIN-SERVER:/opt/n8n/backups ./n8n-sicherungen

2 Grenzen dieser Übung

  1. Erreichbarkeit. Über den Tunnel erreichst nur Du das Formular. Für echte Kundinnen braucht n8n eine Domain, HTTPS und einen Reverse Proxy (Self-Hosting). Dann WEBHOOK_URL auf die öffentliche Adresse setzen.
  2. Datenbank. Standardmäßig benutzt n8n SQLite im Volume. Für viele Ausführungen oder mehrere Instanzen ist PostgreSQL die bessere Wahl.
  3. n8n 3.0 im Oktober 2026. Ab dann gibt es n8n nur noch als Docker-Image, npm install n8n entfällt. Wer die Hinweise in den Startmeldungen jetzt liest, ist vorbereitet.
  4. Die KI bleibt ein Entwurf. Die Einordnung war in unseren Tests richtig, der Entwurf vorsichtig. Beides kann danebenliegen. Die Freigabe durch einen Menschen ist deshalb Teil des Ablaufs.
💡 Wer so einen Ablauf für den eigenen Betrieb bauen will, mit echten Postfächern, CRM und Versand: Das ist der Stoff der Live-Schulung Automatisierung, siehe Karte links unten.

✓ Kurz geprüft

Bonus

Befehle zum Kopieren

Alles aus den zwölf Stufen an einer Stelle, in der Reihenfolge, in der man es braucht.

1 Installation

1/opt/n8n/compose.yml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
    container_name: n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678"
    env_file: .env
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
2/opt/n8n/.env
N8N_VERSION=2.39.10
GENERIC_TIMEZONE=Europe/Berlin
TZ=Europe/Berlin
WEBHOOK_URL=http://localhost:5678/
N8N_DIAGNOSTICS_ENABLED=false
3Schlüssel, Start, Kontrolle
echo "N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)" >> .env && chmod 600 .env
docker compose up -d && docker compose ps
curl -s http://127.0.0.1:5678/healthz
4Tunnel (auf Deinem Rechner)
ssh -N -L 5678:127.0.0.1:5678 root@DEIN-SERVER

2 In den Workflows

5Kategorie festhalten · kategorie
{{ ['Angebot', 'Support', 'Beschwerde', 'Sonstiges'][$prevNode.outputIndex] }}
6Antwortentwurf · Prompt
Kategorie: {{ $json.kategorie }}
Anliegen: {{ $json.Anliegen }}
7Antwortentwurf · Systemanweisung
Du schreibst Antwortentwürfe für die Nordwerk GmbH, einen kleinen Hersteller von Werkstattmöbeln. Schreibe höflich, knapp (höchstens 120 Wörter), per Sie, auf Deutsch.
Regeln:
- Erfinde keine Preise, Termine, Lieferzeiten oder Zusagen. Wo eine solche Angabe nötig ist, schreibe einen Platzhalter in eckigen Klammern, z. B. [Preis ergänzen].
- Bei Beschwerden: entschuldige dich für den Ärger, versprich nichts, kündige einen persönlichen Rückruf an.
- Gib nur den Text der Antwort aus, ohne Betreffzeile und ohne Erklärungen.

Der Freigabe-Workflow zum Einfügen liegt in freigabe-workflow.json: Datei öffnen, alles markieren und kopieren, in n8n auf einer leeren Fläche Strg+V. Er findet die Tabelle über ihren Namen anfragen, IDs oder Zugänge braucht er nicht.

3 Sichern und Updaten

8Alles in einem Skript: demo/n8n-update.sh
chmod +x n8n-update.sh
./n8n-update.sh 2.40.5         # sichert, stellt um, lädt, startet, prüft
Das Skript bricht ab, wenn die Sicherung scheitert, und rührt dann nichts an. Den Rückweg zeigt es am Ende an, führt ihn aber nicht selbst aus.
9Nutzerkonten einer Übungsinstanz zurücksetzen
docker exec n8n n8n user-management:reset
10Übungsinstanz komplett entfernen
cd /opt/n8n && docker compose down -v
Löscht Container und Datenvolume. Die Ordner backups/ bleiben liegen.

4 Weiterlesen

  1. n8n-Dokumentation: Knoten, Ausdrücke, Betrieb
  2. Release-Notes: vor jedem Update lesen
  3. Docker · Self-Hosting & VPS · SSH
  4. Lokale KI: dieselben Abläufe mit einem Modell auf dem eigenen Rechner
Lernkontrolle

Quiz

7 Fragen quer durch die Stufen. Ab 6 richtigen Antworten schaltest du dein Zertifikat frei.

Frage 1 von 7
…
Abschluss

Dein Zertifikat

Glückwunsch! Trage deinen Namen ein und drucke das Zertifikat (oder speichere als PDF).

Das ist eine Vorschau. Das Zertifikat wird freigeschaltet, sobald Du im Quiz mindestens 6 von 7 Fragen richtig beantwortet hast. Bis dahin trägt es das Wasserzeichen „Muster“ und lässt sich nicht drucken.
FL
Florian Ludwig
AI Consultant · Kutzschbach INNOVATIONS
Zertifikat
n8n — Abläufe automatisieren auf dem eigenen Server
Hiermit wird bestätigt, dass
Dein Name hier
den Workshop „n8n — Abläufe automatisieren auf dem eigenen Server" erfolgreich abgeschlossen hat.
—Datum
★GEPRÜFT
Florian LudwigAI Consultant · Kutzschbach INNOVATIONS