Come installare Node-Red su Ubuntu 22.04

Cosa è Node-Red ? 

Node-RED è uno strumento nato con l’idea di gestire il mondo dell’ IoT tramite il paradigma dei flussi di dati, la sua base è JavaScript con il famosissimo Node.js il quale sfrutta tutte le sue potenzialità e la sua estesa documentazione e community. Nei flussi viaggiano pacchetti di dati, preferibilmente tramite il protocollo MQTT, ed in formato JSON, che saltano da un nodo (i singoli oggetti del menù a sinistra) eseguendo azioni, calcoli, analisi ed eventi tramite javascript verso siti web, dashboard, sensori ed ogni apparecchio o servizio che riusciamo ad interfacciare, il tutto con grande semplificazione e facilità.

Come procediamo per installare Node-Red su Ubuntu Server?

La prima cosa da fare (a mio parere sempre) è un aggiornamento delle repository e un upgrade totale.

sudo apt update
sudo apt upgrade

di seguito installiamo nodejs che è fondamentale per poter avere il nostro node-red

sudo apt install nodejs build-essential

l'installaizione di nodejs potrebbe riportare qualche errore dovuto ad altri applicativi installati, volendo potete forzare l'installazinone anche se io consiglio sempre di analizzarele problematiche per non rischiare di compromettere il sistema. 

terminata l'installazione del nostro nodejs verifichiamo che tutto funzioni correttamente 

nodejs --version
npm --version

se tutto va come deve avremo una risposta simile a questa 

nodejs v18.19.0
npm v9.2.0

a questo punto entriamo nel vivo.. 

sudo npm install -g --unsafe-perm node-red

analiziamo quello che abbiamo chiesto al nostro terminale

  • npm install  - chiediamo al gestore di pacchetti di nodejs di effettuare un installazione
  • -g (--global) - chiediamo di efettuare un intellazione a livello globale 
  • --unsafe-perm - chiediamo ad NPM di non impostare gli attributi di esecuzione -user e -group all'utente root 
  • node-red - è il nome del pacchetto che voglioamo installate

se non siamo su un sistema vergine potremmo anche qui riscontrare delle nomalie dovute ai permessi ed all'azione eseguita lato root (amministratore) , possiamo provare l'installazione come utente nomrale quindi rimuovendo il SUDO dalla stringa di terminale.

Finito questo passaggio abbiamo terminato la nostra installazione. ci basterà dare l'avvio al nostro node-red e il gioco è fatto.

node-red

avviato il nostro applicativo ci basterà aprire il browser su un altro device ed inserire l'indirizzo ip del nostro server con la porta 1880 per visualizzare l'interfaccia grafica del nostro NODO. (esempio nel mio caso)

http://192.168.1.25:1880

Attenzione!! può capitare che il firewall interno eviti l'accesso al server da parte di ip esterni al locale, facciamo un tentativo disabilitando ufw 

sudo ufw disable

se dopo questo comando riusciamo a vedere la nostra interfaccia grafica dovremo impostare le regole del firewall e ri abilitarlo, per una questione di sicurezza non conviene mai lasciare disabilitato il firewall del nostro server, un metodo veloce può essere aprire la porta 1880 a prescindere 

sudo ufw deny 1880

systemctl start node-red

Mettere al sicuro il nostro Node-Red

Molti si chiedono , Come faccio a mettere la password per accedere alla configurazione di Node-red ? Beh ti sembreà strano ma non è previsto di default nel pacchetto quindi dobbiamo installare un altr piccolo pacchetto che si chiama node-red-admin 

sudo npm install -g --unsafe-perm node-red-admin

una volta installato questo pacchetto aggiuntivo dobbiamo inerire le credenziali e quale modo più sicuro di crittografare le stesse ? 

node-red-admin hash-pw

dopo questo comnado ci verra chiesto di inserire la nostra password, lui ci risponderà con un hash codificato che dovremo copiare ed incollare nel nostro file di configurazione setting.js 

​nano ~/.node-red/settings.js

cerchiamo il blocco "adminAuth" rimuoviamo il commento "//" ed inseriamo la stringa di hash appena generata

adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2a$0HASHAPPENAGENERATOWV5KS",
permissions: "*"
}]
},

salviamo il nostro setting.js e riavviamo nuovamente il nostro node-red

node-red

ora recandoci all'indirizzo del nostro server http://indirizzoipdelserver:1880 e ci ritroveremo questa pagina 

il nomr utente sarà admin e la password quella scelta per generare il nostro famoso hash...

Come avviamo Node-red al Boot ? come servizio

Node-red si avvia come processo quidi se chiudiamo il terminale o disconnettiamo la nostra sessione di SSH questo si terminerà.. Come risolviamo ? 

  1.  Creiamo un servizio in esecuzione automatica 
  2. Ci affidiamo a PM2 

nano Nel 2 caso affidiamo la gestione dell'esecuzione a PM2 che è un process manager che ci aiuta ad avviare le nostre applicazioni Node.js all’avvio del Sistema Operativo e riavviarle con facilità sfruttando anche una sua interfaccia di monitoraggio. Ma non è questo il caso (se vuoi approfondirlo non eistare a contattarmi nell'apposita sezione)

Useremo la prima ipotesi, quella di creare un servizio in autorun. Per fare ciò dobbiaomo seguire pochi passaggi.

sudo nano /etc/systemd/system/node-red.service

inserieamo la seguente configurazione 

[Unit]
Description=Node-RED
After=syslog.target network.target

[Service]
ExecStart=/usr/local/bin/node-red
Restart=on-failure
KillSignal=SIGINT

# log output in syslog come 'node-red'
SyslogIdentifier=node-red
StandardOutput=syslog

# non usiamo l'utnte root per avviare il processo
WorkingDirectory=/home/fabiodirauso/

User=fabiodirauso
Group=fabiodirauso

[Install]
WantedBy=multi-user.target

Attenzione!! ovviamente devi sostituire "fabiodirauso" nella configurazione con il tuo nome utente altrimenti andra in errore. 

Ora non ci resta che attivare il servizio appena creato ed avviarlo. 

sudo systemctl enable node-red
sudo systemctl start node-red

nel caso volessimo fermare il nostro processo basterebbe dare il comando 

sudo systemctl stop node-red

anche in caso di un riavvio veloce basta dare il comando 

sudo systemctl restart node-red

se invece vuoi sapere lo stato del processo ti basta scrivere 

sudo systemctl status node-red

​​

In conclusione

Abbiamo visto come installare il nostro Node-Red, abbiamo visto come aggiungere all'interfaccia un sistema di identificazione con nomeutente e password per amministrare il processo, abbiamo visto come avviare al boot il nostro Node-Red , ci sarebbe ancora tanto da poter approfondire ma non è questo il momnto. Nel caso hai altre curiosità non esitare a contattarmi nell'apposita sezione del sito.