Cómo instalar Node-Red en Ubuntu o Debian
ómo instalar Node-Red en Ubuntu
Node-RED es una herramienta de desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte de Internet of Things.
En este artículo se explicará brevemente la instalación de Node-Red en un Ubuntu 20.04 LTS mediante NPM con Node.js. Nuestra recomendación es instalar la última versión de Node.js y puedes comprobarla desde su repositorio de Github.
La última versión actualmente es la Node.js v17.x, por lo tanto, añadimos el repositorio de dicha versión:
# curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash -
Luego actualizamos los repositorios, actualizamos paquetes e instalamos Node.js:
# apt update && apt upgrade -y && apt install -y nodejs
Una vez ejecutado el comando comprobamos que versiones han sido instadas de Node y NPM:
# node -v && npm -v
Instalación de Node-Red:
# npm install -g --unsafe-perm node-red
Instalación de Node-Red-Admin:
# npm install -g --unsafe-perm node-red-admin
Posteriormente genera una hash para la contraseña del usuario:
# node-red admin hash-pw
Te solicitará la introducción de la contraseña que deseas utilizar. Recuerda guardar hash para añadirlo al fichero de configuración posteriormente, pero puedes probar el funcionamiento de Node-Red con:
# node-red --settings
Para probarlo utiliza un navegador e introduce la URL http://dirección_IP_servidor:1880. Recuerda tener abierto el puerto por defecto de Node-Red (1880 TCP) en el perfil de Firewall asignado en el servidor.
En el navegador debería aparecer el login de Node-Red:
Luego detén el proceso con "Ctrl+C" para editar el fichero de configuración para habilitar el HTTPS, descomentar las líneas de autentificación y añadir el hash de la contraseña.
Para la activación de HTTPS es necesario un certificado con la llave respectiva, podrías configurar un proxy inverso con Apache o NGINX para utilizar Certbot para la configuración y renovación automática.
Aunque simplemente puedes elegir por utilizar un certificado autosignado, para ello puedes ejecutar lo siguiente:
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/selfsigned.key -out /etc/ssl/certs/selfsigned.crt
Una vez introducido los datos y generado los ficheros, edita el fichero de configuración:
# vi /root/.node-red/settings.js
En el apartado de https deberás descomentarlo y añadir las rutas:
https: {
key: require("fs").readFileSync('/etc/ssl/private/selfsigned.key'),
cert: require("fs").readFileSync('/etc/ssl/certs/selfsigned.crt')
},
Luego haz lo mismo con el apartado adminAuth, debería ser similar al siguiente contenido (recuerda modificar el hash por el hash generado):
/** 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: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "*"
}]
},
También podrías añadir otro usuario por ejemplo de solo lectura (opcional):
/** 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: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "*"
},
{
username: "invitado",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "read"
}]
},
Luego para probar las credenciales, puedes iniciarlo de nuevo ("Ctrl+C" para detenerlo):
# node-red -v
Una vez que hayas verificado el funcionamiento de las credenciales, puedes utilizar servicio para que arranque automáticamente Node-Red durante el inicio del sistema operativo con systemd. Para ello crea el fichero del servicio:
# vi /etc/systemd/system/Node-Red.service
En dicho fichero del servicio debería tener el siguiente contenido:
# This script work on any system using systemd as the init process.
# It works on Ubuntu Focal.
# If you have Debian/Rapbian Wheezy and want to use this script with systemd
# follow the information here : https://wiki.ubuntu.com/systemd
# To consult the log : journalctl -u Node-RED
[Unit]
Description=Node-RED is a tool for wiring together hardware devices, APIs and
online services in new and interesting ways.
After=syslog.target network.target
Documentation=http://nodered.org/
[Service]
Environment="NODE_OPTIONS="
Environment="NODE_RED_OPTIONS=-v"
#Full Path to Node.js
ExecStart=/usr/bin/node-red $NODE_OPTIONS $NODE_RED_OPTIONS
WorkingDirectory=/root/.node-red/
# User/Group that launches node-RED (it's advised to create a new user for Node-RED)
# You can do : sudo useradd node-red
# then change the User=root by User=node-red
User=root
Group=root
Nice=10
SyslogIdentifier=Node-RED
StandardOutput=syslog
# Make Node-RED restart if it fails
Restart=on-failure
# Node-RED need a SIGINT to be notified to stop
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
Por último recarga los demonios, activa servicio, inícialo y comprueba el estado:
# systemctl daemon-reload && systemctl enable Node-Red.service && systemctl start Node-Red.service && systemctl status Node-Red.service
Esperamos haberte ayudado con este tutorial. ¿Lo has probado? ¡Déjanos tus comentarios! 🙂
Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites!
No hay comentarios:
Publicar un comentario