Порт Node-RED: настройка, изменение и решение проблем с доступом

Если браузер не открывает редактор Node-RED по адресу http://localhost:1880, первое, что нужно проверить, — действительно ли сервис запущен и слушает ли он именно порт 1880. Именно этот TCP-порт Node-RED использует по умолчанию для веб-интерфейса, и большинство проблем с доступом связано либо с тем, что процесс не стартовал, либо с тем, что порт уже занят другим приложением.

В этой статье разберём, как работает сетевой порт Node-RED, где он задаётся, как его изменить, как открыть доступ к редактору из локальной сети и что делать при типичных ошибках вроде EADDRINUSE. Материал подходит для установок на Windows, Linux и Raspberry Pi — с оговорками там, где поведение зависит от платформы.

Какой порт использует Node-RED по умолчанию

Стандартный порт Node-RED — 1880. После запуска команды node-red в терминале появляется строка приветствия, где прямо указан адрес веб-интерфейса, обычно http://127.0.0.1:1880/. Это и есть подтверждение, что сервер поднялся и слушает порт.

Через этот же порт работают не только редактор потоков, но и HTTP-эндпоинты нод http in, а также панель Node-RED Dashboard, если она установлена — её интерфейс обычно доступен по адресу http://адрес:1880/ui. То есть один порт обслуживает всю HTTP-активность среды.

Важно не путать порт веб-интерфейса с портами, которые используют отдельные ноды: TCP in, UDP in и другие сетевые узлы могут слушать собственные порты, заданные в их настройках. Они никак не связаны с 1880 и настраиваются независимо.

Как проверить, запущен ли Node-RED и слушает ли порт

Быстрая диагностика начинается с консоли. Если Node-RED запущен в терминале, лог прямо сообщит об успешном старте или об ошибке. Если сервис работает в фоне (например, через systemd на Linux), статус проверяется командой systemctl status nodered — точное имя службы зависит от того, как выполнялась установка.

Проверить, занят ли порт 1880 и каким процессом, можно системными утилитами:

netstat -tlnp | grep 1880

На Windows аналогичную проверку выполняют через netstat -ano | findstr :1880, а затем по PID смотрят процесс в диспетчере задач. Если команда ничего не возвращает — Node-RED не запущен или слушает другой порт.

  • 🔍 Проверьте вывод команды запуска — там указан фактический адрес и порт.
  • 🧩 Убедитесь, что порт 1880 не занят другим приложением.
  • 🌐 Попробуйте открыть http://127.0.0.1:1880 с той же машины, где запущен сервер.
  • 🛡️ Проверьте, не блокирует ли подключение брандмауэр или антивирус.
📊 Как у вас запущен Node-RED?
Напрямую на ПК или сервере
На Raspberry Pi
В Docker-контейнере
На Home Assistant как аддон

Как изменить порт Node-RED

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

Основной способ — файл settings.js, который находится в пользовательском каталоге Node-RED (обычно ~/.node-red/settings.js). В нём есть параметр uiPort:

uiPort: process.env.PORT || 1880,

Замените значение на нужное, например uiPort: 8080,, сохраните файл и перезапустите Node-RED. После перезапуска редактор будет доступен уже на новом порту. Обратите внимание на конструкцию process.env.PORT || 1880 — она означает, что переменная окружения PORT, если задана, имеет приоритет над значением по умолчанию.

☑️ Смена порта Node-RED

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

Второй способ — задать переменную окружения PORT перед запуском. Это удобно для временных экспериментов и для сред вроде Docker, где порт пробрасывается параметром контейнера, например -p 8080:1880.

Открытие доступа к Node-RED из локальной сети

По умолчанию Node-RED обычно принимает подключения на всех сетевых интерфейсах, то есть редактор доступен не только с самой машины, но и по её IP-адресу из локальной сети. Однако в settings.js есть параметр uiHost, который может ограничивать прослушивание адресом 127.0.0.1 — в этом случае извне подключиться не получится, пока значение не изменить на 0.0.0.0 или не закомментировать строку.

Даже при правильном uiHost доступ может блокировать брандмауэр. На Linux с ufw порт открывается командой:

sudo ufw allow 1880/tcp

На Windows потребуется создать входящее правило для порта в брандмауэре Защитника Windows. Точные названия пунктов зависят от версии системы, поэтому сверяйтесь с документацией вашей ОС.

