Первая установка и обновление ПО LocIT

Структура ПО РТЛС

По умолчанию все модули имеют между собой связь средствами docker с возможностью установки каждого модуля на отдельной машине

Подготовка к развертыванию системы РТЛС

Минимальные требования (по умолчанию требования указаны для конфигурации UWB + LE + SRV и развертывании в пределах одной машины и могут меняться в зависимости от используемых модулей, конфигурации инфраструктуры, кол-ва меток, частоты обновления данных от меток, сроков хранения данных и т.д. ):

OS

Ubuntu Server 20.04, Ubuntu Server 22.04, Debian 11

CPU

4 cores CPU, 2GHz

RAM

4 Gb

FS

50 Gb

Порты

443/tcp, 5683/udp


Подготовка ОС к установке ПО РТЛС

Все команды по конфигурации ОС и установке пакетов производятся под пользователем с административными правами (здесь и далее пользователь appuser). Все команды здесь и далее приведены для Ubuntu Server 20.04. Инструкции по установке на другие версии OS: docker и docker-compose

  1. Пользователя, под которым будет производится управление ПО РТЛС, добавить в группу docker

    1 sudo usermod -aG docker appuser
  2. Повторно авторизоваться под пользователем appuser для применения прав доступа

  3. Удалить старые версии пакетов Docker Engine (если были установлены ранее)

    1 sudo apt-get remove docker docker-engine docker.io containerd runc
  4. Добавить репозиторий

    1 2 3 4 5 6 7 8 9 10 11 12 13 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. Установить последние версии пакетов Docker Engine

    1 2 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  6. Проверить , что пакеты установились успешно

    1 2 docker version docker compose version

Чистая установка ПО РТЛС

Все команды производятся под пользователем appuser

  1. Получить от РТЛС Логин и Пароль для доступа к репозиторию.

  2. Авторизоваться в docker с полученными параметрами подключения

    1 2 3 4 docker login repo.rtlsnet.ru:5000 Username: *** Password: **** Login Succeeded
  3. На странице доступных релизов найти архив с конфигурацией нужной версии RTLS releases

  4. Скачать и распаковать архив в папку rtls (где <version> версия ПО, которую требуется установить, например v4.3.8)

    1 2 3 4 5 6 mkdir rtls cd rtls export RTLS_VERSION=<version> curl -L https://repo.rtlsnet.ru/repository/raw-rtls/releases/$RTLS_VERSION/RTLS-compose-$RTLS_VERSION.tar.gz -o rtls.tar.gz tar -zxvf rtls.tar.gz rm rtls.tar.gz
  5. Запустить ПО в зависимости от необходимой конфигурации

    1. запуск с поддержкой UWB

      1 docker compose up -d
    2. запуск с поддержкой получения данных по LoRa

      1 docker compose --profile actobus up -d
    3. Запуск с поддержкой BLE (включая получение данных по LoRa)

      1 docker compose --profile ble up -d
  6. После полного старта контейнера SRV статус должен перейти в healthy

    1 2 3 4 5 6 7 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c58f0cc80b8e repo.rtlsnet.ru:5000/emqx:4.4.2 "/usr/bin/docker-ent…" 43 hours ago Up 5 minutes (healthy) 1883/tcp, 4369-4370/tcp, 5369/tcp, 6369-6370/tcp, 8081/tcp, 8083-8084/tcp, 8883/tcp, 11883/tcp, 0.0.0.0:18083->18083/tcp, :::18083->18083/tcp rtls-emqx-1 af20240c2d95 repo.rtlsnet.ru:5000/srv:v5.0 "/entrypoint.sh -c s…" 44 hours ago Up 5 minutes (healthy) 0.0.0.0:9993->9993/tcp, :::9993->9993/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:8300->8081/tcp, :::8300->8081/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp rtls-srv-1 f16b0ad37ef3 repo.rtlsnet.ru:5000/le:v5.0 "/entrypoint.sh '-f …" 44 hours ago Up 5 minutes 0.0.0.0:5683->5683/udp, :::5683->5683/udp, 0.0.0.0:17320-17321->17320-17321/udp, :::17320-17321->17320-17321/udp, 0.0.0.0:8320->8320/tcp, :::8320->8320/tcp rtls-le-1 d95d0ae66074 repo.rtlsnet.ru:5000/postgres:9.6 "/entrypoint.sh post…" 44 hours ago Up 5 minutes (healthy) rtls-postgres-1
  7. После старта сервисов должны быть доступны пользовательские интерфейсы, где <ip> адрес машины, на которой развернуто ПО РТЛС

    1. https://<ip>/CToolUI - интерфейс конфигурации

    2. https://<ip>/BA-UI - пользовательский интерфейс

    3. http://<ip>:8420 - ресурсы actobus (при запуске ПО с профилем actobus и ble)

    4. http://<ip>:8520 - ресурсы BLE (при запуске ПО с профилем ble)


