Команда 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
Файл потоков flows.json находится в пользовательском каталоге Node-RED — по умолчанию это ~/.node-red/. Скопируйте его перед рискованными операциями:
cp ~/.node-red/flows.json ~/flows-backup.json
Программный перезапуск из потока
Иногда нужно перезапускать 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 контейнера. Смотрите журнал: частые причины — нехватка памяти, ошибка в потоке с необработанным исключением или проблемный узел.