# IoT Lab · primer contacte amb Node-RED

Instal·lació de Node-RED

Node-RED és l'eina de programació visual amb què connectarem sensors, plaques i serveis durant tot l'IoT Lab. Abans de res cal tenir-lo funcionant: tres camins (Linux i Raspberry Pi, Windows i Docker) i una sola prova final.

Instal·lar
npm install -g node-red
Arrencar
node-red
El resultat al terminal
4 Oct 21:56:16 - [info] Server now running at http://127.0.0.1:1880/

Què és Node-RED i què necessita

Node-RED és un editor visual que funciona al navegador: hi connectes "nodes" amb cables i formes fluxos. Per sota, és un programa escrit per a Node.js que s'ha d'estar executant a algun ordinador.

Dues peces: el servidor i l'editor

  • El servidor és el procés node-red que instal·lem i arrenquem. Executa els fluxos i escolta pel port 1880.
  • L'editor és la pàgina web que el servidor ofereix a http://localhost:1880. El navegador només és la pantalla: si tanques la pestanya, els fluxos continuen funcionant.

Per això Node-RED es pot instal·lar en una Raspberry Pi sense pantalla i editar-lo des d'un altre ordinador.

Quina versió de Node.js cal

Node-REDNode.js mínim
5.x (la darrera)22
4.x18

Dades de nodered.org (juny 2026), que recomana la versió 24.x de Node.js. En escriure aquesta pàgina (octubre 2026) la darrera versió de Node-RED a npm és la 5.0.7. L'script d'instal·lació de Linux exigeix almenys Node.js 22.9.0. No fa servir versions imparells (23, 25…): no es proven.

Compte amb les guies antigues

Molts tutorials d'internet encara parlen de Node 14 o 18, o d'un script que es deia update-nodejs-and-nodered-deb. Aquest nom ja no existeix (el servidor respon "Not Found"): ara l'script de Debian es diu install-update-nodered-deb. Si una ordre d'una guia falla de seguida, comprova primer la data de la guia.

Quin camí triar

Tots els camins acaben igual: un servidor Node-RED que escolta pel port 1880. El que canvia és com s'instal·la, com s'arrenca i on queda desada la carpeta de dades.

OnCamíQuè obtensOrdre clau
Debian 13, Ubuntu i derivatsscript instal·ladorNode.js + Node-RED + servei systemdbash install-nodered.sh
Raspberry Pi OSel mateix scriptcom Debian, més nodes opcionals per a la Pibash install-nodered.sh
Windows 10 / 11Node.js (MSI) + npml'ordre node-red al terminalnpm install -g node-red
Qualsevol sistema amb Dockerimatge oficialun contenidor aïllat, amb les dades en un volumdocker run … nodered/node-red

Altres Linux (Fedora, CentOS…) tenen un script RPM al mateix repositori, i qualsevol sistema amb Node.js pot fer sudo npm install -g node-red. Les pràctiques següents funcionen igual amb qualsevol camí.

Linux (Debian 13) i Raspberry Pi

Utilitzem l'script oficial del repositori node-red/linux-installers. Funciona igual a Debian, Ubuntu i Raspberry Pi OS.

1. Eines de compilació

sudo apt install build-essential git curl

Sense elles, Node-RED s'instal·la, però més endavant fallarà la instal·lació de nodes addicionals que porten parts binàries per compilar. curl és per descarregar l'script.

2. L'script instal·lador

