Українська
Почати

← Усі шаблони · Автоматизація

Задеплойте Node-RED в один клік

Low-code потоки, що з’єднують API, пристрої та онлайн-сервіси

Альтернатива Zapier і IFTTT на вашій машині.

Що таке Node-RED?

Node-RED — low-code інструмент програмування з відкритим кодом для подієво-орієнтованих застосунків, який часто запускають замість Zapier або IFTTT. У його редакторі в браузері ви перетягуєте вузли на полотно й з’єднуєте їх у потоки: повідомлення надходить з HTTP-запиту, топіка MQTT, вебхука чи таймера, проходить крізь вузли, які змінюють, фільтрують або маршрутизують його, і йде далі в базу даних, API чи чат. Вузол Function виконує ваш власний JavaScript там, де жоден вузол не підходить, а бібліотека спільноти налічує понад 6 000 вузлів, які можна встановити просто з редактора.

Node-RED створили в IBM 2013 року, а тепер це проєкт OpenJS Foundation. Його використовують для домашньої автоматизації, часто поруч із Home Assistant, для IoT і промислових даних та як сполучну ланку між вебсервісами. Його хостять у себе, щоб автоматизації працювали цілодобово без плати за кожен запуск. Цей шаблон пускає в редактор лише з указаними іменем користувача й паролем. Підводний камінь: маршрути вузлів HTTP In публічні, тож ендпоінту, який має бути приватним, потрібен httpNodeAuth у settings.js або власна перевірка.

Хостинг Node-RED на Pethost

  1. Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
  2. Вікно «Новий проєкт» відкривається на застосунку Node-RED. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: Ім’я користувача, Пароль адміністратора.
  3. За хвилину-дві Node-RED працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
  4. Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.

Питання про Node-RED

Node-RED безкоштовний?

Так. Node-RED має відкритий код за ліцензією Apache 2.0 і нічого не коштує, хоч би скільки було потоків чи повідомлень. Це проєкт OpenJS Foundation.

Як установити додаткові вузли в Node-RED?

У Node-RED відкрийте головне меню, оберіть «Manage palette» і шукайте на вкладці «Install», де перелічено вузли бібліотеки спільноти. Установлені вузли зберігаються в томі data, тож нікуди не зникають після перезапусків і нових деплоїв.

Чи працює Node-RED із Home Assistant?

Так. Вузли node-red-contrib-home-assistant-websocket спілкуються з Home Assistant через його WebSocket і REST API, щоб реагувати на його події та викликати його сервіси. Ваш Home Assistant має бути доступний із машини, на якій працює Node-RED.

Як зробити дашборд у Node-RED?

Установіть @flowfuse/node-red-dashboard через «Manage palette»: його вузли малюють кнопки, графіки й форми на сторінці, яку віддає Node-RED. Старий node-red-dashboard з червня 2024 року вважається застарілим.

Як захистити HTTP-ендпоінти потоків у Node-RED?

Редактор Node-RED вимагає входу, а маршрути вузлів HTTP In відповідають будь-кому. Щоб закрити їх усі одним паролем, задайте httpNodeAuth із користувачем і хешем bcrypt у /data/settings.js або перевіряйте токен у самому потоці.

Скільки пам’яті й диска потрібно Node-RED?

Node-RED має скромні вимоги: близько 100 MB пам’яті; потоки займають кілобайти, а кожен установлений вузол — кілька мегабайтів. На Pethost йому вистачить тарифу Starter, і поруч залишиться місце для інших застосунків.

Node-RED: файл Docker Compose

Шаблон — це цей compose.yaml і змінні, які записуються в .env проєкту під час його створення. Pethost запускає файл так, як його написано.

Контейнери: node-red (nodered/node-red:5).

Томи, у щонічному бекапі: 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:

Ще в категорії «Автоматизація»