Для облегчения развертывания системы QoW предусмотрен вариант установки сервера при помощи Docker. Для работы системы на хосте необходим только установленный Docker и встроенный в него плагин Docker Compose, а также открытые и незанятые TCP-порты 80 и 8883 (при использовании HTTPS также необходим открытый порт 443).
Система QoW представлена в виде файла конфигурации для инструмента Docker Compose, в котором заданы настройки для отдельных контейнеров с HTTP-сервером (Caddy), MQTT сервером (Mosquitto), MongoDB сервером, и собственно управляющим QoW сервером. При развертывании инструмент Docker Compose автоматически создает и настраивает отдельные контейнеры, а также связывает их в общую сеть для коммуникации, открывая наружу только минимум необходимых портов для работы системы. Модульность системы Compose позволяет гибко настраивать конфигурацию сервера и отдельных его компонентов, что позволяет запускать его как в базовом варианте с минимумом настроек, так и создавать более сложные конфигурации.
Ниже приведена инструкция для развертывания системы QoW в системе Linux, но возможно развертывание и под Windows при условии, что у вас не заняты необходимые для работы порты.
Для развертывания необходимо выполнить следующие действия:
- Установите Docker и Docker Compose, если они еще не установлены в системе. Информацию по установке можно найти в официальной документации к Docker Engine (https://docs.docker.com/engine/install/). Для запуска предоставляемой конфигурации необходима версия Docker Compose, работающая с синтаксисом v2 и выше, старые версии ниже v2 не поддерживаются. Определить вашу версию можно как минимум по команде, через которую вы обычно запускаете Compose: если запускаете через
docker-compose, то значит у вас старая версия v1.x, а если черезdocker compose, то значит у вас версия v2 или выше. - Создайте директорию, в которой будут храниться конфигурационные файлы и данные из контейнеров:
mkdir -p qow-server-docker/ cd qow-server-docker
- Скачайте конфигурационный файл
docker-compose.ymlпо ссылке, предоставленной службой технической поддержки компании "Нетамс", и положите его в корень директорииqow-server-docker. - Откройте файл docker-compose.yml в текстовом редакторе, найдите переменную NETAMS_LICENSE_KEY и замените ее значение LICENSE_KEY на ваш лицензионный ключ.
- Для правильного отображения времени также измените переменную TZ в файле docker-compose.yml, указав в ней часовой пояс, в котором будет работать система (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
- Выполните логин в наш Docker Registry для скачивания образа сервера QoW, логин и пароль для входа запросите у службы технической поддержки:
docker login packages.wnam.ru
- После успешной авторизации выполните скачивание всех необходимых для работы образов контейнеров:
docker compose pull
- После скачивания всех образов запустите контейнеры:
docker compose up -d
- После запуска контейнеров перейдите в браузере по адресу http://localhost или по IP адресу либо имени хоста, на котором вы запустили контейнеры.
- Просмотреть все логи можно при помощи команды
docker compose logs -f -n 0(после команды можно указать имя сервиса для вывода логов только по нему), либо в папке ./qow/logs/. - Обновить образ QoW можно следующими командами:
docker compose down docker compose pull docker compose up -d
- Если необходимо выполнить какую-либо шелл-команду в системе контейнера, то для этого в docker существует команда exec, имена сервисов указаны в файле compose (qow-app, mongo, mosquitto, nginx):
docker compose exec <service> <command>
- Все команды docker compose необходимо выполнять из папки, где находится файл
docker-compose.yml. - Перезапустить все сервисы или какой-то определенный сервис можно при помощи следующих команд:
# Имя сервиса в скобках опциональное, если необходимо перезапустить все сервисы - выполните команду без указания сервиса docker compose down [qow/caddy/mongo/mosquitto] docker compose up -d [qow/caddy/mongo/mosquitto] # Или если вы изменяли какие-то внешние файлы конфигов docker compose up -d --force-recreate [qow/caddy/mongo/mosquitto]
- Просмотреть текущие логи определенного сервиса можно при помощи следующей команды:
# Вывод логов в реальном времени с выводом в начале последних 10 строк (аргументы аналогичные команде tail) docker compose logs -f -n 10 [qow/caddy/mongo/mosquitto]
При необходимости использования своих внешних файлов конфигурации в контейнерах (например, для Caddy и настройки HTTPS, или для QoW и использования кастомных настроек в application.properties), а также для более простого обновления конфигурации docker-compose, возможно создание файла переопределения docker-compose.override.yml, который должен находиться рядом с основным файлом docker-compose.yml. Ниже представлен файл для примера, можно взять его за основу и оставить только необходимые части:
# Docker Compose override file for custom configuration files
# Docker automatically merges this file with docker-compose.yml if present.
# To use custom configs, ensure the host files exist and run: docker compose up -d
services:
mosquitto:
# replace embedded default config with external file
configs: !reset []
volumes:
- ./mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro
caddy:
# replace embedded default config with external file
configs: !reset []
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
# enable HTTPS by specifying your domain
environment:
- SERVER_NAME=example.com
qow:
# replace embedded default config with external file
volumes:
- ./qow/application.properties:/home/qow/application.properties:ro
# add license key or custom timezone here for easier docker-compose.yml update
environment:
- NETAMS_LICENSE_KEY=LICENSE_KEY
- TZ=Europe/Moscow
Для примера, если вам необходимо использовать свой файл настроек QoW сервера, application.properties, который лежит по пути ./qow/application.properties (относительно самого файла docker-compose.yml) и задать свой лицензионный ключ, то для этого нужно в блоке services оставить только блок qow с необходимыми параметрами, а остальные блоки убрать, в итоге должен получиться такой файл:
services:
qow:
volumes:
- ./qow/application.properties:/home/qow/application.properties:ro
environment:
- NETAMS_LICENSE_KEY=LICENSE_KEY
После редактирования файла перезапустите контейнеры, для которых вы изменили настройки. Данный ovwerride-файл будет автоматически объединен с основным файлом docker-compose при запуске, и параметры, заданные в нем, переопределят дефолтные параметры. Учтите, что при задании внешних файлов обязательно их наличие в системе, иначе контейнеры просто не запустятся.
В остальном система QoW, запущенная в Docker контейнере почти не отличается от обычной системы, развернутой из образа или вручную, и документация для неё применима также и к данному варианту развертывания.