Forma recomanada: descarregar, llegir, executar
curl -sL https://github.com/node-red/linux-installers/releases/latest/download/install-update-nodered-deb -o install-nodered.sh
less install-nodered.sh
bash install-nodered.sh
Forma curta (tot en una línia)
bash <(curl -sL https://github.com/node-red/linux-installers/releases/latest/download/install-update-nodered-deb)

Per què llegir-lo abans? L'script s'executa amb privilegis d'administrador. El repositori mateix recomana inspeccionar-lo. És un bon hàbit amb qualsevol curl | bash.

Què fa:

  • Si no troba Node.js, instal·la la versió 24 LTS. Si en troba una de ≥ 22.9, la deixa. Si és més antiga, l'elimina i en posa una de nova.
  • Elimina el nucli antic de Node-RED (conserva les teves dades) i instal·la l'última versió amb npm.
  • Afegeix les ordres node-red-start, node-red-stop, node-red-log… i el servei systemd.
  • Pregunta si vols instal·lar els nodes específics de la Raspberry Pi. A un Debian normal, respon n.

Opcions útils de l'script

OpcióEfecte
--helpmostra totes les opcions
--confirm-installno demana la confirmació inicial
--skip-pi / --confirm-pino instal·la / instal·la els nodes de la Pi sense preguntar
--node22 · --node24 · --node26força aquesta versió de Node.js
--nodered-version="5.0.0"instal·la una versió concreta de Node-RED
--nodered-user=NOMusuari que executarà el servei (útil si l'executes amb sudo)

3. Arrencar com a servei

sudo systemctl enable nodered    # arrenca sol quan s'engega l'ordinador
sudo systemctl start nodered     # arrenca ara
node-red-log                     # mostra el log del servei

Com que és un servei, continua funcionant encara que tanquis el terminal. També pots fer servir node-red-start, que l'arrenca i en mostra el log; Ctrl-C només et treu del log, no l'atura.

Només a la Raspberry Pi

  • Pots editar des d'un altre ordinador: al navegador, http://<nom-o-IP-de-la-Pi>:1880. La IP la veus a la Pi amb hostname -I.
  • Amb poca memòria, arrenca Node-RED amb node-red-pi --max-old-space-size=256 perquè Node.js alliberi memòria abans.
  • Node.js 24 no té versions de 32 bits: a una Pi Zero o 1 (armv6) l'script es limita a Node.js 22.

Opcions de la línia d'ordres

OpcióEfecte
-p, --port PORTport TCP (per defecte 1880)
-u, --userDir DIRcarpeta de dades (per defecte ~/.node-red)
-s, --settings FILEfitxer de configuració (per defecte settings.js a la carpeta de dades)
--safeobre l'editor sense executar els fluxos

Windows

A Windows no hi ha script: instal·lem Node.js i després Node-RED amb npm. Fes servir PowerShell, i no un terminal d'administrador.

1. Instal·lar Node.js

Descarrega la versió LTS des de nodejs.org, executa l'MSI i accepta les opcions per defecte. Quan acabi, tanca i torna a obrir PowerShell perquè agafi les variables d'entorn noves.

node --version; npm --version

Si veus dos números de versió, tot va bé. (Alternativa amb Chocolatey: paquet nodejs-lts.)

2. Instal·lar i executar Node-RED

npm install -g node-red
node-red

A Windows no es posa sudo. L'ordre node-red escriu el log al terminal: cal mantenir-lo obert, i Ctrl-C atura el servidor. La primera vegada es crea la carpeta de dades .node-red dins la teva carpeta d'usuari. Si Windows mostra un avís del tallafocs per a Node.js, decideix conscientment si vols permetre l'accés des de la xarxa (vegeu l'apartat de seguretat).

Arrencar automàticament (opcional)

Per a un ús més permanent, el Programador de tasques de Windows pot executar C:\Users\<usuari>\AppData\Roaming\npm\node-red.cmd "en iniciar el sistema". Amb PM2 també es pot mantenir sempre en marxa i gestionar-ne el log. A classe no ho necessitem.

Docker

Camí vàlid a qualsevol sistema que tingui Docker. Node-RED corre dins un contenidor i les teves dades queden en un volum a part.

L'ordre bàsica

docker run -d -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
PartQuè fa
-den segon pla (amb -it veuries el log al terminal)
-p 1880:1880connecta el port 1880 de l'ordinador amb el del contenidor. Sense això no hi pots entrar
-v node_red_data:/datadesa les dades (/data del contenidor) al volum node_red_data: sobreviuen si esborres el contenidor
--name mynoderednom amigable per gestionar-lo
nodered/node-redla imatge oficial
docker logs -f mynodered     # veure el log
docker stop mynodered        # aturar
docker start mynodered       # tornar-lo a engegar
docker pull nodered/node-red # baixar la imatge nova (per actualitzar, cal recrear el contenidor)

Amb Docker Compose

services:
  node-red:
    image: nodered/node-red:latest
    container_name: mynodered
    restart: unless-stopped
    environment:
      - TZ=Europe/Madrid
    ports:
      - "1880:1880"
    volumes:
      - node-red-data:/data

volumes:
  node-red-data:

Es posa en marxa amb docker compose up -d. Parteix de l'exemple de la documentació; hi he afegit restart i la zona horària.

Pensant en el que ve

  • Placa per USB: el contenidor no veu els ports sèrie de l'ordinador si no els hi passes: --device=/dev/ttyACM0, o --group-add dialout per al permís.
  • Broker MQTT: si l'executes en un altre contenidor, posa'ls a la mateixa xarxa Docker i s'hi podran trobar pel nom del contenidor.

Prova de funcionament

Una sola prova per a tots els camins: l'editor s'obre i un flux mínim funciona.

1. L'editor respon

Obre el navegador a http://localhost:1880/. Hauries de veure l'editor, amb un espai de treball buit (Flux 1) i la paleta de nodes a l'esquerra.

Si no s'obre, mira el log: normalment hi ha l'explicació (vegeu "Troba l'error" a la pestanya d'exercicis).

2. Saber llegir el log

4 Oct 21:56:16 - [info] Node-RED version: v5.0.7
4 Oct 21:56:16 - [info] Node.js  version: v22.22.2
4 Oct 21:56:16 - [info] Linux 6.18.44-fc-v64 x64 LE
4 Oct 21:56:16 - [info] Settings file  : /root/.node-red/settings.js
4 Oct 21:56:16 - [info] User directory : /root/.node-red
4 Oct 21:56:16 - [info] Flows file     : /root/.node-red/flows.json
4 Oct 21:56:16 - [info] Server now running at http://127.0.0.1:1880/
4 Oct 21:56:16 - [info] Starting flows
LíniaPer a què serveix
Node-RED / Node.js versionles versions: la primera cosa que cal indicar si demanes ajuda
Settings filela configuració (settings.js): port, seguretat…
User directoryla carpeta de dades: nodes instal·lats, fluxos, credencials
Flows fileon es desen els fluxos (flows.json)
Server now runningl'adreça de l'editor

(Exemple de l'execució real a Linux; als teus sistemes els camins seran uns altres.)

Seguretat: l'editor és obert per defecte

El log diu 127.0.0.1, però no et refiïs d'aquesta línia: ho hem comprovat i, amb la configuració per defecte, Node-RED també respon per l'adreça de xarxa de la màquina. I no demana cap contrasenya. Qualsevol equip de la teva xarxa pot obrir l'editor i, amb el node exec, executar ordres a l'ordinador.

Per limitar-lo a la teva màquina, a settings.js descomenta uiHost: "127.0.0.1" i reinicia. Per a ús real, configura l'autenticació (adminAuth) seguint la guia Securing Node-RED. Sobretot, no l'exposis mai directament a internet.

3. Un flux mínim: Inject → Debug

Al menú (≡) tria Importa (Ctrl+I), enganxa això i prem Importa:

[{"id":"a1b2c3d4e5f60001","type":"inject","z":"f6f2187d.f17ca8","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":80,"wires":[["a1b2c3d4e5f60002"]]},{"id":"a1b2c3d4e5f60002","type":"debug","z":"f6f2187d.f17ca8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":330,"y":80,"wires":[]}]
  1. Prem Desplega (el botó vermell de dalt a la dreta).
  2. Obre la pestanya Debug (la icona de l'insecte, a la barra lateral).
  3. Fes clic al quadradet de l'esquerra del node inject.

Al panell de depuració apareix msg.payload amb un nombre molt gran: l'instant actual en mil·lisegons (la marca de temps). Aquest flux (provat en un Node-RED 5.0.7 real) és tot el que cal per saber que el servidor, l'editor i els fluxos funcionen.

Resum d'ordres

Linux / Raspberry Pi (servei)Windows (terminal)Docker
Arrencarnode-red-startnode-reddocker start mynodered
Aturarnode-red-stopCtrl-Cdocker stop mynodered
Reiniciarnode-red-restartCtrl-C i node-reddocker restart mynodered
Veure el lognode-red-logés el mateix terminaldocker logs -f mynodered
Actualitzartornar a executar l'scriptnpm install -g node-reddocker pull i recrear el contenidor
Les dades són a~/.node-red.node-red (carpeta d'usuari)volum node_red_data (/data)


      

Pràctica 1

Fes-los amb el camí que correspon a la teva màquina. Escriu primer el que esperes veure i comprova-ho després.

Instal·lació i prova

1. Instal·la i comprova les versions

Instal·la Node-RED amb el camí que correspon al teu sistema. Anota les versions de Node.js, npm i Node-RED.

Pista 1

Amb Linux o Windows: node --version, npm --version i node-red --version. Amb Docker: la versió surt a les primeres línies de docker logs mynodered.

Pista 2

Comprova que la versió de Node.js compleix el mínim de la taula de versions de la teoria.

2. Llegeix el log

Arrenca Node-RED i respon, mirant només el log: quina és la carpeta de dades? Quin és el fitxer on es desaran els fluxos? A quin port escolta?

Pista 1

Busca les línies User directory, Flows file i Server now running.

Pista 2

Obre aquesta carpeta amb l'explorador de fitxers o amb ls i observa què hi ha: settings.js, flows.json…

3. El primer flux

Importa el flux Inject → Debug de la teoria, desplega'l i comprova que, cada cop que fas clic al node inject, apareix un valor al panell de depuració.

Pista 1

Si no veus res, comprova que has premut Desplega després d'importar.

Pista 2

Fes dos clics seguits al node inject i compara els dos valors: quant han augmentat?

4. Dues instàncies

Amb Node-RED ja en marxa al port 1880, arrenca'n una segona sense canviar-hi res i observa què passa. Després, arrenca'n una a un altre port amb una carpeta de dades pròpia.

Pista 1

Prova node-red -p 1881 --userDir ~/nr2. Cada instància necessita el seu port i la seva carpeta de dades.

Pista 2

La carpeta ~/nr2 es crea sola. Obre http://localhost:1881: l'editor és buit, perquè no comparteix fluxos amb l'altra.

5. Qui hi pot entrar?

Esbrina la IP de la teva màquina i comprova si des d'un altre dispositiu de la mateixa xarxa es pot obrir el teu editor. Després, limita'l a la teva màquina i torna-ho a provar.

Necessites: seguretat
Pista 1

La IP: hostname -I a Linux, ipconfig a Windows. Prova http://<IP>:1880 des del mòbil connectat a la mateixa Wi-Fi.

Pista 2

Edita settings.js (és a la carpeta de dades), descomenta uiHost: "127.0.0.1" i reinicia Node-RED. Per tornar a obrir l'editor des de l'altre dispositiu, ara hauria de donar error de connexió.

6. (Docker) Les dades sobreviuen?

Desplega un flux, esborra el contenidor (docker rm -f mynodered) i recrea'l amb la mateixa ordre. Què passa amb el flux? Repeteix-ho sense l'opció -v.

Necessites: Docker
Pista 1

Amb -v node_red_data:/data el flux hi continua. Sense volum, desapareix amb el contenidor.

Pista 2

Pots veure els volums existents amb docker volume ls.

Entrena't: troba l'error

Llegeix el que veu l'alumne i digues què falla. Després mostra la solució i compara. Cada cop surt un cas diferent.