Node-RED auf dem Synology NAS installieren: Automatisierung per Flow-Editor
Node-RED macht dein Synology NAS zur visuellen Automatisierungs-Zentrale für MQTT, Home Assistant und APIs – ohne Programmier-Studium. Diese Anleitung zeigt das sichere Compose-Deployment mit UID-1000-Rechten, adminAuth und Verifikation nach jedem Schritt.

Node-RED ist ein browserbasierter Flow-Editor, der IoT-Geräte, MQTT-Broker, HTTP-APIs und lokale Skripte ohne tiefe Programmierkenntnisse miteinander verbindet. Du ziehst Nodes auf eine Arbeitsfläche, verdrahtest sie per Linie und klickst auf „Deploy" – fertig läuft der Flow. Auf dem Synology NAS als Docker-Container betrieben, wird Node-RED zur dauerhaft verfügbaren Schaltzentrale für Smart-Home-Automatisierung: Temperatursensoren schreiben in Influx, MQTT-Nachrichten lösen Benachrichtigungen aus, Zeitpläne steuern Lampen. Die Kombination aus leichtgewichtigem Ressourcenbedarf, nativem MQTT-Support und einer riesigen Community-Palette macht Node-RED zur idealen Brücke zwischen dem IoT-Cluster (Mosquitto, Home Assistant) und nachgelagerten Automatisierungs-Workflows.
Voraussetzungen
- Synology NAS mit DSM 7.2 oder höher, Container Manager installiert
- SSH-Zugang zum NAS (zwingend für den
chown-Befehl; Anleitung: SSH auf dem Synology NAS aktivieren und verbinden) - Freier TCP-Port 1880 auf dem NAS
- Ca. 400 MB freier Speicherplatz (Image + Datenverzeichnis)
- Optional: laufender Mosquitto-Container für MQTT-Tests (siehe Eclipse Mosquitto auf dem Synology NAS installieren)
- Optional: laufender Home-Assistant-Container (siehe Home Assistant mit Docker: die lokale Smart-Home-Zentrale)
Eckdaten auf einen Blick
| Parameter | Wert | Hinweis |
|---|---|---|
| Image | nodered/node-red:4.1.10 | Letzter stabiler 4.x-Patch; expliziter Tag verhindert ungewollte Major-Updates via latest |
| Port | 1880:1880 | Web-Editor und REST-API; kein HTTPS nativ (Reverse Proxy empfohlen) |
| Volume | /volume1/docker/nodered:/data | Pflicht-Mount: Flows, Settings, installierte Nodes |
| User | 1000:1000 | Node-RED läuft intern als UID 1000 – Host-Verzeichnis muss passen |
| TZ | Europe/Berlin | Korrekte Zeitstempel in Logs und Zeitplan-Nodes |
| Credential Secret | Langer, zufälliger String | Stabiler Verschlüsselungs-Key für gespeicherte Passwörter |
Schritt 1: Ordner anlegen und Rechte setzen
Lege in der File Station den Ordner nodered unter /volume1/docker/ an (Kleinbuchstaben, keine Sonderzeichen). Verbinde dich danach per SSH mit dem NAS – die File Station kennt keine UID-basierte Eigentümer-Änderung, daher ist SSH hier zwingend notwendig. Wie du SSH aktivierst und dich verbindest, erklärt die Schritt-für-Schritt-Anleitung zu SSH auf dem Synology NAS.
Setze dann den Eigentümer des Verzeichnisses auf UID/GID 1000:
sudo chown -R 1000:1000 /volume1/docker/nodered
Dieser Schritt ist der häufigste Grund für einen fehlgeschlagenen Container-Start. Node-RED läuft intern seit Version 1.0 fest als UID 1000 und schreibt beim ersten Start Konfigurationsdateien ins /data-Verzeichnis. Stimmt der Eigentümer nicht, bricht der Container sofort mit einem Permission denied-Fehler ab.
Verifizieren: Führe nach dem chown-Befehl folgendes aus:
ls -la /volume1/docker/ | grep nodered
Die Ausgabe muss 1000 1000 als Eigentümer und Gruppe zeigen:
drwxr-xr-x 2 1000 1000 ... nodered
Schritt 2: Compose-Datei erstellen
Öffne im Container Manager „Projekte" → „Erstellen", vergib den Projektnamen node-red und füge folgende compose.yaml ein. Wie du ein Compose-Projekt im Container Manager anlegst, beschreibt die Grundanleitung zum Container Manager – hier die App-spezifischen Werte:
services:
node-red:
image: nodered/node-red:4.1.10
container_name: node-red
restart: unless-stopped
ports:
- "1880:1880"
volumes:
- /volume1/docker/nodered:/data
environment:
- TZ=Europe/Berlin
- NODE_RED_CREDENTIAL_SECRET=DEIN-GEHEIMES-PASSWORT-HIER-AENDERN
user: "1000:1000"
Wichtig: Ersetze DEIN-GEHEIMES-PASSWORT-HIER-AENDERN durch einen langen, zufälligen String (z. B. 32 Zeichen aus einem Passwort-Manager). Dieser Wert verschlüsselt alle in Nodes gespeicherten Credentials – MQTT-Passwörter, API-Keys usw. Änderst du ihn später, sind alle gespeicherten Credentials unlesbar. Setze ihn einmalig vor dem ersten Start und notiere ihn an einem sicheren Ort.
Die user: "1000:1000"-Direktive stellt sicher, dass der Container-Prozess tatsächlich als UID 1000 läuft. Sie ergänzt den chown-Befehl aus Schritt 1 – beide Maßnahmen zusammen verhindern Berechtigungsfehler zuverlässig.
Verifizieren: Starte das Projekt. Im Container Manager wechsle zu „Container" – der Container node-red muss den Status „Wird ausgeführt" (grünes Symbol) zeigen. Prüfe alternativ per SSH:
sudo docker ps --filter name=node-red --format "table {{.Names}}\t{{.Status}}"
Erwartete Ausgabe:
NAMES STATUS
node-red Up X seconds
Schritt 3: Firewall-Regel für Port 1880 anlegen
Ohne eine explizite Firewall-Freigabe blockiert DSM eingehende Verbindungen auf Port 1880. Öffne DSM → Systemsteuerung → Sicherheit → Firewall und lege eine neue Regel an: Protokoll TCP, Quell-IP dein lokales Subnetz (z. B. 192.168.1.0/24), Ziel-Port 1880, Aktion „Erlauben". Wie du Firewall-Regeln für Docker-Container anlegst, erklärt die Anleitung zur DSM-Firewall.
Verifizieren: Rufe im Browser http://<NAS-IP>:1880 auf. Der Node-RED Flow-Editor muss laden – du siehst die graue Arbeitsfläche mit der Node-Palette links. Falls der Browser eine Zeitüberschreitung meldet, ist die Firewall-Regel noch nicht aktiv oder der Container läuft nicht.
Schritt 4: Editor mit adminAuth absichern
Dies ist der Schritt, den die meisten Anleitungen unterschlagen: Ohne adminAuth ist der Flow-Editor für jeden im Netzwerk – oder, bei Portweiterleitung, im Internet – vollständig zugänglich. Jeder kann Flows lesen, ändern und deployen. adminAuth wird nicht per Umgebungsvariable konfiguriert, sondern ausschließlich in der Datei settings.js, die Node-RED beim ersten Start im /data-Verzeichnis anlegt.
Passwort-Hash generieren: Führe diesen Befehl im laufenden Container aus:
sudo docker exec -it node-red node-red admin hash-pw
Das Programm fragt interaktiv nach dem gewünschten Passwort und gibt einen bcrypt-Hash aus, zum Beispiel:
$2b$08$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Kopiere den kompletten Hash (beginnend mit $2b$). Trage niemals das Klartext-Passwort in die settings.js ein – Node-RED akzeptiert den Login dann nicht.
settings.js bearbeiten: Öffne die Datei per SSH:
sudo nano /volume1/docker/nodered/settings.js
Suche den auskommentierten adminAuth-Block (ca. Zeile 60–80) und ersetze ihn durch:
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2b$08$DEINEN-HASH-HIER-EINFUEGEN",
permissions: "*"
}]
},
Speichere die Datei (Strg+O, Enter, Strg+X) und starte den Container neu, damit Node-RED die geänderte settings.js einliest:
sudo docker restart node-red
Verifizieren: Rufe erneut http://<NAS-IP>:1880 auf. Jetzt muss ein Login-Dialog erscheinen. Melde dich mit Benutzername admin und deinem Passwort an – der Flow-Editor öffnet sich. Ohne korrektes Passwort bleibt der Zugang gesperrt.
Schritt 5: Ersten Flow erstellen und deployen
Jetzt verifizieren wir, dass die gesamte Infrastruktur funktioniert – Flows werden korrekt gespeichert, der Deploy-Mechanismus arbeitet, und Debug-Ausgaben erscheinen im Panel.
Ziehe aus der linken Palette einen Inject-Node auf die Arbeitsfläche (unter „common"). Ziehe daneben einen Debug-Node. Verbinde die Ausgangs-Verbindung des Inject-Nodes mit dem Eingang des Debug-Nodes per Klick-und-Ziehen. Klicke auf den roten Deploy-Button oben rechts – er ist der wichtigste Knopf in Node-RED: Undeployte Änderungen laufen nicht, zeigen aber auch keinen Fehler.
Öffne das Debug-Panel (Käfer-Symbol rechts). Klicke auf die Schaltfläche links am Inject-Node. Im Debug-Panel erscheint eine Nachricht mit dem aktuellen Zeitstempel.
Verifizieren: Das Debug-Panel zeigt einen Eintrag ähnlich:
11/6/2026, 14:32:05 node: debug 1
msg.payload : number
1749645125000
Prüfe außerdem, ob die Flows persistiert wurden:
ls -la /volume1/docker/nodered/flows.json
Die Datei muss existieren und einen Zeitstempel aus den letzten Minuten haben.
Schritt 6: MQTT-Node verbinden (optional, aber empfohlen)
Wenn Mosquitto bereits als Container läuft (Anleitung: Eclipse Mosquitto auf dem Synology NAS installieren), kannst du den MQTT-Stack sofort testen. Der mqtt in-Node ist im Standard-Image enthalten – keine zusätzliche Installation nötig.
Ziehe einen MQTT In-Node auf die Arbeitsfläche. Doppelklicke ihn und konfiguriere einen neuen Server: Als Host trägst du nicht localhost ein, sondern den Docker-Container-Namen des Mosquitto-Containers (z. B. mosquitto) – sofern beide Container im selben Docker-Netzwerk laufen. Alternativ verwendest du die interne NAS-IP. Port: 1883. Topic: test/#. Verbinde den MQTT-In-Node mit einem Debug-Node und deploye.
Sende eine Test-Nachricht an den Broker:
sudo docker exec mosquitto mosquitto_pub -t test/hello -m "Hallo Node-RED"
Verifizieren: Im Node-RED Debug-Panel erscheint die Nachricht „Hallo Node-RED". Der MQTT-In-Node zeigt unten den Status „connected". Falls er „disconnected" bleibt, stimmt der Hostname oder der Netzwerk-Pfad zwischen den Containern nicht.
Schritt 7: Community-Nodes aus der Palette installieren
Node-REDs eigentliche Stärke liegt in den über 4.000 Community-Nodes. Den Palette Manager erreichst du über das Hamburger-Menü oben rechts → „Manage palette" → Reiter „Install". Suche zum Beispiel nach node-red-dashboard für ein lokales Web-Dashboard oder node-red-contrib-home-assistant-websocket für die direkte Home-Assistant-Anbindung.
Die Nodes werden direkt in /volume1/docker/nodered/node_modules installiert und bleiben über Container-Neustarts hinweg erhalten, weil das Verzeichnis Teil des persistenten Volumes ist.
Verifizieren: Nach der Installation erscheint der neue Node in der linken Palette (ggf. Browser-Tab neu laden). Prüfe außerdem per SSH:
ls /volume1/docker/nodered/node_modules/ | grep node-red-dashboard
Ausgabe: node-red-dashboard (oder der jeweilige Paket-Name).
Troubleshooting / Typische Fehler
- Container startet nicht, Logs zeigen „Permission denied": Das Verzeichnis
/volume1/docker/noderedgehört nicht UID 1000. Führesudo chown -R 1000:1000 /volume1/docker/noderedper SSH aus und starte den Container neu. - Credentials nach Neustart unlesbar, Nodes zeigen roten Fehler:
NODE_RED_CREDENTIAL_SECRETwar beim ersten Start nicht gesetzt. Node-RED hat einen zufälligen Key verwendet. Lösung: Secret in der Compose-Datei eintragen, Container neu starten – alle Credentials in den betroffenen Nodes neu eingeben. Deshalb: Secret immer vor dem allerersten Start setzen. - Editor lädt ohne Login-Dialog:
adminAuthist insettings.jsnicht aktiv. Prüfe, ob der Block korrekt eingetragen und nicht auskommentiert ist, und ob du den Container nach der Änderung neu gestartet hast. - Login-Dialog erscheint, aber Passwort wird abgelehnt: In
settings.jssteht Klartext statt bcrypt-Hash. Hash neu generieren mitsudo docker exec -it node-red node-red admin hash-pwund korrekt eintragen. - MQTT-Node bleibt „disconnected": Der Hostname im MQTT-Node zeigt auf
localhoststatt auf den Container-Namen des Mosquitto-Brokers. Im selben Docker-Bridge-Netzwerk ist der Container-Name der korrekte Hostname. - Editor nicht erreichbar (Browser-Timeout): DSM-Firewall blockiert Port 1880. Firewall-Regel prüfen: Systemsteuerung → Sicherheit → Firewall.
- Palette-Node-Installation schlägt fehl (EACCES):
user: "1000:1000"fehlt in der Compose-Datei oder das Volume-Verzeichnis hat noch Root-Eigentümer. Beide Punkte korrigieren und Container neu starten. - settings.js-Änderungen haben keine Wirkung: Node-RED liest
settings.jsnur beim Start. Ein „Deploy" im Editor genügt nicht – Container neu starten:sudo docker restart node-red. - latest-Tag führt zu unerwartetem Major-Update:
latestzeigt auf v5.0.0-debian. Bei einem Wechsel von v4 auf v5 können Custom-Nodes Breaking Changes erleben. Immer expliziten Tag wie4.1.10verwenden.
Häufige Fragen
Was ist der Unterschied zwischen Node-RED und n8n?
Node-RED ist auf IoT und Echtzeit-Datenströme optimiert: MQTT, Sensoren, Smart-Home-Protokolle, niedrige Latenz. n8n hingegen ist auf Business-Prozesse und API-Integrationen ausgelegt – CRM, Ticketsysteme, Webhooks, komplexe Konditionslogik. Die beiden Tools ergänzen sich: Node-RED als IoT-Gateway und Echtzeit-Verarbeitung, n8n für nachgelagerte Business-Automatisierung. Du könntest z. B. einen MQTT-Sensor-Alarm per Node-RED erfassen und dann per HTTP-Request an n8n weiterleiten, das daraufhin ein Ticket anlegt.
Wie sichere ich meine Flows?
Das gesamte Verzeichnis /volume1/docker/nodered enthält alles Relevante: flows.json, settings.js und flows_cred.json. Sichere dieses Verzeichnis per Hyper Backup oder rsync auf ein externes Medium. Zusätzlich kannst du Flows direkt im Editor exportieren: Hamburger-Menü → „Export" → „Download". Achtung: Der Export enthält keine Credentials aus flows_cred.json.
Wie aktiviere ich HTTPS für den Node-RED Editor?
Node-RED bietet im Standard-Docker-Setup kein natives HTTPS. TLS realisierst du über den Synology Reverse Proxy: DSM → Systemsteuerung → Anwendungsportal → Reverse Proxy → neue Regel: Protokoll HTTPS extern, Ziel http://localhost:1880. Alternativ kannst du den Nginx Proxy Manager auf der Synology vorschalten.
Welche Version soll ich verwenden – v4.1.10 oder v5.0.0?
Auf x86_64-Synology-NAS laufen beide problemlos. 4.1.10 ist der bewährte letzte Patch der stabilen v4-Reihe und für neue Installationen gut geeignet. 5.0.0 ist das aktuelle Major-Release (erschienen Juni 2024), hat aber 32-Bit-ARM-Support entfernt – für ältere Synology-ARM-Modelle relevant. Grundregel: Immer einen expliziten Tag verwenden; nie latest, da das unkontrollierte Major-Updates auslöst.
Kann ich Node-RED mit Home Assistant, Mosquitto und n8n gleichzeitig betreiben?
Ja, das ist der empfohlene Stack. Mosquitto liefert den MQTT-Transport, Node-RED verknüpft Sensordaten, Home-Assistant-Ereignisse und externe APIs zu Flows, n8n verarbeitet komplexere Business-Logik dahinter. Alle Container können im selben Docker-Bridge-Netzwerk laufen und sprechen sich über ihre Container-Namen an.
Fazit
Node-RED auf dem Synology NAS ist in rund 25 Minuten einsatzbereit – wenn die zwei kritischen Punkte von Anfang an richtig gesetzt sind: Volume-Eigentümer auf UID 1000 und NODE_RED_CREDENTIAL_SECRET vor dem ersten Start. Ohne diese Grundlagen arbeitet der Container entweder gar nicht oder verliert Credentials bei jedem Neustart. Die adminAuth-Konfiguration in settings.js ist kein optionales Extra, sondern Pflicht für jeden Editor, der im Heimnetz erreichbar ist. Mit diesen Maßnahmen hast du eine stabile, sichere Flow-Automatisierungs-Plattform, die nahtlos mit Mosquitto und Home Assistant zusammenarbeitet.
Weiterführende Anleitungen und Quellen
- Eclipse Mosquitto auf dem Synology NAS installieren: MQTT-Broker für das Smart Home – der natürliche Companion zu Node-RED im IoT-Cluster
- Home Assistant mit Docker: die lokale Smart-Home-Zentrale – Node-RED und Home Assistant ergänzen sich ideal
- n8n mit Docker: KI-Workflows und Automatisierung self-hosted – Abgrenzung: Business-Automatisierung vs. IoT-Datenströme
- Container Manager: Docker-Compose-Projekt anlegen, starten, aktualisieren – Grundlagen zum Compose-Workflow auf DSM
- DSM-Firewall: Ports für Docker-Container freigeben – Firewall-Regeln korrekt anlegen
Offizielle Quellen: Node-RED Docker-Dokumentation | Node-RED Sicherheits-Dokumentation (adminAuth) | Docker Hub: nodered/node-red