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

По умолчанию все модули имеют между собой связь средствами 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

* с поддержкой LoRaWAN

8420/tcp

* c поддержкой BLE позиционирования

8520/tcp


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

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

  1. Удалить старые версии пакетов Docker Engine (если были установлены ранее) . Docker, запущенный через snap, должен быть удален!

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

    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
  3. Установить последние версии пакетов Docker Engine

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

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

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


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

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

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

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

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

  4. Скачать и распаковать архив в папку rtls (где <version> версия ПО, которую требуется установить, например v5.0) , <repo-user> имя пользователя для доступа к ресурсам репозитория РТЛС. В процессе выполнения команды curl потребуется ввести пароль для пользователя <repo-user>

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

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

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

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

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

    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 с полученными параметрами подключения

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

  4. Скачать и распаковать архив в папку rtls (где <version> версия ПО, которую требуется установить, например v5.0) , <repo-user> имя пользователя для доступа к ресурсам репозитория РТЛС. В процессе выполнения команды curl потребуется ввести пароль для пользователя <repo-user>

    mkdir rtls
    cd rtls
    export RTLS_VERSION=<version>
    curl -u <repo-user> -v -L https://repo.rtlsnet.ru/repository/rtls-public/srv/release/$RTLS_VERSION/RTLS-compose-$RTLS_VERSION.tar.gz -o rtls.tar.gz
    tar -zxvf rtls.tar.gz
    rm rtls.tar.gz
  5. Загрузить образы в локальное хранилище

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

    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> имя контейнера)

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

    docker images
  11. Запустить ПО в зависимости от необходимой конфигурации

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

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

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

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

    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. После старта сервисов должны быть доступны пользовательские интерфейсы, где <ip> адрес машины, на которой развернуто ПО РТЛС

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

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

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

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


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

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

    cd rtls
    docker compose stop

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

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


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

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

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

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

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

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

    mkdir rtls
    cd rtls
    export RTLS_VERSION=<version>
    curl -u <repo-user> -v -L https://repo.rtlsnet.ru/repository/rtls-public/srv/release/$RTLS_VERSION/RTLS-compose-$RTLS_VERSION.tar.gz -o rtls.tar.gz
    tar -zxvf rtls.tar.gz
    rm rtls.tar.gz
  6. Скопировать сохраненное состояние БД в новую рабочую директорию

    cp -R ../rtls_bup/postgres/pgdata ./postgres/
  7. * Загрузить со страницы с описанием релиза скрипт update.sql для обновления БД и положить в папку rtls/postgres, если скрипт отсутствует на странице описания релиза, обновление БД не требуется

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

    docker compose up -d postgres
  9. * Запустить процедуру обновления БД, заменить update.sql на правильное название файла, если оно отличается

    docker compose exec -ti postgres psql -d postgres -U rtls_pu -f /var/lib/postgresql/data/update.sql
  10. Скопировать конфигурацию emxq контейнера (если исходная версия ПО РТЛС v5.x и были дополнительные настройки интеграции в EMQX в процессе работы, иначе можно пропустить)

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

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

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

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

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

    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
  14. Скопировать данные о картографических слоях, созданных в предыдущей версии ПО в рабочую папку

    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/
  15. Перезапустить контейнер сервера приложений

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