Skip to main content

Установка Node-RED в Docker

Установить Node-RED в Docker довольно просто благодаря официальному образу, предоставляемому разработчиками. Docker позволяет запустить Node-RED в изолированном контейнере с минимальной настройкой. Я опишу пошаговый процесс установки, включая запуск через docker run и использование docker-compose для более удобного управления. Предполагается, что у вас уже установлен Docker на вашем сервере или локальной машине.
Установка Node-RED в Docker
Способ 1: Использование docker run

    Проверка установки Docker: Убедитесь, что Docker работает:
    bash

docker --version
Если Docker не установлен, установите его согласно инструкциям для вашей ОС (например, apt install docker.io на Ubuntu).
Запуск контейнера Node-RED: Выполните команду для запуска Node-RED с официальным образом:
bash
docker run -it -p 1880:1880 --name node-red nodered/node-red

    -it: Интерактивный режим с терминалом.
    -p 1880:1880: Проброс порта 1880 (по умолчанию для Node-RED) из контейнера на хост.
    --name node-red: Имя контейнера.
    nodered/node-red: Официальный образ из Docker Hub.

Доступ к Node-RED: Откройте браузер и перейдите по адресу:
text
http://localhost:1880
Вы увидите интерфейс Node-RED.
Остановка контейнера: Чтобы остановить:
bash
docker stop node-red
Для повторного запуска:
bash

    docker start node-red

Добавление постоянного хранения

По умолчанию данные (потоки, настройки) хранятся внутри контейнера и теряются при его удалении. Чтобы сохранить данные:
bash
docker run -it -p 1880:1880 -v node_red_data:/data --name node-red nodered/node-red

    -v node_red_data:/data: Создаёт том (node_red_data) и монтирует его в /data внутри контейнера, где Node-RED сохраняет свои файлы.

Способ 2: Использование docker-compose

Этот способ удобнее для настройки и управления, особенно если вы планируете использовать Node-RED長期 или добавлять дополнительные сервисы.

    Создайте файл docker-compose.yml: Создайте файл в любой папке:
    yaml

version: "3"
services:
  node-red:
    image: nodered/node-red:latest
    container_name: node-red
    ports:
      - "1880:1880"
    volumes:
      - node_red_data:/data
    restart: unless-stopped

volumes:
  node_red_data:

    image: Последняя версия образа Node-RED.
    ports: Проброс порта 1880.
    volumes: Постоянное хранилище для данных.
    restart: unless-stopped: Автоматический перезапуск контейнера, если он остановился (кроме ручной остановки).

Запустите Node-RED: В папке с docker-compose.yml выполните:
bash
docker-compose up -d

    -d: Запуск в фоновом режиме.

Доступ к Node-RED: Откройте браузер:
text
http://localhost:1880
Остановка и удаление: Остановить:
bash
docker-compose stop
Удалить контейнеры (данные в томе сохранятся):
bash

    docker-compose down

Дополнительные настройки
1. Указание версии

Если нужна конкретная версия Node-RED (например, 2.2.2):

    В docker run:
    bash

docker run -it -p 1880:1880 --name node-red nodered/node-red:2.2.2
В docker-compose.yml:
yaml

    image: nodered/node-red:2.2.2

2. Настройка переменных окружения

Node-RED поддерживает настройку через переменные окружения. Например:

    TZ=Europe/Moscow — часовой пояс.
    NODE_RED_CREDENTIAL_SECRET=your-secret — ключ для шифрования учетных данных.

В docker-compose.yml:
yaml
services:
  node-red:
    image: nodered/node-red:latest
    environment:
      - TZ=Europe/Moscow
      - NODE_RED_CREDENTIAL_SECRET=mysecretkey
    ports:
      - "1880:1880"
    volumes:
      - node_red_data:/data
3. Добавление собственных нод

Если вы хотите установить дополнительные ноды (например, node-red-contrib-telegram):

    Создайте файл package.json в папке с данными (например, ./node-red-data):
    json

{
  "dependencies": {
    "node-red-contrib-telegram": "^2.0.0"
  }
}
Смонтируйте эту папку:
yaml
volumes:
  - ./node-red-data:/data
Перезапустите контейнер:
bash

    docker-compose down && docker-compose up -d
    Node-RED автоматически установит указанные зависимости.

4. Защита паролем

Для включения авторизации:

    Включите админ-редактор с паролем через settings.js. Скопируйте файл настроек в том:
    javascript

adminAuth: {
  type: "credentials",
  users: [{
    username: "admin",
    password: "$2a$08$...", // сгенерировать хэш через `node-red admin hash-pw`
    permissions: "*"
  }]
}
Смонтируйте файл:
yaml

    volumes:
      - ./node-red-data/settings.js:/data/settings.js

Проверка работы

После запуска:

    Перейдите на http://localhost:1880.
    Создайте простой поток (например, inject → debug).
    Нажмите "Deploy" и проверьте вывод в консоли или интерфейсе.

Итог

    Простой запуск: docker run -it -p 1880:1880 -v node_red_data:/data nodered/node-red.
    С docker-compose: Используйте приведённый docker-compose.yml для удобства.
    Данные: Сохраняются в томе node_red_data.

Node-RED будет работать на вашем сервере или локальной машине, доступный через браузер.