Как перезагрузить Node-RED: подробная инструкция

Команда node-red-restart или перезапуск службы через systemctl restart nodered — первое действие, когда потоки Node-RED перестают выполняться, веб-редактор не открывается по адресу http://localhost:1880 или после редактирования файла settings.js изменения не применяются. Без перезапуска среда продолжает работать со старой конфигурацией, и любые правки настроек просто игнорируются.

В этой статье разберём все рабочие способы перезагрузить Node-RED: через терминал, системный менеджер systemd, Docker, Home Assistant и программно — из самого потока. Отдельно рассмотрим, что делать, если после перезапуска сервис не поднимается или теряются данные.

Когда нужен перезапуск Node-RED

Перезагрузка требуется не так часто, как кажется: большинство изменений в потоках применяется кнопкой Deploy без остановки среды. Но есть ситуации, где без полного перезапуска не обойтись.

  • 🔧 Изменён файл конфигурации settings.js — порт, авторизация, пути, контекстное хранилище.
  • 📦 Установлены или обновлены узлы через npm вручную, а не через палитру.
  • 💾 Процесс «завис»: редактор не отвечает, потоки не выполняются, растёт потребление памяти.
  • 🔑 Обновлены сертификаты или переменные окружения, которые читаются только при старте.

Обратите внимание: обычное обновление страницы редактора в браузере — это не перезапуск Node-RED, а лишь переподключение клиента к работающему серверу. Серверный процесс при этом продолжает выполняться.

Перезапуск через терминал

Если Node-RED запущен вручную командой node-red в окне терминала, самый простой способ — остановить процесс сочетанием клавиш Ctrl+C и запустить заново той же командой. Это подходит для отладки, но неудобно для постоянной работы: при закрытии терминала среда остановится.

Для систем, где Node-RED установлен как служба systemd (типично для Raspberry Pi OS и Linux при установке официальным скриптом), используются стандартные команды:

sudo systemctl restart nodered

sudo systemctl status nodered

Первая команда перезапускает службу, вторая показывает её состояние. В выводе статуса обратите внимание на строку Active: active (running) — она подтверждает, что среда поднялась. Имя службы может отличаться (например, node-red.service) — проверить можно командой systemctl list-units | grep -i node.

Перезапуск в Docker и Home Assistant

В контейнерной установке перезапускается не процесс внутри, а весь контейнер. Команда выглядит так:

docker restart nodered

Здесь nodered — имя контейнера, заданное при запуске параметром --name. Если вы не помните имя, список контейнеров выводится командой docker ps. При использовании docker-compose перезапуск выполняется из каталога с файлом конфигурации:

docker compose restart

В Home Assistant Node-RED обычно работает как дополнение (add-on). Перезапуск выполняется из интерфейса: Настройки → Дополнения → Node-RED → Перезапустить. Точные названия пунктов могут отличаться в зависимости от версии интерфейса и языка — ориентируйтесь на страницу дополнения.

⚠️ Внимание: если данные Node-RED в Docker не вынесены в примонтированный том (volume), при удалении контейнера потоки будут потеряны. Простой docker restart данные сохраняет, но пересоздание контейнера без volume — нет. Перед любыми экспериментами убедитесь, что каталог /data смонтирован с хоста.

Безопасный перезапуск: сохранение потоков

Перед перезагрузкой убедитесь, что все несохранённые изменения задеплоены: кнопка Deploy в редакторе не должна быть активной (красной). Незадеплоенные правки хранятся только в браузере и пропадут.

☑️ Чек-лист перед перезапуском Node-RED

Выполнено: 0 / 5

Файл потоков flows.json находится в пользовательском каталоге Node-RED — по умолчанию это ~/.node-red/. Скопируйте его перед рискованными операциями:

cp ~/.node-red/flows.json ~/flows-backup.json
📊 Как у вас установлен Node-RED?
Служба systemd на Linux / Raspberry Pi
Docker-контейнер
Дополнение Home Assistant
Windows или запуск вручную

