Português
Começar

← Todos os templates · Automação

Faça deploy de Node-RED em um clique

Fluxos low-code que conectam APIs, dispositivos e serviços online

Uma alternativa auto-hospedada para Zapier e IFTTT.

O que é Node-RED?

O Node-RED é uma ferramenta de programação low-code e de código aberto para aplicações orientadas a eventos, muitas vezes usada no lugar do Zapier ou do IFTTT. No editor, que roda no navegador, você arrasta nós para o canvas e os liga em fluxos: uma mensagem chega de uma requisição HTTP, de um tópico MQTT, de um webhook ou de um timer, passa por nós que a alteram, filtram ou encaminham e sai para um banco de dados, uma API ou um chat. Um nó Function roda o seu próprio JavaScript quando nenhum nó serve, e a biblioteca da comunidade tem mais de 6.000 nós para instalar a partir do editor.

O Node-RED nasceu na IBM em 2013 e hoje é um projeto da OpenJS Foundation. As pessoas o usam para automação residencial, muitas vezes junto com o Home Assistant, para IoT e dados industriais e como cola entre serviços web, e o auto-hospedam para rodar suas automações 24 horas por dia, sem preço por execução. Este template abre o editor apenas para o usuário e a senha informados. O porém: as rotas dos nós HTTP In são públicas, então um endpoint que deveria ser privado precisa de httpNodeAuth no settings.js ou de uma verificação própria.

Hospedagem de Node-RED no Pethost

  1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
  2. Novo projeto abre em Node-RED. Você preenche o que ele pede e clica em Criar projeto: Usuário, Senha do administrador.
  3. Em um ou dois minutos Node-RED está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
  4. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

Perguntas sobre Node-RED

O Node-RED é gratuito?

Sim. O Node-RED é de código aberto sob a licença Apache 2.0 e não custa nada, seja qual for o número de fluxos ou de mensagens. Ele é um projeto da OpenJS Foundation.

Como instalo mais nós no Node-RED?

Abra o menu principal, escolha Gerenciar paleta e busque na aba Instalar, que lista os nós da biblioteca da comunidade. Os nós instalados ficam guardados no volume data, então sobrevivem a reinícios e a novos deploys.

O Node-RED funciona com o Home Assistant?

Sim. Os nós node-red-contrib-home-assistant-websocket falam com o Home Assistant pelas APIs WebSocket e REST dele, para reagir aos eventos e chamar os serviços do Home Assistant. O seu Home Assistant precisa estar acessível a partir da máquina em que o Node-RED roda.

Como criar um dashboard no Node-RED?

Instale o @flowfuse/node-red-dashboard com Gerenciar paleta: os nós dele desenham botões, gráficos e formulários em uma página servida pelo Node-RED. O node-red-dashboard, mais antigo, está descontinuado desde junho de 2024.

Como proteger os endpoints HTTP dos meus fluxos no Node-RED?

O editor do Node-RED pede login, mas as rotas dos nós HTTP In respondem a qualquer pessoa. Defina httpNodeAuth com um usuário e um hash bcrypt em /data/settings.js para proteger todas elas com uma única senha, ou verifique um token no próprio fluxo.

De quanta memória e disco Node-RED precisa?

Node-RED é leve: cerca de 100 MB de memória; os fluxos ocupam kilobytes, e os nós que você instala, alguns megabytes cada. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

Arquivo Docker Compose de Node-RED

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.

Containers: node-red (nodered/node-red:5).

Volumes, no backup noturno: 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:

Mais em Automação