Продукты
АКС Комплекс PTL RID Световые маяки
Проекты Документация Сопровождение Связаться
Документация · версия 2.0

Развёртывание и запуск RID

Пошаговое руководство по установке, настройке и запуску системы управления информационными дисплеями.

Требования

Для запуска RID необходимы:

Если планируется сборка без Docker:

Конфигурация

Настройки задаются через JSON-файл. Путь к файлу указывается через переменную окружения APP_CONFIG или флаг -config. Можно указать HTTP/HTTPS-адрес вместо локального пути.

Пример файла конфигурации

config.json
{
    "redis_url": "redis://127.0.0.1:6379",
    "displays": [
        {
            "display_ip": "192.168.0.195",
            "display_port": 502
        }
    ],
    "clean_displays_on_startup": false,
    "debug": false,
    "log_level": "info",
    "api_host": "0.0.0.0",
    "api_port": 8000
}

Все параметры

ПараметрПо умолчаниюОписание
redis_urlredis://127.0.0.1:6379Адрес подключения к Redis
displays[]Список дисплеев: display_ip, display_port
clean_displays_on_startupfalseОчищать дисплеи при старте
debugfalseРежим отладки
log_levelinfoУровень журнала: debug, info, warn, error
log_fileПуть к файлу журнала (необязательно)
log_max_size_mb100Максимальный размер файла журнала (МБ)
log_max_files5Количество ротируемых файлов
api_host0.0.0.0Адрес прослушивания
api_port8000Порт прослушивания
displays_ping_interval2Интервал опроса дисплеев (сек.)
displays_ping_timeout1Тайм-аут опроса (сек.)
displays_ping_threshold0.3Порог медленного ответа (сек.) — логируется в поток ошибок
reconcile_interval5Интервал синхронизации состояния (сек.)
apply_timeout10Тайм-аут применения команды (сек.)

Запуск через Docker

Рекомендуемый способ развёртывания. Создайте файл config.json с параметрами дисплеев и адресом Redis.

Docker Compose

docker-compose.yml
services:
  rid:
    image: rid-api:2.0
    ports:
      - "8002:8000"
    environment:
      APP_CONFIG: /etc/rid_api/config.json
    volumes:
      - ./config.json:/etc/rid_api/config.json:ro
    cap_add:
      - NET_RAW  # для ARP-сканирования сети
    restart: unless-stopped
Запуск
docker compose up -d

Сборка образа вручную

Терминал
# Сборка Go-образа (рекомендуется)
docker build -f go.Dockerfile -t rid-api:2.0 .

# Запуск контейнера
docker run -d --name rid \
  -p 8002:8000 \
  -e APP_CONFIG=/etc/rid_api/config.json \
  -v ./config.json:/etc/rid_api/config.json:ro \
  --cap-add NET_RAW \
  rid-api:2.0

Права на сканирование сети. Для работы автообнаружения дисплеев через ARP контейнеру нужна привилегия NET_RAW. Без неё сканирование не будет работать, остальные функции — будут.

Запуск без Docker

Если вы собрали бинарный файл из исходного кода:

Сборка и запуск
# Сборка
make build-go

# Запуск
./bin/rid-api -config ./config.json

# Или с указанием порта
./bin/rid-api -config ./config.json -port 8000 -host 0.0.0.0

Флаги командной строки

ФлагПо умолчаниюОписание
-configПуть к файлу конфигурации (или URL)
-host0.0.0.0Адрес прослушивания
-port8000Порт прослушивания

Переменные окружения

Переменные окружения имеют приоритет над параметрами из файла конфигурации. Флаги командной строки имеют наивысший приоритет.

ПеременнаяПо умолчаниюОписание
APP_CONFIGПуть к файлу конфигурации
REDIS_URLredis://127.0.0.1:6379Адрес подключения к Redis
API_HOST0.0.0.0Адрес прослушивания
API_PORT8000Порт прослушивания
DEBUGfalseРежим отладки (true или 1)
LOG_LEVELinfoУровень журнала

Приоритет применения настроек (от низшего к высшему):

  1. Значения по умолчанию в коде
  2. JSON-файл конфигурации
  3. Переменные окружения
  4. Флаги командной строки

Проверка работоспособности

После запуска убедитесь, что сервис отвечает:

Терминал
# Быстрая проверка
curl http://localhost:8000/_ping
# Ответ: {"pong": "pong"}

# Подробный статус
curl http://localhost:8000/health
# Ответ:
# {
#   "status": "healthy",
#   "redis": "ok",
#   "displays_configured": 2,
#   "displays_online": 1
# }

# Сводка по дисплеям
curl http://localhost:8000/dashboard

Коды ответа

АдресКодОписание
/_ping200Сервис запущен
/health200Redis доступен, дисплеи сконфигурированы
/health503Redis недоступен или нет сконфигурированных дисплеев

Важные замечания

Только один экземпляр сервиса. Каждый дисплей поддерживает только одно ModBus-подключение. Запуск нескольких экземпляров RID, работающих с одними и теми же дисплеями, приведёт к ошибкам соединения.