Программный перезапуск из потока

Иногда нужно перезапускать Node-RED автоматически — например, по расписанию или при обнаружении зависания. Это делается узлом exec, который выполняет системную команду. В поле команды укажите:

sudo systemctl restart nodered

Чтобы это сработало, пользователю, под которым работает Node-RED, нужно право выполнять эту команду без пароля. Оно настраивается через sudo visudo добавлением строки вида:

пользователь ALL=(ALL) NOPASSWD: /bin/systemctl restart nodered
⚠️ Внимание: предоставление прав NOPASSWD — потенциальная уязвимость. Разрешайте только конкретную команду перезапуска, никогда не давайте без пароля полный доступ к systemctl или shell. Если Node-RED доступен из внешней сети без авторизации, такая схема особенно опасна.
Перезапуск только потоков без остановки среды

В settings.js есть параметр, связанный с безопасным режимом: если запустить Node-RED с флагом --safe, потоки загрузятся, но не начнут выполняться. Это удобно, когда ошибочный поток роняет среду при старте — вы сможете открыть редактор, исправить узел и нажать Deploy.

Что делать, если Node-RED не запускается после перезагрузки

Самая частая ситуация — служба падает сразу после старта. Диагностику начинайте с журнала: journalctl -u nodered -n 50 покажет последние строки лога. Типичные причины и их признаки собраны в таблице.

Симптом в логеВероятная причинаЧто проверить
Error: port in useПорт 1880 занят другим процессомНайти процесс: sudo lsof -i :1880
Syntax error в flows.jsonПовреждён файл потоковВосстановить из резервной копии
Cannot find moduleУдалён или сломан установленный узелПереустановить модуль через npm в каталоге ~/.node-red
Permission deniedНет прав на файлы или портВладелец каталога ~/.node-red, запуск не от root

Если среда падает из-за ошибки в конкретном потоке, запустите Node-RED в безопасном режиме командой node-red --safe. Потоки загрузятся в редактор, но не начнут выполняться — вы сможете найти и исправить проблемный узел, после чего нажать Deploy.

Когда лог не показывает явной ошибки, проверьте свободную память и место на диске: на слабых устройствах вроде одноплатных компьютеров нехватка ресурсов — возможная причина молчаливого падения процесса.

Частые вопросы о перезапуске Node-RED

Теряются ли потоки при перезагрузке Node-RED?

Нет. Потоки хранятся в файле flows.json на диске и загружаются при каждом старте. Теряются только несохранённые (незадеплоенные) изменения в редакторе и данные в оперативной памяти — например, контекст без настроенного постоянного хранилища.

Чем перезапуск отличается от нажатия Deploy?

Deploy применяет изменения потоков «на лету», не останавливая среду. Перезапуск полностью останавливает процесс Node-RED и запускает его заново — это нужно для применения настроек из settings.js, новых модулей и переменных окружения.

Как перезагрузить Node-RED на Windows?

Если Node-RED запущен в окне командной строки, остановите его сочетанием Ctrl+C и запустите снова командой node-red. Если установлен как служба через сторонние инструменты — перезапустите соответствующую службу в оснастке «Службы» Windows.

Можно ли перезапустить Node-RED из веб-интерфейса?

Штатной кнопки перезапуска в редакторе нет. Варианты: узел exec с командой перезапуска службы (требует настройки прав sudo), либо перезапуск контейнера/дополнения через внешний интерфейс — Docker, Portainer или Home Assistant.

Node-RED перезапускается сам по себе — это нормально?

Нет, самопроизвольные перезапуски обычно означают падение процесса с последующим автоматическим подъёмом службой (параметр Restart в systemd) или watchdog контейнера. Смотрите журнал: частые причины — нехватка памяти, ошибка в потоке с необработанным исключением или проблемный узел.