Web-1/NodeRed/NodeRed-configuratie

Uit Inf2019
< Web-1‎ | NodeRed
Naar navigatie springen Naar zoeken springen
Web1
Netwerken

Zie ook Regels en richtlijnen
Zie ook Artikelen bewerken

Configureren van NodeRed

Onderstaande aanwijzingen zijn in eerste instantie bedoeld voor Cloud9. Voor andere Unix/Linux-systemen kun je die waarschijnlijk ook direct gebruiken. (Voor Windows?)

NodeRed-configuratie (settings.js)

De configuratie vind je in het bestand settings.js. Op de meeste systemen vind je dit in de user-directory $HOME/.node-red.

Voordat je NodeRed kunt configureren, moet je dit eerst een keer opstarten ($ node-red); anders is er nog geen user-directory aangemaakt.

Voor de zekerheid maken we een kopie van de originele versie:

  1. cp $HOME/.node-red/settings.js $HOME/.node-red/settings.js.orig

Cloud9

Omdat deze user-directory in Cloud9 niet toegankelijk is voor de cloud9-editor, maken we voor dat systeem een (symbolische) link van deze map naar de workspace.

  1. ln -s $HOME/.node-red ~/workspace/.node-red

Je kunt het configuratie-bestand dan in de workspace vinden als .node-red/settings.js. Je opent het in de editor door een dubbel-klik op deze naam in de linker navigatiekolom.

Gebruik van statische web-bestanden

We gebruiken voor de dynamische webpagina's NodeRed-flows. Maar een website bevat vaak ook statische bestanden, zoals css- en javascript-bestanden. Het is eenvoudiger om die direct af te laten handelen, buiten de flows om. In de configuratie (settings.js) kun je aangeven waar de server deze statische bestanden kan vinden.

In dit geval moet je het URL-pad voor de flow-editor aanpassen. We kiezen daarvoor .../admin.

  1. Breng de volgende wijzigingen aan in settings.js:
  2. - pas het URL-pad voor de editor aan:
    1. httpAdminRoot: '/admin',
  3. - geef de map (directory) waar NodeRed de statische bestanden kan vinden, bijvoorbeeld:
    1. httpStatic: '/home/ubuntu/workspace/node-red-static/',
    2. NB: pas dit aan voor je eigen situatie; dit is een keuze voor Cloud9.
  4. Herstart NodeRed
    1. je vindt nu de flow-editor via http(s)://...node-red-path.../admin

De veranderde gedeeltes in settings.js zien er nu als volgt uit:

    // By default, the Node-RED UI is available at http://localhost:1880/
    // The following property can be used to specifiy a different root path.
    // If set to false, this is disabled.
    httpAdminRoot: '/admin',
...
    // When httpAdminRoot is used to move the UI to a different root path, the
    // following property can be used to identify a directory of static content
    // that should be served at http://localhost:1880/.
    httpStatic: '/home/ubuntu/workspace/node-red-static/',

Beveiliging van de NodeRed editor

Via het NodeRed interface kun je je eigen server inrichten, via het grafische interface in de browser. Dit interface is beschikbaar in het publieke internet. Als je dit interface niet beveiligt, kunnen anderen jouw server ook inrichten. Je kunt je NodeRed-interface eenvoudig beveiligen. Zie ook: https://nodered.org/docs/security.html#usernamepassword-based-authentication

  1. Installeer node-red-admin, met het volgende commando:
    1. npm install -g node-red-admin
  2. Maak de hashcode voor het wachtwoord waarmee je je NodeRed-editor wilt beveiligen:
    1. node-red-admin hash-pw
  3. Pas settings.js aan:
    1. zoek het gedeelte dat begint met adminAuth: {; dit staat nog als commentaar
    2. verwijder voor dit gedeelte (t/m bijbehorende }) de commentaar-//
    3. verander admin in je eigen naam
    4. verander de hash-code voor het wachtwoord door de hashcode van je eigen wachtwoord.
    5. bewaar het bestand.
  4. Start node-red op en ga naar de Preview/browser om te controleren of het werkt;
    1. als het goed is kom je nu in een inlog-pagina;
    2. voer je naam en wachtwoord (niet de hashcode!) in.

Voorbeeld van een beveiligingsdeel:

   // Securing Node-RED
    // -----------------
    // To password protect the Node-RED editor and admin API, the following
    // property can be used. See http://nodered.org/docs/security.html for details.
    adminAuth: {
        type: "credentials",
        users: [{
            username: "hans",
            password: "$2a$08$5acKiQ0JAh/PYu6SARDQGOQusZ0myS10PkbWg9jOLFw1qSes/uz1W",
            permissions: "*"
        }]
    },

Installeren van nieuwe soorten nodes

Er is een actieve community waarin allerlei soorten nodes voor NodeRed ontwikkeld worden. Enkele voorbeelden:

  • voor het aansluiten van databases, zoals MongoDB;
  • voor het aansturen van Philips Hue lampen;
  • voor allerlei webdiensten, zoals Slack en Trello;
  • enz.

Je kunt op meerdere manieren nieuwe soorten nodes toevoegen aan NodeRed.

De eenvoudigste manier is vanuit het user-interface van NodeRed zelf:

  • ga naar het hamburger-menu->Manage palette (dit menu vind je rechts boven);
  • selecteer de tab "Install"
  • zoek daarin naar de node(s) die je wilt installeren
    • bijvoorbeeld: node-red-bluemix-nodes
  • klik op "install"

Een alternatief is het gebruik van npm (de module-installer voor nodejs):

  • cd $HOME/.node-red
  • npm install <npm-package-name>

Zie: https://nodered.org/docs/getting-started/adding-nodes