Установка Node-RED в docker — альтернативный способ установки

Материал из Wiren Board
Это утверждённая версия страницы. Она же — наиболее свежая версия.

Описание

Инструкция прислана пользователем, мы её не проверяли. Используйте на свой страх и риск. Инструкцию по работе с Node-RED на контроллере находится на странице Установка Node-RED на контроллер Wiren Board.

Здесь приведён альтернативный вариант — установка через docker.

Установка

Для установки Node-RED на контроллер Wiren Board подключитесь к нему по SSH и введите в консоль несколько команд.

  1. Установите docker по инструкции.
  2. Создайте каталог под служебные файлы:
    mkdir /mnt/data/root/nodered
    chown -R 1000:1000 /mnt/data/root/nodered
    chmod -R 777 /mnt/data/root/nodered
    
  3. Запустите образ nodered — docker автоматически загрузит его из интернет и запустит:
    docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256"  --network=host nodered/node-red
    

После установки и запуска, откройте браузер и введите адрес своего контроллера в сети и порт 1880. Например: http://192.168.42.1:1880 Консоль можно закрыть.

Решение проблем

Иногда, если во флоу есть ошибка, то веб-интерфейс Node-RED может перестать загружаться, в этом случае нужно подключиться к контроллеру по SSH и посмотреть логи контейнера nodered.

docker logs nodered

Если в логах будет видна ошибка во флоу, то надо пересоздать контейнер с safe-запуском:

  1. Остановить службу, если она запущена:
    docker stop nodered ; docker rm nodered && docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256"  --network=host --entrypoint "/bin/bash" nodered/node-red -c 'npm start -- --userDir /data --safe'
    
  2. После этой команды Node-Red запустится в безопасном режиме и не запустит деплой при старте. После исправления ошибки надо снова пересоздать контейнер с правильной командой.
    docker stop nodered ; docker rm nodered && docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256"  --network=host nodered/node-red
    

Для доступа в контейнер (например, для установки и использования node-red-admin) можно воспользоваться такой командой:

docker exec -it nodered /bin/bash

После этого можно установить node-red-admin:

npm install --location=global --unsafe-perm node-red-admin