n8n
n8n ist ein quelloffenes Low-Code-Tool zur Workflow-Automatisierung. Es verbindet Geräte, APIs und Dienste über visuelle Knoten und eignet sich ideal, um IoT-Daten, Webhooks und Aktionen ohne viel Code zu orchestrieren.
n8n ist eine Plattform zur Workflow-Automatisierung, mit der du Datenquellen, APIs und Dienste über einen visuellen Editor miteinander verbindest – ohne grosse Eigenentwicklung. Statt für jede Integration ein eigenes Skript zu schreiben, baust du deine Abläufe aus vorgefertigten Knoten zusammen und ergänzt bei Bedarf eigenen Code. Gerade im IoT- und Infrastruktur-Umfeld ist n8n stark: Es nimmt Sensordaten oder Webhooks entgegen, verarbeitet sie und löst Aktionen aus – etwa Benachrichtigungen, Datenbank-Schreibvorgänge oder Steuerbefehle. In dieser Anleitung erfährst du, was n8n ausmacht, wofür es sich eignet und wie du es sauber und datensicher mit Docker betreibst.
Was ist n8n?
n8n ist ein quelloffenes Low-Code-Tool zur Workflow-Automatisierung. Du modellierst deine Abläufe in einem grafischen Editor, indem du Knoten (Nodes) per Drag-and-drop verbindest: Ein Trigger startet den Workflow (z. B. ein eingehender Webhook, ein Zeitplan oder ein Datenbank-Ereignis), nachgelagerte Knoten transformieren die Daten und führen Aktionen aus. Für Fälle, in denen vorgefertigte Knoten nicht reichen, kannst du eigenen JavaScript- oder Python-Code direkt im Workflow ausführen. Im Gegensatz zu vielen Cloud-only-Diensten lässt sich n8n vollständig selbst hosten, sodass deine Daten und Zugangsdaten auf der eigenen Infrastruktur bleiben.
Wofür eignet sich n8n?
IoT- und Sensordaten verarbeiten. – n8n nimmt per Webhook oder über MQTT-/HTTP-Knoten Daten von Geräten und Gateways entgegen, filtert und transformiert sie und schreibt sie z. B. in eine Datenbank oder ein Dashboard.
Systeme integrieren. – mit über 400 vorgefertigten Knoten verbindest du APIs, Datenbanken, Messaging-Dienste und interne Tools, ohne für jede Schnittstelle eigene Glue-Skripte zu pflegen.
Ereignisgesteuerte Automatisierung. – Trigger reagieren auf eingehende Webhooks, Zeitpläne oder Statusänderungen und lösen Folgeaktionen wie Alarme, Tickets oder Steuerbefehle aus.
Eigener Code, wo nötig. – über Code-Knoten ergänzt du individuelle Logik in JavaScript oder Python, ohne den Low-Code-Ansatz für den Rest des Workflows aufzugeben.
Zentrale Konzepte und Datenhaltung
Workflows und Knoten. – ein Workflow ist eine Kette aus Trigger- und Aktions-Knoten; die Daten fliessen als strukturierte Items von Knoten zu Knoten.
Credentials und Encryption-Key. – Zugangsdaten für externe Dienste werden verschlüsselt gespeichert. Der dafür nötige Encryption-Key liegt im Datenverzeichnis (oder lässt sich über N8N_ENCRYPTION_KEY fest vorgeben) und muss unbedingt mitgesichert werden. Fehlt der Key beim Start, erzeugt n8n automatisch einen neuen – bereits gespeicherte Credentials lassen sich dann nicht mehr entschlüsseln.
Persistente Daten. – Workflows, Credentials und die Ausführungs-Historie liegen standardmässig in einer SQLite-Datenbank unter /home/node/.n8n. Für grössere Setups lässt sich n8n auf PostgreSQL umstellen.
Webhooks und Reverse-Proxy. – damit eingehende Webhook-URLs von aussen korrekt erreichbar sind, muss WEBHOOK_URL auf die öffentlich erreichbare Adresse zeigen (inklusive Reverse-Proxy-Domain). Hinter einem Proxy hilft zusätzlich N8N_PROXY_HOPS=1, damit n8n die echte Client-IP korrekt erkennt.
Das Verzeichnis /home/node/.n8n enthält neben Workflows und der SQLite-Datenbank auch den Encryption-Key für deine Credentials. Fehlt dieser Key beim Start (z. B. weil das Volume verloren ging), erzeugt n8n automatisch einen neuen – alle zuvor gespeicherten Zugangsdaten sind dann unbrauchbar. Persistiere das Verzeichnis als benanntes Volume und nimm es in dein Backup auf.
Installation mit Docker
n8n läuft als einzelner Container; entscheidend ist, dass das Datenverzeichnis /home/node/.n8n persistiert wird. Dort liegen Workflows, die Credentials, die Ausführungs-Historie (SQLite) und vor allem der Encryption-Key, mit dem deine Zugangsdaten verschlüsselt werden. Fehlt dieses Verzeichnis beim Start, legt n8n einen neuen Key an und alle bestehenden Credentials werden unbrauchbar – deshalb mountest du es als benanntes Volume und nimmst es ins Backup auf. Wir verwenden das offizielle Image docker.n8n.io/n8nio/n8n. Betreibst du n8n hinter einem Reverse-Proxy (z. B. nginx mit TLS), setzt du WEBHOOK_URL auf deine öffentliche https-Domain und lässt N8N_SECURE_COOKIE auf dem sicheren Standardwert (true). Nur wenn du n8n ohne HTTPS rein über http://IP:5678 aufrufst und der Editor sonst nicht lädt, setzt du N8N_SECURE_COOKIE=false. Standardmässig speichert n8n in einer eingebetteten SQLite-Datenbank – für grössere Installationen kannst du es auf eine externe PostgreSQL-Datenbank umstellen.
1docker volume create n8n_data23docker run -d \4 --name n8n \5 --restart unless-stopped \6 -p 5678:5678 \7 -e GENERIC_TIMEZONE="Europe/Zurich" \8 -e TZ="Europe/Zurich" \9 -e N8N_HOST="n8n.example.com" \10 -e N8N_PORT=5678 \11 -e N8N_PROTOCOL="https" \12 -e WEBHOOK_URL="https://n8n.example.com/" \13 -e N8N_PROXY_HOPS=1 \14 -v n8n_data:/home/node/.n8n \15 docker.n8n.io/n8nio/n8n1617# Nur ohne HTTPS (lokal/Test) zusaetzlich anhaengen, falls der Editor nicht laedt:18# -e N8N_SECURE_COOKIE=false
Oder als wiederverwendbare docker-compose.yml:
1services:2 n8n:3 image: docker.n8n.io/n8nio/n8n4 container_name: n8n5 restart: unless-stopped6 ports:7 - "5678:5678"8 environment:9 - GENERIC_TIMEZONE=Europe/Zurich10 - TZ=Europe/Zurich11 - N8N_HOST=n8n.example.com12 - N8N_PORT=567813 - N8N_PROTOCOL=https14 - WEBHOOK_URL=https://n8n.example.com/15 # Hinter Reverse-Proxy: echte Client-IP korrekt erkennen16 - N8N_PROXY_HOPS=117 # Nur bei reinem HTTP ohne TLS noetig (sonst weglassen!):18 # - N8N_SECURE_COOKIE=false19 volumes:20 - n8n_data:/home/node/.n8n2122volumes:23 n8n_data:
Setze N8N_SECURE_COOKIE=false ausschliesslich in lokalen oder Test-Umgebungen ohne HTTPS – im Produktivbetrieb gehoert n8n hinter einen Reverse-Proxy mit TLS, der Secure-Cookie bleibt dabei aktiv (Standard true) und WEBHOOK_URL muss auf die oeffentliche https-Adresse zeigen. Sichere das Volume n8n_data inklusive Encryption-Key; ohne ihn sind verschluesselte Credentials nicht wiederherstellbar. Setze ausserdem von Beginn an einen Owner-Account mit starkem Passwort.
Nach dem Start erreichst du den Editor im Browser; beim ersten Aufruf legst du den Owner-Account an.
1docker logs -f n8n2# Browser oeffnen:3http://SERVER:56784# oder lokal:5curl -I http://localhost:5678
Fazit
n8n ist ein flexibles, selbst hostbares Werkzeug, um IoT-Daten, APIs und Dienste ohne grossen Programmieraufwand zu verbinden. Der visuelle Editor senkt die Einstiegshürde, während Code-Knoten genug Spielraum für anspruchsvolle Logik lassen. Beim Betrieb mit Docker ist vor allem eines entscheidend: Persistiere /home/node/.n8n als benanntes Volume und sichere es regelmässig – dort stecken Workflows, Credentials und der Encryption-Key. Mit korrekt gesetztem WEBHOOK_URL und einem vorgeschalteten Reverse-Proxy mit TLS hast du eine robuste Automatisierungs-Zentrale für dein IoT- und Infrastruktur-Setup.
