Configurar Node-RED
Para configurar Node-RED seguir: https://nodered.org/docs/user-guide/runtime/configuration
El fichero de configuración se encuentra normalmente en $HOME/.node-red/settings.js
El fichero de configuración por defecto es settings.js y está situado en /usr/lib/node-modules/node-red/ y puede encontrarse en https://github.com/node-red/node-red/blob/master/packages/node_modules/node-red/settings.js
Settings file: https://nodered.org/docs/user-guide/runtime/settings-file
Si no está seguro de qué archivo de configuración está usando Node-RED, debe verificar la salida del registro cuando se inicie Node-RED. Registrará la ruta completa al archivo:
- 22 Jun 12:34:56 – [info] Settings file : /Users/nol/.node-red/settings.js
El fichero por defecto viene con muchas opciones comentadas, para habilitarla, simplemente quitar el comentario “//”.
Al añadir una nueva opción asegurarse de añadir una coma al principio y final para separar del resto de opciones.
El fichero de flujos se encuentra por defecto en $HOME/.node-red/flows_<hostname>.json
Por defecto el directorio donde se guardan los nodos es $HOME/.node-red/nodes_modules
Existe una API de Node-RED que permite administrar remotamente en runtime: https://nodered.org/docs/api/admin/
Logging Node-RED
Ver https://nodered.org/docs/user-guide/runtime/logging
Node-RED utiliza un logger que escribe su salida en la consola. También admite el uso de módulos de logging personalizados para permitir que la salida se envíe a otra parte.
Esto se puede configurar mediante el fichero de configuración: https://nodered.org/docs/user-guide/runtime/settings-file
Securizar Node-RED (Autorización y Autenticación)
Por defecto, el editor Node-RED no está protegido: cualquier persona que pueda acceder a su dirección IP puede acceder al editor e implementar cambios.
Para securizar Node-RED a nivel de atenticación y autorización seguir: https://nodered.org/docs/user-guide/runtime/securing-node-red para añadir usuario y password, así como otras configuraciones de seguridad
El editor y la API de administración admiten dos tipos de autenticación:
- autenticación basada en credenciales de nombre de usuario / contraseña
- autenticación contra cualquier proveedor de OAuth / OpenID como Twitter o GitHub
Para habilitar la autenticación basada en usuario y password, descomentar la propiedad adminAuth del fichero de configuración:
adminAuth: { type: "credentials", users: [ { username: "admin", password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.", permissions: "*" }, { username: "george", password: "$2b$08$wuAqPiKJlVN27eF5qJp.RuQYuy6ZYONW7a/UWYxDTtwKFCdB8F19y", permissions: "read" } ] }
La propiedad de los usuarios es una matriz de objetos de usuario. Esto le permite definir múltiples usuarios, cada uno de los cuales puede tener diferentes permisos.
El nivel de permisos se puede configurar a nivel de los métodos de la API de administración: https://nodered.org/docs/api/admin/methods/
Las contraseñas se codifican de forma segura utilizando el algoritmo bcrypt
Para calcular la contraseña se usa: node-red-admin hash-pw
La herramienta le pedirá la contraseña que desea usar y luego imprimirá el hash que se puede copiar en el archivo de configuración.
Hay servicios web que permiten calcular el hash: https://passwordhashing.com/BCrypt
Command line administration: https://nodered.org/docs/node-red-admin
Más información:
- https://nodered.org/docs/user-guide/runtime/securing-node-red
- https://notenoughtech.com/home-automation/nodered-home-automation/nodered-security/
Autenticación HTTP Node-Red
Para proteger las rutas HTTP expuestas por los nodos y el dashboard se puede usar una autenticación básica.
La propiedad httpNodeAuth en su archivo settings.js se puede usar para definir un nombre de usuario y contraseña únicos que podrán acceder a las rutas.
- httpNodeAuth: {user:”user”,pass:”$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.”},
La propiedad pass, usa el mismo formato que adminAuth utilizando el algoritmo bcrypt
Manual: https://nodered.org/docs/user-guide/runtime/securing-node-red#http-node-security
Securizar node red dashboard: https://github.com/node-red/node-red-dashboard/blob/master/README.md#securing-the-dashboard
Más información:
- https://notenoughtech.com/home-automation/nodered-home-automation/nodered-security/
- https://www.hardill.me.uk/wordpress/2015/05/11/securing-node-red/
SSL en Node-Red
Para usar https con Node-RED seguir estos tutoriales:
- http://www.steves-internet-guide.com/securing-node-red-ssl/
- https://notenoughtech.com/featured/how-to-add-ssl-certification-to-nodered/
Lo configuro el https en $HOME/.node-red/settings.js
Líneas a descomentar/configurar:
var fs=require("fs")
https: {
key: fs.readFileSync('/user/myuser/privatekey.pem'),
cert: fs.readFileSync('/user/myuser/certificate.pem')
},
requireHttps: true,
Aplicar cambios de la nueva configuración con: node-red -s settings.js
Y restart node:
- node-red-stop
- node-red-start
Pero si tienes systemctl: systemctl start nodered.service
Como exponer un Node-Red de forma segura en Internet: https://github.com/node-red/cookbook.nodered.org/wiki/How-to-safely-expose-Node-RED-to-the-Internet
Pingback: Saber más Curso Raspberry Pi y Node-RED | Aprendiendo Arduino
Pingback: Saber Más Node-RED Developer | Aprendiendo Arduino
Pingback: Saber Más Fundamentos IoT CEFIRE | Aprendiendo Arduino