Загрузка контейнеров через процедуру import

  1. Получить от РТЛС Логин и Пароль для доступа к репозиторию.

  2. Авторизоваться в docker с полученными параметрами подключения

    1 2 3 4 docker login repo.rtlsnet.ru:5000 Username: *** Password: **** Login Succeeded
  3. На странице доступных релизов найти архив с конфигурацией нужной версии RTLS releases

  4. Скачать и распаковать архив в папку rtls (где <version> версия ПО, которую требуется установить, например v4.3.8)

    1 2 3 4 5 6 mkdir rtls cd rtls export RTLS_VERSION=<version> curl -L https://repo.rtlsnet.ru/repository/raw-rtls/releases/$RTLS_VERSION/RTLS-compose-$RTLS_VERSION.tar.gz -o rtls.tar.gz tar -zxvf rtls.tar.gz rm rtls.tar.gz
  5. Загрузить образы в локальное хранилище

    1 docker compose pull
  6. Сохранить образ в файл (где <file_name> имя контейнера, <version> - версия контейнера, например v5.0).

    1 2 docker save -o <file_name>.tar repo.rtlsnet.ru:5000/name:<version> gzip <file_name>.tar
  7. Повторить процедуру выгрузки для всех необходимых контейнеров

    1. с поддержкой UWB: postgres, srv, le, emqx, emqx_init

    2. с поддержкой LoRa: postgres, srv, le, emqx, emqx_init, redis, actobus

    3. поддержкой BLE (включая получение данных по LoRa): postgres, srv, le, emqx, emqx_init, actobus, ble-solver, redis

  8. Скопировать в домашнюю директорию пользователя appuser на машине, где развертывается ПО архивы

  9. Импортировать каждый контейнер в docker (где <file_name> имя контейнера)

    1 docker load -i <file_name>.tar.gz
  10. Проверить результат импорта (в списке должны появиться версии контейнеров, экспортированные ранее)

    1 docker images

Обновление ПО ( сохранением данных)

  1. Посмотреть текущие версии ПО

    1 docker ps
  2. Получить от РТЛС скрипт update.sql для обновления струкруры БД до нужной версии

  3. Выключить все контейнеры

    1 2 cd rtls docker compose stop
  4. Сделать бекап текущего состояния через изменение имени рабочей директории rtls

    1 2 cd ../ mv rtls rtls_bup
  5. Скачать и распаковать архив в папку rtls (где <version> версия ПО, которую требуется установить, например v4.3.8)

    1 2 3 4 5 6 mkdir rtls cd rtls export RTLS_VERSION=<version> curl -L https://repo.rtlsnet.ru/repository/raw-rtls/releases/$RTLS_VERSION/RTLS-compose-$RTLS_VERSION.tar.gz -o rtls.tar.gz tar -zxvf rtls.tar.gz rm rtls.tar.gz
  6. Скопировать сохраненное состояние БД в новую рабочую директорию

    1 cp -R ../rtls_bup/postgres/pgdata ./postgres/
  7. Положить полученный от разработчиков update.sql файл в папку rtls/postgres

  8. Запустить контейнер postgres

    1 docker compose up -d postgres
  9. Запустить процедуру обновления БД

    1 docker compose exec -ti postgres psql -d postgres -U rtls_pu -f /var/lib/postgresql/data/update.sql
  10. Скопировать конфигурацию emxq контейнера

    1 cp -R ../rtls_bup/emqx/data/* srv/emqx/data/
  11. Запустить ПО в зависимости от необходимой конфигурации

    1. запуск с поддержкой UWB

      1 docker compose up -d
    2. запуск с поддержкой получения данных по LoRa

      1 docker compose --profile actobus up -d
    3. Запуск с поддержкой BLE (включая получение данных по LoRa)

      1 docker compose --profile ble up -d
  12. Дождаться полного старта контейнера srv (статус healthy при опросе статуса контейнеров)

    1 2 3 4 5 6 7 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c58f0cc80b8e repo.rtlsnet.ru:5000/emqx:4.4.2 "/usr/bin/docker-ent…" 43 hours ago Up 5 minutes (healthy) 1883/tcp, 4369-4370/tcp, 5369/tcp, 6369-6370/tcp, 8081/tcp, 8083-8084/tcp, 8883/tcp, 11883/tcp, 0.0.0.0:18083->18083/tcp, :::18083->18083/tcp rtls-emqx-1 af20240c2d95 repo.rtlsnet.ru:5000/srv:v5.0 "/entrypoint.sh -c s…" 44 hours ago Up 5 minutes (healthy) 0.0.0.0:9993->9993/tcp, :::9993->9993/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:8300->8081/tcp, :::8300->8081/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp rtls-srv-1 f16b0ad37ef3 repo.rtlsnet.ru:5000/le:v5.0 "/entrypoint.sh '-f …" 44 hours ago Up 5 minutes 0.0.0.0:5683->5683/udp, :::5683->5683/udp, 0.0.0.0:17320-17321->17320-17321/udp, :::17320-17321->17320-17321/udp, 0.0.0.0:8320->8320/tcp, :::8320->8320/tcp rtls-le-1 d95d0ae66074 repo.rtlsnet.ru:5000/postgres:9.6 "/entrypoint.sh post…" 44 hours ago Up 5 minutes (healthy) rtls-postgres-1
  13. Скопировать данные о картографических слоях, созданных в предыдущей версии ПО в рабочую папку

    1 2 cp -R ../rtls_bup/srv/geoserver-data/data/rtls srv/geoserver-data/data/ cp -R ../rtls_bup/srv/geoserver-data/workspaces/rtls/site* srv/geoserver-data/workspaces/rtls/
  14. Перезапустить контейнер сервера приложений

    1 docker compose restart srv
  15. Авторизоваться в BA-UI и проверить, что загруженные ранее карты доступны для работы


Обновление ПО ( без сохранения данных)

  1. Выключить все контейнеры

    1 2 cd rtls docker compose stop

    Удалить папку rtls

    1 2 cd ../rtls rm -rf rtls
  2. Провести установку согласно инструкциям раздела Чистая установка ПО РТЛС