Skip to content
BotServBotServ
Node-REDInstalaciónDockerFlow-EditorIoT

Instalar Node-RED

Instala y configura Node-RED. Docker, npm, primeros Flows, Dashboard y solución de problemas.

S

schutzgeist

6 min read
Instalar Node-RED

Instalar Node-RED

Qué cubre este artículo sobre la instalación de Node-RED

  • Cómo instalar Node-RED con Docker o npm.
  • Cómo realizar la configuración inicial y protegerla.
  • Cómo crear tu primer flow.
  • Qué extensiones (nodes) son importantes.
  • Solución de problemas frecuentes.

Introducción: Instalar Node-RED explicado de forma clara

Node-RED es un editor visual de flows: conectas nodes (bloques de construcción) mediante arrastrar y soltar para crear flows. Aunque se desarrolló originalmente para IoT, Node-RED también es excelente para automatización con IA, integración con Home Assistant y procesamiento de datos.

Este artículo va dirigido a usuarios que desean instalar Node-RED. Encontrarás conceptos fundamentales en Node-RED para automatización con IA y Fundamentos de Docker.

¿Por qué necesito Node-RED?

Imagina que quieres procesar datos de sensores, reaccionar a mensajes MQTT o conectar APIs. En lugar de escribir scripts, simplemente arrastras nodes a un área de trabajo y los conectas entre sí. Node-RED es ideal para automatización controlada por eventos, especialmente en IoT y domótica.

Node-RED en pocas palabras

Node-RED es una herramienta basada en Node.js. La forma más sencilla de instalarlo es con Docker. Accedes al editor en el navegador en el puerto 1880 y construyes flows mediante arrastrar y soltar.

La idea central es: programación visual para flujos de datos.

¿Para quién es este artículo?

  • Self-hosters que desean instalar Node-RED.
  • Usuarios de IoT que automatizan sensores y dispositivos.
  • Automatizadores que construyen flows controlados por eventos.
  • Usuarios de Home Assistant que necesitan automatización compleja.

Términos importantes

  • Node-RED - Editor visual de flows. Cuándo es útil: la herramienta en sí.
  • Flow - Nodes conectados. Cuándo es útil: un proceso automatizado.
  • Node - Bloque individual. Cuándo es útil: para disparadores, procesamiento, salida.
  • Palette - Biblioteca de nodes. Cuándo es útil: para extensiones.
  • Docker - Contenedor. Cuándo es útil: para la instalación.
  • MQTT - Protocolo IoT. Cuándo es útil: para datos de sensores.
  • Home Assistant - Domótica. Cuándo es útil: para automatización del hogar.

Instalación con Docker

Instalación básica

docker run -d \
  --name nodered \
  -p 1880:1880 \
  -v nodered_data:/data \
  --restart unless-stopped \
  nodered/node-red:latest

Abre el navegador: http://localhost:1880

Con Docker Compose

version: "3.8"

services:
  nodered:
    image: nodered/node-red:latest
    container_name: nodered
    restart: unless-stopped
    ports:
      - "1880:1880"
    environment:
      - TZ=Europe/Berlin
    volumes:
      - nodered_data:/data
    networks:
      - automation

volumes:
  nodered_data:

networks:
  automation:
    driver: bridge
docker compose up -d

Instalación con npm

# Instalar Node.js (si no lo tienes)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Instalar Node-RED
sudo npm install -g --unsafe-perm node-red

# Iniciar
node-red

Como servicio systemd

# /etc/systemd/system/nodered.service
[Unit]
Description=Node-RED
After=network.target

[Service]
Type=simple
User=nodered
ExecStart=/usr/bin/node-red
Restart=on-failure
Environment=NODE_RED_OPTIONS=-v

[Install]
WantedBy=multi-user.target
sudo systemctl enable nodered
sudo systemctl start nodered

Configuración inicial

settings.js

// /data/settings.js (Docker) o ~/.node-red/settings.js
module.exports = {
    // Autenticación de administrador
    adminAuth: {
        type: "credentials",
        users: [{
            username: "admin",
            password: "$2b$08$...",  // Hash bcrypt
            permissions: "*"
        }]
    },

    // Puerto y host
    uiPort: process.env.PORT || 1880,
    uiHost: "0.0.0.0",

    // HTTPS (para producción)
    // https: {
    //     key: require("fs").readFileSync("/data/privkey.pem"),
    //     cert: require("fs").readFileSync("/data/fullchain.pem")
    // },

    // Context Storage
    contextStorage: {
        default: { module: "localfilesystem" }
    },

    // Logging
    logging: {
        console: {
            level: "info",
            metrics: false,
            audit: false
        }
    }
};

Generar hash de contraseña

# En el contenedor de Node-RED
docker exec -it nodered npx node-red admin hash-pw

# O localmente
npx node-red admin hash-pw

Tu primer flow

Hola Mundo

  1. Arrastra un Inject Node al área de trabajo.
  2. Arrastra un Debug Node junto a él.
  3. Conéctalos (haz clic en la salida y arrastra hacia la entrada).
  4. Haz clic en “Deploy”.
  5. Haz clic en el botón Inject. El panel Debug mostrará la salida.

Endpoint HTTP

[HTTP In] → [Function] → [HTTP Response]

HTTP In: GET /api/hello
Function: msg.payload = { message: "Hola desde Node-RED" }; return msg;
HTTP Response: 200