⚠️ Внимание: открывая порт Node-RED в сети без настроенной авторизации, вы даёте любому в локальной сети полный доступ к редактированию потоков и выполнению произвольных команд на сервере. Перед открытием порта обязательно включите аутентификацию через параметр adminAuth в settings.js.

Ошибка EADDRINUSE и конфликт портов

Типичная ошибка при запуске — Error: listen EADDRINUSE: address already in use :::1880. Она означает, что порт 1880 уже занят: либо другим приложением, либо предыдущим экземпляром Node-RED, который не был корректно остановлен.

Порядок действий здесь такой. Сначала определите, какой процесс держит порт, с помощью netstat или lsof -i :1880 на Linux. Если это «зависший» экземпляр Node-RED — завершите его штатно. Если порт занят сторонней программой, решите, что важнее: остановить её или перенести Node-RED на другой порт через uiPort.

СимптомВероятная причинаЧто проверить
Браузер не открывает 1880Сервис не запущенЛог запуска, статус службы
EADDRINUSE при стартеПорт занят другим процессомnetstat / lsof, завершить процесс
Локально работает, из сети — нетuiHost = 127.0.0.1 или брандмауэрsettings.js, правила файрвола
Connection refused извнеПорт закрыт на роутере/файрволеПроброс портов, правила сети
Dashboard не открываетсяНеверный путь или портАдрес /ui, порт из uiPort

Порт Node-RED в Docker и Home Assistant

В Docker ситуация с портами двухуровневая: внутри контейнера Node-RED слушает 1880, а наружу порт пробрасывается сопоставлением вида -p 1880:1880. Чтобы снаружи использовать другой порт, меняют первое число: -p 8080:1880. Менять uiPort внутри контейнера при этом не нужно.

В Home Assistant аддон Node-RED настраивается через собственный интерфейс: порт задаётся в разделе конфигурации аддона, а доступ часто идёт через встроенный Ingress без отдельного порта. Точные пункты меню зависят от версии аддона, поэтому ориентируйтесь на его официальную документацию.

Почему не стоит пробрасывать порт Node-RED в интернет

Редактор Node-RED даёт полный контроль над потоками и, через ноды exec, над системой. Публикация порта в интернете без HTTPS, авторизации и ограничений по IP создаёт серьёзный риск компрометации сервера. Для удалённого доступа безопаснее использовать VPN или обратный прокси с аутентификацией.

Безопасность порта Node-RED

Открытый порт — это точка входа, и Node-RED в базовой конфигурации не требует пароля. Минимальный набор мер перед открытием доступа из сети:

  • 🔐 Включите adminAuth в settings.js с хешированным паролем.
  • 🔒 Настройте HTTPS через параметр https или вынесите Node-RED за обратный прокси с TLS.
  • 🚪 Ограничьте доступ по IP средствами брандмауэра, если круг пользователей известен.
  • 📦 Регулярно обновляйте Node-RED и ноды — уязвимости закрываются в новых версиях.
⚠️ Внимание: ноды exec и function позволяют выполнять системные команды. Если посторонний получит доступ к редактору через открытый порт, он фактически получит права пользователя, под которым запущен Node-RED. Не запускайте сервис от root без крайней необходимости.
⚠️ Внимание: HTTP-эндпоинты нод http in доступны на том же порту, что и редактор. Открывая порт наружу, вы публикуете и их — проверьте, не отдают ли они чувствительные данные.

Часто задаваемые вопросы

Какой порт у Node-RED по умолчанию?

Порт 1880. Через него доступны редактор потоков, HTTP-эндпоинты нод и панель Dashboard (по пути /ui).

Как запустить Node-RED на другом порту?

Измените параметр uiPort в файле ~/.node-red/settings.js или задайте переменную окружения PORT перед запуском, затем перезапустите сервис.

Что делать при ошибке EADDRINUSE: address already in use :::1880?

Порт 1880 уже занят. Найдите процесс через netstat или lsof -i :1880, завершите лишний экземпляр Node-RED либо смените порт в настройках.

Почему Node-RED открывается локально, но недоступен с другого устройства в сети?

Возможные причины: параметр uiHost ограничен адресом 127.0.0.1, порт закрыт брандмауэром или устройства находятся в разных подсетях. Проверьте settings.js и правила файрвола.

Безопасно ли открывать порт Node-RED в интернет?

Без дополнительной защиты — нет. Минимум включите adminAuth и HTTPS, а лучше используйте VPN или обратный прокси с аутентификацией и ограничением по IP.