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

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

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

Требования

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

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

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

Настройки задаются через JSON-файл. Путь к файлу по умолчанию — /etc/lighthouse_api/config.json. Путь можно переопределить через переменную окружения APP_CONFIG или флаг --config.

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

config.json
{
    "redis_url": "redis://127.0.0.1:6379",
    "api_host": "0.0.0.0",
    "api_port": 8010,
    "log_level": "info",
    "debug": false,
    "relay_auth_user": "admin",
    "relay_auth_pass": "admin",
    "relay_http_timeout": 2,
    "ping_interval": 5,
    "reconcile_interval": 3,
    "apply_timeout": 5,
    "clean_on_startup": true,
    "relays": [
        {
            "relay_ip": "10.107.191.100",
            "relay_port": 8080,
            "lighthouses": [
                {
                    "id": "mezz-aisle-1",
                    "colors": {"red": 0, "green": 1},
                    "zone": "Мезонин",
                    "label": "Проход 1"
                }
            ]
        }
    ]
}

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

ПараметрПо умолчаниюОписание
redis_urlredis://127.0.0.1:6379Адрес подключения к Redis
api_host0.0.0.0Адрес прослушивания
api_port8010Порт прослушивания
log_levelinfoУровень журнала: debug, info, warn, error
log_fileПуть к файлу журнала (по умолчанию stdout)
log_max_size_mb100Максимальный размер файла журнала (МБ)
log_max_files5Количество ротируемых файлов
debugfalseРежим отладки
relay_auth_useradminИмя пользователя для Basic Auth к реле
relay_auth_passadminПароль для Basic Auth к реле
relay_http_timeout2Тайм-аут HTTP-запроса к реле (сек.)
ping_interval5Интервал опроса реле (сек.)
reconcile_interval3Интервал синхронизации состояния (сек.)
apply_timeout5Тайм-аут применения команды (сек.)
clean_on_startuptrueВыключить все выходы при старте
relays[]Массив конфигураций реле (см. ниже)

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

Каждый элемент массива relays описывает один релейный модуль и подключённые к нему маяки:

ПараметрОписание
relay_ipIP-адрес релейного модуля
relay_portПорт релейного модуля
lighthousesМассив маяков: id, colors (номера выходов), zone, label

Протокол управления реле. Сервис обращается к реле по HTTP GET с Basic Auth. Включение выхода: /protect/rb{output}n.cgi, выключение: /protect/rb{output}f.cgi.

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

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

Docker Compose

docker-compose.yml
services:
  lighthouse-api:
    image: git.whsoft.ru/ascs/lighthouse_api:1.0
    ports:
      - "8010:8010"
    environment:
      APP_CONFIG: /etc/lighthouse_api/config.json
      TZ: Europe/Moscow
    volumes:
      - ./config.json:/etc/lighthouse_api/config.json:ro
    depends_on:
      - redis
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    restart: unless-stopped
Запуск
docker compose up -d

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

Терминал
# Сборка образа (golang:1.26-alpine → alpine:3.19)
docker build -t lighthouse-api:1.0 .

# Запуск контейнера
docker run -d --name lighthouse-api \
  -p 8010:8010 \
  -e APP_CONFIG=/etc/lighthouse_api/config.json \
  -e TZ=Europe/Moscow \
  -v ./config.json:/etc/lighthouse_api/config.json:ro \
  lighthouse-api:1.0

Redis обязателен. Lighthouse API требует работающий экземпляр Redis. При использовании Docker Compose Redis поднимается автоматически. При ручном запуске убедитесь, что адрес Redis указан верно в redis_url.

Запуск без Docker

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

Сборка и запуск
# Сборка
go build -o lighthouse-api .

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

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

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

ФлагПо умолчаниюОписание
--config/etc/lighthouse_api/config.jsonПуть к файлу конфигурации
--host0.0.0.0Адрес прослушивания
--port8010Порт прослушивания

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

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

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

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

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

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

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

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

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

Коды ответа

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

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

Учётные данные реле. Параметры relay_auth_user и relay_auth_pass по умолчанию установлены в admin/admin. Обязательно измените их в рабочей среде.