Задеплойте Node-RED в один клик
Low-code потоки, которые связывают API, устройства и онлайн-сервисы
Альтернатива Zapier и IFTTT на вашей машине.
Что такое Node-RED?
Node-RED — инструмент с открытым кодом для low-code программирования событийно-ориентированных приложений. Его часто запускают вместо Zapier или IFTTT. В его редакторе в браузере вы перетаскиваете узлы на рабочую область и соединяете их в потоки: сообщение приходит из HTTP-запроса, топика MQTT, вебхука или таймера, проходит через узлы, которые меняют, фильтруют или направляют его дальше, и уходит в базу данных, API или чат. Узел Function выполняет ваш собственный JavaScript там, где не подходит ни один узел, а в библиотеке сообщества больше 6000 узлов, которые устанавливаются прямо из редактора.
Node-RED появился в IBM в 2013 году, а сейчас это проект OpenJS Foundation. Его используют для умного дома, часто вместе с Home Assistant, для IoT и промышленных данных и как связующее звено между веб-сервисами, а хостят у себя, чтобы автоматизации работали круглосуточно и без платы за каждый запуск. Этот шаблон пускает в редактор только с заданными именем пользователя и паролем. Подвох: маршруты узлов HTTP In публичны, поэтому эндпоинту, который должен быть закрытым, нужен httpNodeAuth в settings.js или собственная проверка.
Хостинг Node-RED на Pethost
- Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
- Окно «Новый проект» открывается на приложении Node-RED. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: Имя пользователя, Пароль администратора.
- Через минуту-две Node-RED работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
- Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.
Вопросы про Node-RED
Node-RED бесплатный?
Да. Node-RED распространяется с открытым кодом под лицензией Apache 2.0 и ничего не стоит, сколько бы ни было потоков или сообщений. Это проект OpenJS Foundation.
Как установить новые узлы в Node-RED?
Откройте главное меню, выберите «Управление палитрой» и воспользуйтесь поиском на вкладке «Установить», где перечислены узлы библиотеки сообщества. Установленные узлы хранятся в томе 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 через «Управление палитрой»: его узлы рисуют кнопки, графики и формы на странице, которую отдает 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, которые воркеры запускают по расписанию, вебхуку или кнопке