Задеплойте 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
- Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
- Вікно «Новий проєкт» відкривається на застосунку Node-RED. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: Ім’я користувача, Пароль адміністратора.
- За хвилину-дві Node-RED працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
- Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.
Питання про 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:
Ще в категорії «Автоматизація»
- n8nАвтоматизація робочих процесів із візуальним редактором
- JenkinsСервер автоматизації для збірок, тестів і деплоїв
- Semaphore UIВебінтерфейс для Ansible, Terraform та іншої автоматизації
- ActivepiecesАвтоматизації та AI-агенти із сотень готових блоків, без коду
- WindmillСкрипти, флоу й застосунки на Python, TypeScript, Go, SQL чи Bash, які воркери запускають за розкладом, вебхуком або кнопкою