Node-RED Context nach Neustart behalten â so gehtâs
Im vorherigen Beitrag haben wir uns angeschaut, wie der Node-RED Context funktioniert und wie du Werte ohne Datenbank zwischenspeichern kannst.
Dabei gab es aber einen wichtigen Hinweis:
In der Standardkonfiguration werden Context-Werte im Arbeitsspeicher gespeichert. Wird Node-RED neu gestartet, der Docker-Container beendet oder der Raspberry Pi neu gebootet, können diese Werte verloren gehen.
In diesem Beitrag zeige ich dir, wie du den Node-RED Context persistent speicherst. Dadurch bleiben Werte auch nach einem Neustart erhalten.
https://youtu.be/Ux8aLVRMakY
Was bedeutet Persistent Context?
Persistent bedeutet dauerhaft gespeichert.
Beim normalen Context werden Werte im Arbeitsspeicher gehalten. Das ist schnell und fĂŒr viele kleine Automationen völlig ausreichend.
Beim Persistent Context werden die Werte zusÀtzlich im Dateisystem gespeichert.
Das bedeutet:
- Node-RED lĂ€uft â Wert ist verfĂŒgbar - Node-RED wird beendet â Wert bleibt gespeichert - Node-RED startet neu â Wert kann wieder ausgelesen werden
Das ist besonders praktisch fĂŒr:
- ZÀhlerstÀnde - letzte SchaltzustÀnde - gespeicherte Grenzwerte - einfache Konfigurationen - Betriebsmodi - Merker innerhalb eines Flows
Wichtig ist aber: Auch Persistent Context ist keine vollwertige Datenbank. FĂŒr groĂe MesswertverlĂ€ufe, Diagramme oder historische Auswertungen ist SQLite, InfluxDB oder MySQL weiterhin die bessere Wahl.
Standardverhalten: Context liegt nur im Arbeitsspeicher
StandardmĂ€Ăig speichert Node-RED Context-Werte im Arbeitsspeicher.
Ein einfacher ZÀhler funktioniert also nur, solange Node-RED lÀuft:
let zaehler = context.get("zaehler") || 0; zaehler++; context.set("zaehler", zaehler); msg.payload = { zaehler: zaehler }; return msg;
Nach einem Neustart beginnt dieser ZĂ€hler wieder bei 0, wenn kein persistenter Context eingerichtet ist.
Das ist kein Fehler im Flow, sondern das normale Standardverhalten.
Persistent Context in settings.js aktivieren
Um Context-Werte dauerhaft zu speichern, muss die Datei settings.js angepasst werden.
Dort wird der Bereich contextStorage ergÀnzt oder aktiviert.
Die einfache Variante sieht so aus:
contextStorage: { default: { module: "localfilesystem" } }
Damit verwendet Node-RED den eingebauten localfilesystem Context Store.
Die Werte werden dann nicht nur im Arbeitsspeicher gehalten, sondern zusÀtzlich lokal im Dateisystem gespeichert.
Wo liegt die settings.js?
Die Datei settings.js liegt normalerweise im Benutzerverzeichnis von Node-RED.
Typische Speicherorte sind:
/home/pi/.node-red/settings.js /home//.node-red/settings.js
Die Datei settings.js befindet sich im Node-RED-Benutzerverzeichnis und enthĂ€lt wichtige Einstellungen, unter anderem fĂŒr den Persistent Context.
Wichtig: Node-RED verwendet immer die settings.js aus dem Benutzerverzeichnis des Benutzers, unter dem Node-RED gestartet wurde.
LĂ€uft Node-RED als normaler Benutzer, liegt die Datei meistens unter: /home//.node-red/settings.js
LĂ€uft Node-RED dagegen als root, wird diese Datei verwendet: /root/.node-red/settings.js
Wenn Ănderungen an der settings.js scheinbar keine Wirkung haben, wurde hĂ€ufig die falsche Datei bearbeitet.
Bei einer Docker-Installation liegt die Datei meistens im eingebundenen /data-Verzeichnis des Containers.
Zum Beispiel:
/home/stefandraeger/.node-red/settings.js
Wichtig ist: Nach der Ănderung muss Node-RED neu gestartet werden.
sudo systemctl restart nodered.service
Nach Ănderungen an der settings.js muss Node-RED neu gestartet werden, damit die neue Persistent-Context-Konfiguration aktiv wird.
Beispiel fĂŒr Docker
Wenn Node-RED in Docker lÀuft, ist es besonders wichtig, dass das Datenverzeichnis dauerhaft eingebunden ist.
Ein typischer Ausschnitt aus einer docker-compose.yml sieht so aus:
services: node-red: image: nodered/node-red:latest container_name: node-red ports: - "1880:1880" volumes: - ./node-red-data:/data
Der Ordner ./node-red-data liegt auf dem Host-System und wird in den Container unter /data eingebunden.
Dadurch bleiben die Node-RED-Daten auch erhalten, wenn der Container neu erstellt wird.
Wenn du Persistent Context verwendest, sollten auch die gespeicherten Context-Daten in diesem Bereich liegen.
Erweiterte Konfiguration
Der localfilesystem Store kann zusÀtzlich konfiguriert werden.
Ein Beispiel:
contextStorage: { default: { module: "localfilesystem", config: { cache: true, flushInterval: 30 } } }
Mit cache: true werden Werte zusÀtzlich im Arbeitsspeicher gehalten.
Mit flushInterval: 30 legt Node-RED fest, in welchem Mindestabstand die Werte in das Dateisystem geschrieben werden.
Das bedeutet: Die Werte werden nicht zwangslĂ€ufig bei jeder einzelnen Ănderung sofort auf die Festplatte geschrieben.
FĂŒr normale Automationen ist der Standardwert in der Regel vollkommen ausreichend.
Mehrere Context Stores verwenden
Du kannst auch mehrere Context Stores definieren.
Zum Beispiel:
contextStorage: { default: "memoryOnly", memoryOnly: { module: "memory" }, file: { module: "localfilesystem" } }
Damit gibt es zwei Speicherbereiche:
- memoryOnly fĂŒr flĂŒchtige Werte - file fĂŒr dauerhaft gespeicherte Werte
Einen Wert im normalen Speicher setzt du so:
flow.set("letzteTemperatur", 22.6);
Einen Wert gezielt im Dateispeicher setzt du so:
flow.set("letzteTemperatur", 22.6, "file");
Auslesen kannst du ihn entsprechend so:
let temperatur = flow.get("letzteTemperatur", "file");
Das ist praktisch, wenn du bewusst unterscheiden möchtest, welche Werte dauerhaft gespeichert werden und welche nur wÀhrend der Laufzeit benötigt werden.
Test: Bleibt der Wert nach einem Neustart erhalten?
Nach der Einrichtung kannst du den persistenten Context einfach testen.
DafĂŒr eignet sich ein kleiner ZĂ€hler.
Function Node:
let zaehler = flow.get("zaehler") || 0; zaehler++; flow.set("zaehler", zaehler); msg.payload = { zaehler: zaehler }; return msg;
Starte den Flow mehrmals ĂŒber eine Inject Node.
Danach sollte der ZÀhler hochzÀhlen.
Jetzt startest du Node-RED neu.
Nach dem Neustart löst du den Flow erneut aus.
Wenn der ZĂ€hler nicht wieder bei 1 beginnt, sondern mit dem letzten Wert weitermacht, funktioniert der Persistent Context.
Wo werden die Context-Daten gespeichert?
Wenn der localfilesystem Store aktiviert ist, speichert Node-RED die Context-Daten als Dateien im Dateisystem.
Die Datei flow.json liegt im Context-Ordner von Node-RED und enthÀlt gespeicherte Flow-Context-Werte des localfilesystem Stores.
StandardmĂ€Ăig findest du diese Dateien im Node-RED-Benutzerverzeichnis unter:
~/.node-red/context/
Bei einer normalen Installation kann der Pfad zum Beispiel so aussehen:
/home/pi/.node-red/context/
oder:
/home//.node-red/context/
In diesem Ordner legt Node-RED weitere Unterordner an. FĂŒr Flow-Context-Daten wird hĂ€ufig ein Ordner mit einer internen ID verwendet. Darin befindet sich dann unter anderem eine Datei:
/home//.node-red/context//flow.json
In dieser Datei werden die gespeicherten Werte des Flow Context als JSON abgelegt.
Ein gespeicherter ZĂ€hler kann dort zum Beispiel so aussehen:
{ "zaehler": 5, "letzterZeitstempel": "06.06.2026, 10:15:30" }
Wichtig: Die ⣠entspricht nicht unbedingt dem Namen deines Flow-Tabs, sondern einer internen ID, die Node-RED fĂŒr den Flow verwendet.
Auch Global-Context-Daten werden in diesem Context-Verzeichnis gespeichert. Je nach Context-Art und Konfiguration legt Node-RED dafĂŒr eigene Dateien und Ordner an.
Wichtig bei Raspberry Pi und SD-Karte
Beim Raspberry Pi sollte man beachten, dass hÀufiges Schreiben auf die SD-Karte die Lebensdauer beeinflussen kann.
Deshalb sollte man nicht jede Sekunde groĂe Datenmengen in den Persistent Context schreiben.
FĂŒr einzelne ZustĂ€nde, ZĂ€hler oder Konfigurationen ist das unproblematisch.
FĂŒr viele Messwerte in kurzen Intervallen ist eine Datenbank oder eine speziellere Speicherlösung besser geeignet.
Wann sollte ich Persistent Context verwenden?
Persistent Context ist sinnvoll fĂŒr:
- einfache ZÀhler - letzte ZustÀnde - letzte bekannte Werte - Konfigurationen - Grenzwerte - Betriebsmodi - kleine Merker
Nicht ideal ist er fĂŒr:
- groĂe Messwert-Historien - hochfrequente Sensorwerte - Langzeitdiagramme - viele tausend DatensĂ€tze - komplexe Auswertungen
Als Faustregel gilt:
Persistent Context ist fĂŒr wenige wichtige ZustĂ€nde. Eine Datenbank ist fĂŒr viele historische Werte.
Fazit
Mit dem Persistent Context kannst du Werte in Node-RED dauerhaft speichern, ohne direkt eine Datenbank zu verwenden.
DafĂŒr wird in der Datei settings.js der localfilesystem Store aktiviert.
Das ist besonders praktisch, wenn einfache ZustÀnde, ZÀhler oder Konfigurationen auch nach einem Neustart erhalten bleiben sollen.
FĂŒr groĂe Datenmengen oder MesswertverlĂ€ufe bleibt eine Datenbank aber weiterhin die bessere Lösung.