Prueba con: curl http://localhost:1880/api/hello

Instalar nodes importantes

Palette Manager

  1. Menú > “Manage palette”
  2. Pestaña “Install”
  3. Busca e instala

Nodes recomendados

NodePropósito
node-red-dashboardDashboards de UI
node-red-contrib-home-assistant-websocketHome Assistant
node-red-contrib-mqtt-brokerServidor MQTT
node-red-node-emailCorreo electrónico
node-red-contrib-influxdbInfluxDB
node-red-contrib-postgresPostgreSQL
node-red-contrib-ollamaIntegración con Ollama
# Instalar vía npm
cd /data
npm install node-red-dashboard node-red-contrib-home-assistant-websocket

Ollama en Node-RED

// Function Node: Llamar a Ollama
const response = await fetch("http://ollama:11434/api/chat", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
        model: "llama3.1",
        messages: [
            { role: "user", content: msg.payload }
        ],
        stream: false
    })
});
const data = await response.json();
msg.payload = data.message.content;
return msg;

O utiliza el node node-red-contrib-ollama para una integración más sencilla. Consulta Integración de IA en Node-RED.

Conectar con Home Assistant

[events: state] → [switch] → [call service]

events: state:
  Entity: sensor.temperature
  If state: > 25

call service:
  Domain: climate
  Service: set_temperature
  Data: {"temperature": 21}

Consulta Node-RED con Home Assistant.

Notas de seguridad

  • Activar Admin-Auth: De lo contrario, cualquiera puede modificar los flows.
  • HTTPS: Para acceso externo, usa TLS. Consulta Certificados TLS.
  • No expongas: No publiques Node-RED en internet sin autenticación.
  • Firewall: Limita el puerto 1880 solo a red interna o detrás de un reverse proxy.
  • Backup: Realiza copias de seguridad del directorio /data (contiene flows y configuración). Consulta Backup.

Solución de problemas

Node-RED no inicia

# Revisar logs
docker logs nodered

# Causas frecuentes:
# - Puerto 1880 ocupado
# - settings.js corrupto
# - Versión de Node.js muy antigua

Faltan nodes después de reiniciar

# Instalar nodes de forma persistente
# En settings.js:
# externalModules: { autoInstall: true }

# O en Docker:
docker exec -it nodered npm install node-red-dashboard

Flows desaparecen después de actualizar

# Los flows están en el volumen /data/flows.json
# Sin volumen montado: los flows se pierden
# Siempre montar volumen: -v nodered_data:/data

Tramapas comunes

  • Sin autenticación: por defecto Node-RED está abierto. Configura siempre adminAuth.
  • Sin volumen: los flows desaparecen al reiniciar el contenedor.
  • Versión incorrecta de Node: Node-RED requiere Node.js 18+.
  • Red en Docker: localhost en un flow hace referencia al contenedor, no al host.
  • Demasiadas nodes: cada extensión amplía la superficie de ataque. Instala solo las necesarias.

Enlaces relacionados

Puntos clave:

  • Node-RED es un editor visual de flujos, ideal para IoT y automatización basada en eventos.
  • Instalación con Docker (recomendado) o npm.
  • Para producción, adminAuth y HTTPS son obligatorios.
  • Amplía funcionalidades con el Palette Manager o npm.
  • Monta volúmenes, o tus flows se perderán.

Preguntas frecuentes

¿Qué es Node-RED?

Node-RED es un editor visual de flujos. Conectas nodes mediante Drag-and-Drop para crear flujos. Originalmente para IoT, hoy también se usa para automatización con IA y procesamiento de datos.

¿Cómo instalo Node-RED?

La forma más simple es con Docker: docker run -d -p 1880:1880 -v nodered_data:/data nodered/node-red:latest. Alternativamente, con npm: npm install -g node-red.

¿En qué puerto se ejecuta Node-RED?

Por defecto, el puerto 1880. Abre http://localhost:1880 en el navegador para acceder al editor de flujos.

¿Node-RED o n8n?

Node-RED para IoT, MQTT y flujos basados en eventos. n8n para integraciones con APIs, SaaS y flujos de trabajo empresariales más complejos. Ambos se pueden conectar con Ollama.

¿Cómo aseguro Node-RED?

Activa adminAuth en settings.js, usa HTTPS, no lo expongas a Internet, configura un firewall. Sin autenticación, cualquiera puede modificar los flujos.

¿Qué extensiones necesito?

node-red-dashboard para interfaces de usuario, node-red-contrib-home-assistant-websocket para Smart Home, node-red-contrib-ollama para IA, node-red-node-email para correo electrónico.

¿Cómo conecto Node-RED con Home Assistant?

Instala node-red-contrib-home-assistant-websocket. Luego puedes reaccionar a cambios de entidades e invocar servicios. Consulta Node-RED y Home Assistant.

¿Cómo hago copia de seguridad de mis flows?

El directorio /data contiene flows.json y settings.js. Respalda el volumen de Docker o exporta los flujos como JSON desde el editor.

¿Puedo usar Ollama en Node-RED?

Sí, a través de un Function Node con fetch() o mediante node-red-contrib-ollama. Ambos deben estar en la misma red de Docker.

Fuentes y referencias

Volver al blog
Share:

Entradas relacionadas