Развёртывание и запуск Lighthouse API
Пошаговое руководство по установке, настройке и запуску системы управления световыми маяками (колоннами) на складе.
Требования
Для запуска Lighthouse API необходимы:
- Docker и Docker Compose (рекомендуется)
- Redis — хранение состояния маяков
- Сетевой доступ к релейным модулям по протоколу HTTP
Если планируется сборка без Docker:
- Go 1.26.1 или новее
- ОС: Linux (рекомендуется), macOS, Windows
Конфигурация
Настройки задаются через JSON-файл. Путь к файлу по умолчанию — /etc/lighthouse_api/config.json. Путь можно переопределить через переменную окружения APP_CONFIG или флаг --config.
Пример файла конфигурации
{
"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_url | redis://127.0.0.1:6379 | Адрес подключения к Redis |
api_host | 0.0.0.0 | Адрес прослушивания |
api_port | 8010 | Порт прослушивания |
log_level | info | Уровень журнала: debug, info, warn, error |
log_file | — | Путь к файлу журнала (по умолчанию stdout) |
log_max_size_mb | 100 | Максимальный размер файла журнала (МБ) |
log_max_files | 5 | Количество ротируемых файлов |
debug | false | Режим отладки |
relay_auth_user | admin | Имя пользователя для Basic Auth к реле |
relay_auth_pass | admin | Пароль для Basic Auth к реле |
relay_http_timeout | 2 | Тайм-аут HTTP-запроса к реле (сек.) |
ping_interval | 5 | Интервал опроса реле (сек.) |
reconcile_interval | 3 | Интервал синхронизации состояния (сек.) |
apply_timeout | 5 | Тайм-аут применения команды (сек.) |
clean_on_startup | true | Выключить все выходы при старте |
relays | [] | Массив конфигураций реле (см. ниже) |
Конфигурация реле
Каждый элемент массива relays описывает один релейный модуль и подключённые к нему маяки:
| Параметр | Описание |
|---|---|
relay_ip | IP-адрес релейного модуля |
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
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 | Путь к файлу конфигурации |
--host | 0.0.0.0 | Адрес прослушивания |
--port | 8010 | Порт прослушивания |
Переменные окружения
Переменные окружения имеют приоритет над параметрами из файла конфигурации. Флаги командной строки имеют наивысший приоритет.
| Переменная | По умолчанию | Описание |
|---|---|---|
APP_CONFIG | /etc/lighthouse_api/config.json | Путь к файлу конфигурации |
REDIS_URL | redis://127.0.0.1:6379 | Адрес подключения к Redis |
API_HOST | 0.0.0.0 | Адрес прослушивания |
API_PORT | 8010 | Порт прослушивания |
DEBUG | false | Режим отладки (true или 1) |
LOG_LEVEL | info | Уровень журнала |
Приоритет применения настроек (от низшего к высшему):
- Значения по умолчанию в коде
- JSON-файл конфигурации
- Переменные окружения
- Флаги командной строки
Проверка работоспособности
После запуска убедитесь, что сервис отвечает:
# Быстрая проверка curl http://localhost:8010/_ping # Ответ: {"pong": "pong"} # Подробный статус curl http://localhost:8010/health # Ответ: # { # "status": "healthy", # "redis": "ok", # "relays_configured": 1, # "relays_online": 1 # }
Коды ответа
| Адрес | Код | Описание |
|---|---|---|
/_ping | 200 | Сервис запущен |
/health | 200 | Redis доступен, реле сконфигурированы |
/health | 503 | Redis недоступен или нет сконфигурированных реле |
Важные замечания
Учётные данные реле. Параметры relay_auth_user и relay_auth_pass по умолчанию установлены в admin/admin. Обязательно измените их в рабочей среде.
- Redis обязателен. Без Redis сервис не запустится — в нём хранится всё состояние маяков.
- HTTP-доступ к реле. Каждый релейный модуль доступен по HTTP на своём сконфигурированном порте. Убедитесь, что сетевой экран не блокирует трафик между сервером и реле.
- Очистка при старте. Параметр
clean_on_startupвыключает все выходы реле при запуске сервиса. По умолчанию включён (true). - Журналирование. По умолчанию журнал выводится в stdout. Для записи в файл укажите
log_file— ротация происходит автоматически по размеру. - Часовой пояс. В Docker-контейнере установлен часовой пояс
Europe/Moscow. - Реестр образов. Готовые Docker-образы доступны в реестре
git.whsoft.ru/ascs/lighthouse_api.