Nach der Installation ist der Zugang zum Node-RED Editor nicht beschränkt. Dadurch hat jeder, im eigenen Netzwerk, Zugang zum Editor und kann dort Einstellungen manipulieren. Solltet ihr evtl auch noch daran denken euren Editor von extern zugänglich zumachen, durch eine Portweiterleitung, dann stellt das ebenfalls ein Hindernis dar. Es muss also eine Authentifizierung mittels Passwort her.
Es ist aber kein Problem eine Authentifizierung per Username und Passwort zu aktivieren. Dieses ist auch bei Node-RED beschrieben, leider fehlte ein kleiner Hinweis.
Ein Passwort Hash erzeugen
Das zu verwendende Passwort muss als Hash in die settings.js von Node-RED hinterlegt werden. Dieses erledigt ihr mit den Admin CLI Tools, welche aber vorher installiert werden müssen.
sudo npm install -g node-red-admin
Anschließend könnt ihr den Hash für euer Passwort erzeugen. Ihr werdet nach dem Passwort gefragt und erhaltet als Ausgabe den Hash.
sudo node-red-admin hash-pw
Konfig Datei anpassen
Nun könnt ihr die Konfiguration in der settings.js anpassen. In meinem Fall liegt die Datei unter /home/pi/.node-red/settings.js. Mittel ps -ef|grep node-red, könnt ihr sehen, unter welchem User Node-RED läuft, bei mir als User pi.
[code]
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "your hash",
permissions: "*"
}]
},
[/code]
Damit habt ihr einem User admin alle Berechtigungen erteilt. Nach einem Neustrat von Node-RED mittels sudo service nodered restart, begrüßt euch euer Node-RED mit einer Login Maske. Es ist auch möglich weitere User einzurichten die nur eine Leseberechtigung besitzen.
Somit habt ihr den Zugang abgesichert und könnt euer Node-RED von extern erreichbar machen. Eure Familienmitglieder können nun ebenfalls keine ungewollten Änderungen mehr durchführen.
Hi Björn,
es muss „sudo service node-red restart“ heißen
Gruß
Reinhard
Hallo Reinhard,
wir haben beide recht. Auf meinem Raspberry ist es nodered, auf anderen Systemen node-red. Auf meinem Debian nutze ich PM2, dort ist es pm2 restart node-red.
Ich bekomme beim installieren von Node-Red-Admin immer Fehler ausgespuckt. Weiß auch nicht woran das liegt.
npm WARN deprecated bcrypt@0.8.7: bcrypt = v2.0.0 for improved support for newer bcrypt ha shes
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
/usr/bin/node-red-admin -> /usr/lib/node_modules/node-red-admin/node-red-admin.js
> bcrypt@0.8.7 install /usr/lib/node_modules/node-red-admin/node_modules/bcrypt
> node-gyp rebuild
gyp WARN EACCES user „root“ does not have permission to access the dev dir „/root/.node-gyp/8.11.3“
gyp WARN EACCES attempting to reinstall using temporary dev dir „/tmp/.node-gyp“
gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir ‚/usr/lib/node_modules/node-red-admin/node_modules/bcrypt/build‘
gyp ERR! System Linux 4.14.52-v7+
gyp ERR! command „/usr/bin/node“ „/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js“ „rebuild“
gyp ERR! cwd /usr/lib/node_modules/node-red-admin/node_modules/bcrypt
gyp ERR! node -v v8.11.3
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@0.8.7 (node_modules/node-red-admin/node_modules/bcrypt):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@0.8.7 install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
+ node-red-admin@0.1.3
updated 1 package in 14.026s
Sorry, aber da hört es auch bei mir auf. Hast du denn mal, trotz Fehlermeldungen, versucht den Hash zu erzeugen?
Gibt es auch für das Dashboard die Möglichkeit es mit mehreren Usern abzusichern ?
Hallo,
soweit ich es weiß, geht nur ein einzelner Benutzer:
HTTP Node security
Securing Node-Red with SSL and Username Authentication
Weißt du warum nur ein Benutzer möglich ist bzw. ob eine session basierte Authentifizierung für das Dashboard möglich ist?
Leider nein, hier muss Node-RED noch etwas nachliefern. Ich verwende aber aktuell lieber Grafana um Daten anzuzeigen.
Kann dem Dashboard ein anderer Port zugewiesen werden?
Ich möchte für das Dashboard und den Node-Red Editor jeweils einen anderen Port verwenden.
Soweit ich weiß geht das leider nicht.
Es fehlt noch was ganz entscheidendes:
Für den passwortgeschützten Zugriff auf das Dashboard ist ein weiterer Schritt nötig. Das Dashboard, wie auch viele andere Erweiterungen die HTTP-Endpunkte bereitstellen, sichert die Option httpNodeAuth ab. Diese erwartet nur Benutzername und Passwort-Hash als Parameter:
httpNodeAuth: {user:“user“,pass:“erzeugte Passwort-hash einfügen“},