Node-RED mit dem INSTAR Cloud Webhook

Node-RED Installation mit Docker

Beginnen wir mit der Installation von Node-RED mit Docker. Auf diese Weise - nachdem Sie Docker installiert haben - wird die folgende Anleitung unabhängig davon funktionieren, ob Sie Node-RED auf einem Online Linux Server, einem Raspberry Pi, Ihrem NAS oder Ihrer lokalen Windows Workstation einrichten.

Nachdem Sie Docker installiert haben, führen Sie die beiden folgenden Befehle aus, um das neueste Node-RED-Docker-Image zu beziehen (oder wählen Sie eine bestimmte Version, die Sie benötigen, aus dem Docker Hub) und bereiten Sie das virtuelle Netzwerk vor, in dem wir unsere Container enbinden wollen (ich nenne es smart):

docker pull nodered/node-red:latest
docker network create smart

Wenn der Node-RED-Container "zerstört" wird, geht alles verloren, was Sie konfiguriert haben. Um dies zu umgehen, werde wir einen Ordner von unserem Host-System in den Container mounten, der alle Daten enthält, die von Node-RED erzeugt werden, z.B. die Konfigurationsdateien. Auf einem LINUX-System müssen Sie bei der Erstellung dieser Ordner auf die Berechtigungen achten:

mkdir -p /opt/nodered/data
chmod -R 775 /opt/nodered
chown 1000:1000 -R /opt/nodered

Sie müssen diesen Ordner nicht im Verzeichnis /opt erstellen, wählen Sie einfach ein Verzeichnis, in dem der Docker-Daemon die erforderlichen Rechte zum Lesen und Schreiben von Daten hat. Wenn Sie das Verzeichnis ändern, stellen Sie sicher, dass Sie auch den Volume Mount im folgenden docker run Befehl ändern.

Jetzt können wir den Node-RED-Container mit dem folgenden Befehl starten:

docker run -d --rm --privileged --network=smart -p 1880:1880 -v /opt/nodered/data:/data --name nodered nodered/node-red:latest

Hinweis: Hier öffne ich den Port 1880, um direkt auf die Node-RED UI zugreifen zu können. Wenn Sie planen, einen Web-Proxy wie NGINX für HTTP/2-Unterstützung nutzen wollen, können Sie das -p 1880:1880 entfernen. In diesem Fall fließt der gesamte Datenverkehr durch Ihren Web-Proxy und Sie brauchen keine Ports beim Node-RED-Container freigeben.

Wenn Sie den Port 1880 geöffnet haben, können Sie nun auf die Node-RED-Benutzeroberfläche über die IP-Adresse des Servers oder den zugewiesenen Domainnamen zugreifen:

http://meine.server.adresse:1880/

Node-RED Installation with Docker

Node-RED Absichern

Wir haben nun eine Instanz von Node-RED eingerichtet, die vollständig den Weiten des Internets ausgesetzt ist. Es ist daher an der Zeit, sich um die Sicherheit zu kümmern. Wenn Sie einen Blick in das Verzeichnis werfen, das wir in den Node-RED-Container gemountet haben, werden Sie sehen, dass es jetzt die Hauptkonfigurationsdatei von Node-RED settings.js enthält:

ls /opt/nodered/data

lib  node_modules  package.json  package-lock.json  settings.js

Hier müssen wir zwei Benutzer einrichten - das Admin API Login und das HTTP Node Login. Letztere wird zum Schutz unserer Webhooks verwendet.

Logins Erstellen

Node-RED bietet ein Passwort-Tool, mit dem wir die benötigten Logins erstellen können. Da wir Node-RED in Docker ausführen, müssen wir diese Befehle über das Docker CLI ausführen. Um z.B. das Login "username=admin" und "password=instar" zu generieren, führen Sie den folgenden Befehl aus:

docker exec -ti nodered node-red admin hash-pw

Password: instar
$2b$08$n6OUy4T5V5sF/dhpqvNxm.VS8Psht8E8Z3aDRS5mIECcGihPRvQhy

Hinweis: Dieser Befehl wird innerhalb unseres Node-RED-Containers ausgeführt, weil wir ihm den Namen nodered zugewiesen haben, als wir den RUN-Befehl mit dem Flag --name nodered ausgeführt haben.

Hinzufügen von Admin- und Webhook-Sicherheit

Wir können nun die Konfigurationsdatei bearbeiten und unsere generierten Logins hinzufügen. Im folgenden Beispiel verwende ich das Login admin:instar für beide Benutzer. Sie sollten hier Ihre eigenen Logins erstellen:

nano /opt/nodered/data/settings.js
module.exports = {
    flowFile: 'flows.json',
    flowFilePretty: true,
    adminAuth: {
        type: "credentials",
        users: [{
            username: "admin",
            password: "$2b$08$n6OUy4T5V5sF/dhpqvNxm.VS8Psht8E8Z3aDRS5mIECcGihPRvQhy",
            permissions: "*"
        }]
    },
    httpNodeAuth: {user:"admin",pass:"$2b$08$n6OUy4T5V5sF/dhpqvNxm.VS8Psht8E8Z3aDRS5mIECcGihPRvQhy"}

    ...

}

Starten Sie nun den Container neu und Sie sollten nun eine Benutzeranmeldung erhalten. Versuchen Sie, sich mit Ihrem persönlichen Login anzumelden:

docker stop nodered && docker start nodered

Node-RED Installation with Docker

Weitere Schritte