← Todas las plantillas · Automatización
Despliega Node-RED en un clic
Flujos low-code que conectan APIs, dispositivos y servicios en línea
Una alternativa autoalojada a Zapier e IFTTT.
¿Qué es Node-RED?
Node-RED es una herramienta de programación low-code y de código abierto para aplicaciones orientadas a eventos, que a menudo se usa en lugar de Zapier o IFTTT. En su editor, en el navegador, arrastras nodos a un lienzo y los conectas en flujos: un mensaje entra desde una petición HTTP, un topic MQTT, un webhook o un temporizador, pasa por nodos que lo modifican, lo filtran o lo enrutan, y sale hacia una base de datos, una API o un chat. Un nodo Function ejecuta tu propio JavaScript donde ningún nodo sirve, y la biblioteca de la comunidad tiene más de 6000 nodos que se instalan desde el editor.
Node-RED nació en IBM en 2013 y hoy es un proyecto de la OpenJS Foundation. Se usa para domótica, a menudo junto a Home Assistant, para datos de IoT e industriales y como pegamento entre servicios web, y quienes lo autoalojan lo hacen para ejecutar sus automatizaciones las 24 horas sin pagar por cada ejecución. Esta plantilla solo deja entrar en el editor con el nombre de usuario y la contraseña indicados. El inconveniente: las rutas de los nodos HTTP In son públicas, así que un endpoint que deba ser privado necesita httpNodeAuth en settings.js o una comprobación propia.
Hosting de Node-RED en Pethost
- Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
- Nuevo proyecto se abre en Node-RED. Rellenas lo que pide y haces clic en Crear proyecto: Nombre de usuario, Contraseña de administrador.
- En un par de minutos Node-RED está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
- Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.
Preguntas sobre Node-RED
¿Node-RED es gratis?
Sí. Node-RED es de código abierto bajo la licencia Apache 2.0 y no cuesta nada, sea cual sea el número de flujos o de mensajes. Es un proyecto de la OpenJS Foundation.
¿Cómo instalo más nodos en Node-RED?
Abre el menú principal, elige “Administrar paleta” y busca en su pestaña Instalar, que lista los nodos de la biblioteca de la comunidad. Los nodos instalados se guardan en el volumen data, así que se conservan entre reinicios y nuevos despliegues.
¿Node-RED funciona con Home Assistant?
Sí. Los nodos de node-red-contrib-home-assistant-websocket se comunican con Home Assistant mediante sus APIs WebSocket y REST, para reaccionar a sus eventos y llamar a sus servicios. Tu Home Assistant tiene que ser accesible desde la máquina en la que se ejecuta Node-RED.
¿Cómo creo un dashboard en Node-RED?
Instala @flowfuse/node-red-dashboard con “Administrar paleta”: sus nodos dibujan botones, gráficos y formularios en una página que sirve Node-RED. El antiguo node-red-dashboard está obsoleto desde junio de 2024.
¿Cómo protejo los endpoints HTTP de mis flujos?
El editor pide iniciar sesión, pero las rutas de los nodos HTTP In responden a cualquiera. Define httpNodeAuth con un usuario y un hash bcrypt en /data/settings.js para poner una misma contraseña a todas, o comprueba un token en el propio flujo.
¿Cuánta memoria y disco necesita Node-RED?
Node-RED es ligero: unos 100 MB de memoria; los flujos ocupan kilobytes, y los nodos que instales, unos pocos megabytes cada uno. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.
El archivo Docker Compose de Node-RED
La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.
Contenedores: node-red (nodered/node-red:5).
Volúmenes, en el backup de cada noche: data.
services:
node-red:
image: nodered/node-red:5
restart: unless-stopped
environment:
TZ: ${TZ:-UTC}
ADMIN_USERNAME: ${ADMIN_USERNAME}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# The editor would be open to anyone with the address. Node-RED starts with the settings of
# /data/settings.js, which are yours to edit, and with the username and password of the
# project's .env as its only sign-in, unless settings.js sets adminAuth itself.
entrypoint: ["/bin/bash", "-c"]
command:
- |
# The first start: settings.js to edit, and no flow, where the image's would warn of a
# missing volume, which the project has.
if [ ! -f /data/settings.js ]; then
cp node_modules/node-red/settings.js /data/settings.js
rm -f /data/flows.json
fi
cat > /tmp/settings.js <<'END'
const { createHash, timingSafeEqual } = require("node:crypto");
const settings = require("/data/settings.js");
const digest = (text) => createHash("sha256").update(String(text)).digest();
const user = (username) => (username === process.env.ADMIN_USERNAME ? { username, permissions: "*" } : null);
settings.adminAuth ??= {
type: "credentials",
users: async (username) => user(username),
authenticate: async (username, password) =>
timingSafeEqual(digest(password), digest(process.env.ADMIN_PASSWORD)) ? user(username) : null
};
module.exports = settings;
END
exec ./entrypoint.sh --settings /tmp/settings.js
volumes:
- data:/data
volumes:
data:
Más en Automatización
- n8nAutomatización de flujos de trabajo con un editor visual
- JenkinsUn servidor de automatización para builds, pruebas y despliegues
- Semaphore UIUna interfaz web para Ansible, Terraform y otra automatización
- ActivepiecesAutomatizaciones y agentes de IA hechos con cientos de piezas, sin código
- WindmillScripts, flujos y apps en Python, TypeScript, Go, SQL o Bash, ejecutados por workers según un horario, un webhook o un botón