Предварительная установка дополнительного ПО на сервере

Для запуска Offline ELM на сервере требуется произвести установку дополнительного ПО:

1. Установить последнюю стабильную версию Docker. Установка производится с помощью официальной документации, в зависимости от используемой операционной системы.

2. Установить последнюю стабильную версию Docker Compose. Установка производится с помощью официальной документации, в зависимости от используемой операционной системы.

Дальнейшие инструкции предполагают, что пользователь обладает правами взаимодействия с Docker и запуска Docker Compose без повышения привилегий командой sudo. Для формирования таких прав у текущего пользователя рекомендуется изучить следующий раздел официальной документации Docker.

Получение файлов для запуска Offline ELM 

Набор файлов, необходимых для запуска Offline ELM и сервисов мониторинга:


Рисунок 1 — Скачивание файлов для запуска Offline ELM с ownCloud

Для скачивания архива можно использовать утилиту wget

# Скачивание архива
wget https://cloud.eltex-co.ru/index.php/s/GzJfChMAVhkqINI/download -O offline.zip

# Распаковка
unzip offline.zip
Archive:  offline.zip
   creating: elm-offline-1.7-2/
   creating: elm-offline-1.7-2/Docs/
 extracting: elm-offline-1.7-2/Docs/Offline ELM. Описание пользовательского интерфейса. Версия 1.7.pdf  
 extracting: elm-offline-1.7-2/Docs/Offline ELM. Руководство по эксплуатации. Версия 1.7.pdf  
 extracting: elm-offline-1.7-2/changelog.md  
 extracting: elm-offline-1.7-2/elm-offline-data-1.7-2.tar.gz  
 extracting: elm-offline-1.7-2/elm-offline-images-1.7-2.tar.gz
 extracting: elm-offline-1.7-2/elm-monitoring-data-1.7.tar.gz   
 extracting: elm-offline-1.7-2/install-offline.sh     
 extracting: elm-offline-1.7-2/elm_technical_support.sh

Архив должен быть загружен на целевой сервер и распакован в любой удобной для дальнейшей эксплуатации директории.

Установка Offline ELM

1.Скачать файлы для запуска (см. раздел "Получение файлов для запуска Offline ELM"). Для запуска Offline ELM достаточно следующих файлов:

    1. elm-offline-data-1.7-х.tar.gz

    2. elm-offline-images-1.7-х.tar.gz
    3. install-offline.sh

2. Для упрощенного запуска Offline ELM поставляется скрипт инсталляции install-offline.sh. Перед запуском скрипта необходимо выдать ему права на исполнение:

sudo chmod +x ./install-offline.sh

3. Пример запуска скрипта для распаковки архива с конфигурационными файлами и загрузки образов.

$ sudo ./install-offline.sh --elm-images elm-offline-images-1.7-2.tar.gz --elm-data elm-offline-data-1.7-2.tar.gz
INFO: Checking required commands...
INFO: Validating arguments...
INFO: Checking ELM images is correct...
INFO: Checking ELM data is correct...
INFO: Loading Offline ELM images from 'elm-offline-images-1.7-2.tar.gz'.
Loaded image: elmi-offline-cli:1.7-2
Loaded image: elmi-offline-web-ui:1.7-2
Loaded image: pcscd:alpine3.23
Loaded image: psql-elm:17.2
Loaded image: nginx-prometheus-exporter:1.4.0
Loaded image: elmi-offline-server:1.7-2
Loaded image: elmi-offline-init:1.7-2
INFO: Offline ELM image tag '1.7-2' has been loaded.
INFO: Extracting Offline ELM configuration files from 'elm-offline-data-1.7-2.tar.gz' to current directory.
INFO: Set 'ELM_TAG' value '1.7-2' in file '/home/user/elm-offline-1.7-2/elm-offline-data-1.7-2/.env'.
INFO: Offline ELM configuration files have been extracted to '/home/user/elm-offline-1.7-2/elm-offline-data-1.7-2'.
INFO: Offline ELM installation completed successfully.

В результате были загружены образы и распакованы конфигурационные файлы в папку elm-offline-data-1.7-2.

elm-offline-data-1.7-2
├── config
│   ├── alloy
│   │   └── config.alloy
│   └── telegraf
│       └── telegraf.conf
├── data
│   └── elmi-offline-web-ui
│       └── ssl
│           ├── autocreated-cert.crt
│           └── autocreated-cert.key
├── docker-compose-cli.yml
├── docker-compose-db.yml
├── docker-compose-remote.yml
├── docker-compose.yml
├── docker-compose-peeper.yml
└── .env

Подготовка к запуску Offline ELM завершена.

Запуск Offline ELM

1. Перейдите в папку с конфигурационными файлами Offline ELM (как правило elm-offline-data-1.7-х), где расположен файл docker-compose.yml.

2. Запустите Offline ELM командой:

$ docker compose up -d

3. Запуск может занять до 3 минут. После завершения процесса убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "healthy").

Offline ELM успешно запущен. Чтобы получить доступ к интерфейсу Offline ELM и подключить лицензируемые продукты, воспользуйтесь инструкцией ниже.

Установка бандла лицензирования

Для работы лицензирования в Offline ELM необходимо установить файл лицензий (бандл). Установка может быть выполнена через web-интерфейс или с помощью CLI. Порядок установки описан в разделе "Установка бандла Offline ELM".

Подключение к Offline ELM

  1. Подключение к Offline ELM для конфигурирования:
    1. Для получения доступа к web-интерфейсу Offline ELM необходимо ввести в адресной строке браузера ссылку https://<ip_address>:8092, где <ip_address> — это адрес модуля Offline ELM. Порт, на котором принимает входящие запросы web-сервис Offline ELM настраивается в .env-файле через переменную ELM_WEB_UI_PORT, по умолчанию используется порт 8092.

      Данные для авторизации от имени дефолтного пользователя:

      1. Логин: "admin"
      2. Пароль: "password"
    2. Подключиться к CLI Offline ELM можно с помощью команды из папки с конфигурационными файлами (как правило elm-offline-images-1.7-х): 
      $ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli
      (Подробнее в разделе Интерфейс командной строки CLI Offline ELM ).
  2. Адрес для подключения устройств и ПО к Offline ELM https://<ip_address>:8099 для их лицензирования. Порт 8099 используется по умолчанию, если вы указали другой порт в переменной ELM_SERVER_PORT, следует указывать его.

Альтернативные варианты запуска

Конфигурирование в ручном режиме

Для запуска Offline ELM требуется произвести следующие шаги:

1. Перейти в директорию с содержимым распакованного архива, полученного в пункте "Получение файлов для запуска Offline ELM".

2. Распаковать архив elm-offline-data-1.7-х.tar.gz с файлами, необходимыми для работы Offline ELM.

3. Открыть файл .env любым удобным текстовым редактором.

4. Для переменной ELM_TAG указать версию Offline ELM:

ELM_TAG="1.7-2"

5. Загрузить образы Offline ELM из архива на хост:

$ docker load < elm-offline-images-1.7-2.tar.gz

6. Проверить загруженные образы:

$ docker images 
REPOSITORY                  TAG          IMAGE ID       CREATED         SIZE
elmi-offline-cli            1.7-2        35d018319362   2 weeks ago     725MB
elmi-offline-init           1.7-2        662cca1f2620   2 weeks ago     17.4MB
elmi-offline-server         1.7-2        178f8dd5d1e2   2 weeks ago     1.15GB
elmi-offline-web-ui         1.7-2        d8a3fdc38fff   2 weeks ago     51.7MB
pcscd                       alpine3.23   c33d10a745a9   6 weeks ago     27MB
psql-elm                    17.2         f47806d827b0   9 months ago    435MB
nginx-prometheus-exporter   1.4.0        02fc5cbeb403   19 months ago   13.7MB

7. Убедиться, что токен вставлен и был обнаружен системой:

$ lsusb | grep "Aktiv Rutoken ECP"
Bus 001 Device 008: ID 0a89:0030 Aktiv Rutoken ECP

8. Для взаимодействия с токеном используется сервис pcscd, который запускается в контейнере elm-token. Если на хостовой системе или гипервизоре установлен демон pcscd, его необходимо полностью отключить, в том числе и автозапуск при перезагрузке. 

# service pcscd status
● pcscd.service - PC/SC Smart Card Daemon
     Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-26 14:11:30 +07; 1s ago
TriggeredBy: ● pcscd.socket
       Docs: man:pcscd(8)
   Main PID: 1639189 (pcscd)
      Tasks: 5 (limit: 38220)
     Memory: 1.1M
        CPU: 12ms
     CGroup: /system.slice/pcscd.service
             └─1639189 /usr/sbin/pcscd --foreground --auto-exit

июл 26 14:11:30 user-pc systemd[1]: Started PC/SC Smart Card Daemon.


# systemctl stop pcscd.socket       # Останавливаем сервис, если он запущен
# systemctl disable pcscd.socket    # Отключаем автозапуск

Подготовка к запуску Offline ELM завершена.

Запуск второй ноды Offline ELM

Для обеспечения высокой доступности сервиса лицензирования можно запустить два экземпляра Offline ELM.
В продукте ELM используются два понятия для обозначения экземпляров модулей: нода (node) и инсталляция (Instance ID). В контексте продукта данные понятия равнозначны, но чаще используется понятие "нода". По умолчанию при запуске модуля Offline ELM используется значение node1, а для подключения второй ноды необходимо в переменных окружения ELM_INSTANCE_ID в файле .env указать значение node2. 

Рекомендуется запускать резервную ноду на отдельном физическом сервере. Запуск нескольких нод на одной операционной системе невозможен.

1. Перейдите в директорию с содержимым распакованного архива, который был предварительно скачан в разделе "Получение файлов для запуска Offline ELM" . 

2. Распакуйте архив elm-offline-data-1.7-х.tar.gz с файлами, необходимыми для работы Offline ELM.

3. Откройте файл .env любым удобным текстовым редактором.

4. Для переменной ELM_TAG укажите тег 1.7-х. 

ELM_TAG="1.7-2"

5. Установите в переменной ELM_INSTANCE_ID номер инстанса (ноды) текущей инсталляции Offline ELM. Для второй ноды необходимо установить "ELM_INSTANCE_ID=node2":

ELM_INSTANCE_ID задается при первом запуске Offline ELM и не должен меняться в течение работы. При необходимости смены значения ELM_INSTANCE_ID требуется полная переустановка Offline ELM.

ELM_INSTANCE_ID=node2

6. Для мониторинга состояния контейнеров Telegraf необходимо предоставить ему доступ к сокету Docker демона, для этого необходимо передать id группы пользователей docker. Установите в переменной DOCKER_GID значение группы пользователя docker. Узнать id группы docker можно командой:

$ getent group docker| cut -d: -f3 
999
DOCKER_GID="999"

7. Установите другие переменные окружения при необходимости. Полный список переменных окружения Offline ELM 1.7 .

8. Загрузите образы Offline ELM из архива на хост:

$ docker load < elm-offline-images-1.7-х.tar.gz

9. Проверьте загруженные образы:

$ docker images 
REPOSITORY                  TAG          IMAGE ID       CREATED         SIZE
elmi-offline-cli            1.7-2        35d018319362   2 weeks ago     725MB
elmi-offline-init           1.7-2        662cca1f2620   2 weeks ago     17.4MB
elmi-offline-server         1.7-2        178f8dd5d1e2   2 weeks ago     1.15GB
elmi-offline-web-ui         1.7-2        d8a3fdc38fff   2 weeks ago     51.7MB
pcscd                       alpine3.23   c33d10a745a9   6 weeks ago     27MB
psql-elm                    17.2         f47806d827b0   9 months ago    435MB
nginx-prometheus-exporter   1.4.0        02fc5cbeb403   19 months ago   13.7MB

Для каждой ноды Offline ELM должен быть свой токен. Токены взаимозаменяемые между нодами. Запуск более чем одной ноды Offline ELM с одним токеном невозможен. 

10. Убедитесь, что токен вставлен и был обнаружен системой. 

$ lsusb | grep "Aktiv Rutoken ECP"
Bus 001 Device 008: ID 0a89:0030 Aktiv Rutoken ECP

11. При наличии установленного демона pcscd убедитесь, что он остановлен:

# service pcscd status
● pcscd.service - PC/SC Smart Card Daemon
     Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-26 14:11:30 +07; 1s ago
TriggeredBy: ● pcscd.socket
       Docs: man:pcscd(8)
   Main PID: 1639189 (pcscd)
      Tasks: 5 (limit: 38220)
     Memory: 1.1M
        CPU: 12ms
     CGroup: /system.slice/pcscd.service
             └─1639189 /usr/sbin/pcscd --foreground --auto-exit

июл 26 14:11:30 user-pc systemd[1]: Started PC/SC Smart Card Daemon.
# systemctl stop pcscd.socket

12. Перейдите в папку с конфигурационными файлами Offline ELM, где расположен файл docker-compose.yml.

13. Запустите Offline ELM командой:

$ docker compose up -d

14. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "healthy"):

$ docker compose ps

15. Зайдите в CLI Offline ELM и убедитесь в корректности настройки второй ноды, выполнив команду "show elm", которая покажет номер текущей ноды и версию.

elmi> show elm 
ELM host:
1. Instance: node2
Hostname: ELM standalone
Build version: Version 1.7, build 2, date 14-02-2025 03:40:45 +0000
Status: work
Last updated: 1740539202 (2025-02-26 03:06:42)
Next update: 1740539502 (2025-02-26 03:11:42)
Certificate info: 

	Valid from: 1740538865 (2025-02-26 03:01:05)
	Expiry: 1740563825 (2025-02-26 09:57:05)
	Token serial number: 429b3c49        


elmi> 

Запуск сервисов Offline ELM с удаленной базой данных

1. Распакуйте архив с данными на удаленном сервере, где будет запускаться база данных.

2. Установите переменные ELM_TAG, ELM_DB_HOST и ELM_DB_PORT в .env файле. Иначе интерфейс из контейнера elmi-offline-db не будет проброшен на хост, и база данных не будет доступна.

ELM_TAG="1.7-2"
ELM_INSTANCE_ID=node1
ELM_DB_HOST=192.168.1.2
ELM_DB_PORT=5432

3. Запустите контейнеры БД командой. При этом, если это первый запуск, контейнер elmi-offline-db может иметь состояние unhealthy — это корректное поведение. Состояние healthy установится после подключения к базе данных Offline ELM (контейнер elmi-offline-db).

$ docker compose -f docker-compose-db.yml up -d

4. Перейдите в папку с конфигурационными файлами Offline ELM на другом сервере, где расположен файл docker-compose-remote.yml. 

5. Установите необходимые значения переменных окружения ELM_TAG, ELM_DB_CONNECT_HOST и ELM_DB_CONNECT_PORT:

ELM_TAG="1.7-2"
ELM_INSTANCE_ID=node1
ELM_DB_CONNECT_HOST=192.168.1.2
ELM_DB_CONNECT_PORT=5432

6. Запустите Offline ELM командой:

$ docker compose -f docker-compose-remote.yml up -d

7. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "healthy"). Запуск может занимать до 3х минут.

Остановка Offline ELM 

Для остановки Offline ELM требуется произвести следующие шаги:

 1. Перейти в директорию с файлами установленной версии Offline ELM (как правило elm-offline-data-1.7-х).

 2. Выполнить команду:

$ docker compose down --remove-orphans

Обновление Offline ELM

1. Скачать файлы для запуска (см. раздел "Получение файлов для запуска Offline ELM"). Для обновления Offline ELM достаточно следующих файлов:

    1. elm-offline-data-1.7-х.tar.gz

    2. elm-offline-images-1.7-х.tar.gz
    3. install-offline.sh # Важно скачать обновленный скрипт установки для версии 1.7

2. Перед запуском скрипта необходимо выдать ему права на исполнение:

$ sudo chmod +x ./install-offline.sh

3. Пример запуска скрипта для обновления Offline ELM

В примере показано обновление Offline ELM с версии 1.6-4 до 1.7-2. Скрипт также поддерживает обновление в пределах версии 1.7, например с 1.7-1 до 1.7-2.

$ sudo ./install-offline.sh --elm-images elm-offline-images-1.7-2.tar.gz --elm-data elm-offline-data-1.7-2.tar.gz --elm-dir /home/user/elm-offline-1.6-4/elm-offline-data-1.6-4

Перед обновлением скрипт остановит Offline ELM и создаст резервную копию установленной версии. По умолчанию архив с резервной копией сохраняется в директории backup, которая создается на один уровень выше директории установленной версии Offline ELM. Затем скрипт обновит образы и конфигурационные файлы, сохранит настройки и запустит обновленный Offline ELM.

sudo ./install-offline.sh --elm-images elm-offline-images-1.7-2.tar.gz --elm-data elm-offline-data-1.7-2.tar.gz --elm-dir /home/user/elm-offline-1.6-4/elm-offline-data-1.6-4
INFO: Checking required commands...
INFO: Validating arguments...
INFO: Checking ELM images is correct...
INFO: Checking ELM data is correct...
INFO: Stopping Offline ELM services before creating backup.
[+] Running 14/14
 ✔ Container elmi-offline-web-ui           Removed                                                                                                                                                                                        0.3s 
 ✔ Container elmi-offline-telegraf         Removed                                                                                                                                                                                        0.2s 
 ✔ Container elmi-offline-nginx-exporter   Removed                                                                                                                                                                                        0.3s 
 ✔ Container elmi-offline-alloy            Removed                                                                                                                                                                                       10.1s 
 ✔ Container elmi-offline-server           Removed                                                                                                                                                                                        0.4s 
 ✔ Container elm-token                     Removed                                                                                                                                                                                        0.1s 
 ✔ Container elmi-offline-init             Removed                                                                                                                                                                                       10.1s 
 ✔ Container elmi-offline-db               Removed                                                                                                                                                                                        0.2s 
 ✔ Network elmi-offline-network            Removed                                                                                                                                                                                        0.1s 
 ✔ Network elm-monitoring-network          Removed                                                                                                                                                                                        0.2s 
 ✔ Volume elm-offline-data-16-4_elm-pcscd  Removed                                                                                                                                                                                        0.0s 
 ✔ Volume elmi-offline-healthcheck-server  Removed                                                                                                                                                                                        0.0s 
 ✔ Volume elm-offline-data-16-4_alloy      Removed                                                                                                                                                                                        0.0s 
 ✔ Volume elmi-offline-healthcheck-cli     Removed                                                                                                                                                                                        0.0s 
INFO: Creating backup archive '/home/user/elm-offline-1.6-4/backup/backup-offline-elm-2026-10-05_05-05-29.tar.gz'.
INFO: Backup archive created.
INFO: Loading Offline ELM images from 'elm-offline-images-1.7-2.tar.gz'.
Loaded image: elmi-offline-cli:1.7-2
Loaded image: elmi-offline-web-ui:1.7-2
Loaded image: pcscd:alpine3.23
Loaded image: psql-elm:17.2
Loaded image: nginx-prometheus-exporter:1.4.0
Loaded image: elmi-offline-server:1.7-2
Loaded image: elmi-offline-init:1.7-2
INFO: Offline ELM image tag '1.7-2' has been loaded.
INFO: Extracting Offline ELM configuration files from 'elm-offline-data-1.7-2.tar.gz' to '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4'.
INFO: Set 'ELM_TAG' value '1.7-2' in file '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4/elm-offline-data-1.7-2/.env'.
INFO: Existing Offline ELM installation detected in '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4'.
INFO: Migrating environment variables from '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4/.env' to '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4/elm-offline-data-1.7-2/.env'.
INFO: Migrated 'COMMON_TZ'.
INFO: Migrated 'ELM_INSTANCE_ID'.
INFO: Migrated 'ELM_DB_LOG_LEVEL'.
INFO: Migrated 'ELM_KERNEL_LOG_LEVEL'.
INFO: Migrated 'ELM_DEBUG_LOG_LEVEL'.
INFO: Migrated 'ELM_ENGINE_LOG_LEVEL'.
INFO: Migrated 'ELM_NETWORKING_LOG_LEVEL'.
INFO: Migrated 'ELM_SECURITY_LOG_LEVEL'.
INFO: Migrated 'ELM_HOSTS_LOG_LEVEL'.
INFO: Migrated 'ELM_USERS_LOG_LEVEL'.
INFO: Migrated 'ELM_PCSCD_LOG_LEVEL'.
INFO: Migrated 'ELM_CLI_KERNEL_LOG_LEVEL'.
INFO: Migrated 'ELM_CLI_DEBUG_LOG_LEVEL'.
INFO: Migrated 'ELM_CLI_DB_LOG_LEVEL'.
INFO: Migrated 'ELM_CLI_NETWORKING_LOG_LEVEL'.
INFO: Migrated 'ELM_SERVER_HOST'.
INFO: Migrated 'ELM_SERVER_PORT'.
INFO: Migrated 'ELM_WEB_UI_PORT'.
INFO: Migrated 'ELM_DB_HOST'.
INFO: Migrated 'ELM_DB_PORT'.
INFO: Updating existing installation files in '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4'.
INFO: Removing temporary installation directory '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4/elm-offline-data-1.7-2'.
INFO: Existing installation in '/home/user/elm-offline-1.6-4/elm-offline-data-1.6-4' has been replaced successfully.
[+] Running 11/11
 ✔ Network internal                          Created                                                                                                                                                                                      0.0s 
 ✔ Network elmi-offline-network              Created                                                                                                                                                                                      0.0s 
 ✔ Volume "elm-offline-data-16-4_elm-pcscd"  Created                                                                                                                                                                                      0.0s 
 ✔ Volume "elmi-offline-healthcheck-server"  Created                                                                                                                                                                                      0.0s 
 ✔ Volume "elmi-offline-healthcheck-cli"     Created                                                                                                                                                                                      0.0s 
 ✔ Container elm-token                       Started                                                                                                                                                                                      0.4s 
 ✔ Container elmi-offline-db                 Started                                                                                                                                                                                      0.4s 
 ✔ Container elmi-offline-nginx-exporter     Started                                                                                                                                                                                      0.4s 
 ✔ Container elmi-offline-init               Started                                                                                                                                                                                      0.5s 
 ✔ Container elmi-offline-server             Started                                                                                                                                                                                      0.6s 
 ✔ Container elmi-offline-web-ui             Started                                                                                                                                                                                      0.9s 

INFO: Waiting for Offline ELM services to become healthy (timeout 120s)...
INFO: All Offline ELM services are running successfully.
INFO: Removing obsolete Offline ELM files.
INFO: Offline ELM installation completed successfully.

При успешном обновлении скрипт выводит сообщение "INFO: Offline ELM installation completed successfully". После этого вновь будет доступна авторизация в web-интерфейсе и получение лицензии. 

Ручное обновление Offline ELM в пределах версии 1.7

Рекомендуемый способ обновления описан в разделе "Обновление Offline ELM" и выполняется с помощью скрипта install-offline.sh. Ручной способ, описанный ниже, предназначен только для обновления в пределах версии 1.7. Для перехода с версии 1.6-х на 1.7 необходимо использовать скрипт. Пример демонстрирует обновление с версии 1.7-1 на 1.7-2:

1. Скачать архив с образами новой версии по инструкции Получение файлов для запуска Offline ELM . Наименование архива elm-offline-images-1.7-х.tar

2. Перенести архив с образами на хост, на котором запущен Offline ELM.

3. Выполнить загрузку образов из архива на хост. 

$ docker load < elm-offline-images-1.7-2.tar.gz

4. Перейти в папку, где запущен Offline ELM (как правило elm-offline-data-1.7-х). Остановить Offline ELM командой:

$ docker compose down --remove-orphans

5. Произвести резервное копирование всех рабочих файлов в текущей директории:

$ zip -q -r elm-offline-data-1.7_backup.zip elm-offline-data-1.7-1/

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

6. В файле .env указать новое значение переменной ELM_TAG:

ELM_TAG="1.7-2"

7. Для удобства можно изменить имя папки, в которой находятся конфигурационные файлы Offline ELM. Например следующим образом:

$ mv elm-offline-data-1.7-1 elm-offline-data-1.7-2

Или не указывать конкретную версию Offline ELM, чтобы в будущем обновлять сервис, не изменяя имени директории.

$ mv elm-offline-data-1.7-1 elm-offline-data

8. Запустить Offline ELM командой:

$ docker compose up -d

9. После запуска убедиться, что все Docker-контейнеры сервисов Offline ELM запустились корректно (имеют статус "healthy"):

10. Запустить Offline ELM CLI и, введя команду "show elm" в разделе "main" CLI, убедиться, что версия Offline ELM сервисов стала 1.7-2:

elmi> show elm 
ELM host:
1. Instance: node1
Hostname: ELM standalone
Build version: Version 1.7, build 2, date 14-02-2025 03:40:45 +0000
Status: work
Last updated: 1740545279 (2025-02-26 04:47:59)
Next update: 1740545579 (2025-02-26 04:52:59)
Certificate info: 

	Valid from: 1740538865 (2025-02-26 03:01:05)
	Expiry: 1740563825 (2025-02-26 09:57:05)
	Token serial number: 429b3c49        


elmi> 

Обновление Offline ELM завершено.

Дополнительная информация

Просмотр логов сервисов Offline ELM

Логи сервисов Offline ELM можно разбить на две группы:

Данные логи расположены в директории log в рабочем каталоге Offline ELM в следующей иерархии: 

log/
├── elmi-cli
│   ├── db.log
│   ├── debug.log
│   ├── kernel.log
│   └── networking.log
└── elmi-server
    ├── commerce.log
    ├── db.log
    ├── debug.log
    ├── engine.log
    ├── hosts.log
    ├── kernel.log
    ├── networking.log
    ├── resources.log
    ├── security.log
    └── users.log

2 directories, 14 files

Логи разбиты по файлам, в каждый файл пишутся логи соответствующего функционала Offline ELM: 

Для каждого файла отрабатывает ротация, которая настраивается параметрами "ELM_LOG_FILE_MAX_SIZE" и "ELM_LOG_FILE_MAX_COUNT" в .env файле в рабочем каталоге Offline ELM. 

Для просмотра логов можно использовать инструменты Docker или плагина Docker Compose:

$ docker logs elmi-offline-init
Fri Jul 26 15:26:17 +07 2024: Setting elmi-offline config files
Fri Jul 26 15:26:17 +07 2024: Setting elmi-offline-cli config files
Fri Jul 26 15:26:17 +07 2024: ELM_DB_USER variable has changed
Fri Jul 26 15:26:17 +07 2024: ELM_DB_PASSWORD variable has changed
Fri Jul 26 15:26:27 +07 2024: Connecting to database ... 1
Fri Jul 26 15:26:27 +07 2024: Successfully connected to database
Fri Jul 26 15:26:27 +07 2024: Setting instanceID variable value
Fri Jul 26 15:26:27 +07 2024: Setting instanceID variable value
Fri Jul 26 15:26:27 +07 2024: Docker containers elmi-offline is ready to start

Список переменных окружения Offline ELM

Название параметраОписание параметраЗначение по умолчаниюОбязательность параметраВарианты значений/Примечания
ELM_TAG

Версия используемых ELM образов в формате "<версия ELM>-<номер сборки>"

-Да1.7/1.6-1 и т. д.
ELM_INSTANCE_IDОпределяет основной или резервный модульnode1Нетnode1/node2
ELM_SERVER_HOSTIP-адрес хоста, на котором будет работать Offline ELM (контейнер elmi-offline-server)0.0.0.0Нет-
ELM_SERVER_PORTНомер порта для подключения к Offline ELM (контейнер elmi-offline-server)8099Нет-
ELM_DB_HOSTIP-адрес, на котором будет поднят порт для подключения к БД (контейнер elmi-offline-db)127.0.0.1Нет-
ELM_DB_PORTНомер порта, на котором развернута БД (контейнер elmi-offline-db)5432Нет-
ELM_DB_CONNECT_HOSTИмя хоста (или IP-адрес) для подключения соответствующего приложения к БД (к контейнеру elmi-offline-db)elmi-offline-dbНет-
ELM_DB_CONNECT_PORTНомер порта для подключения соответствующего приложения к БД (к контейнеру elmi-offline-db)5432Нет-
ELM_DB_USERИмя служебного пользователя БДelmНет-
ELM_DB_PASSWORDПароль служебного пользователя БД ELM-Нет-
EXTERNAL_MODEФлаг настройки использования заранее созданной docker-сети, используется для задания параметра external в настройках сети docker-compose.ymlfalseНетtrue/false
ELM_THREAD_LIMITМаксимальное количество одновременно поддерживаемых сессий10Нет-
ELM_QUEUE_LIMITМаксимальный размер очереди клиентов, ожидающих подключения100Нет-
ELM_DOS_FILTER_MAX_REQUESTS_PER_SECONDМаксимальная частота запросов в секунду от одного хоста, превышение которой приведет к блокировке50Нет-
ELM_DOS_FILTER_DELAY_MSМаксимальное время отклика хоста, превышение которого приведет к блокировке200Нет-
ELM_LOG_FILE_MAX_SIZEМаксимальный размер одного log-файла в МБ10Нет-
ELM_LOG_FILE_MAX_COUNTМаксимальное количество log-файлов в ротации4Нет-
ELM_KERNEL_LOG_LEVELУровень логирования логов типа "kernel" для сервисов ELMinfoНетinfo/debug
ELM_NETWORKING_LOG_LEVELУровень логирования логов типа "networking" для сервисов ELMinfoНетinfo/debug
ELM_DEBUG_LOG_LEVELУровень логирования логов типа "debug" для сервисов ELMoffНетinfo/debug
ELM_ENGINE_LOG_LEVELУровень логирования логов типа "engine" для сервисов ELMinfoНетinfo/debug
ELM_DB_LOG_LEVELУровень логирования логов типа "db" для сервисов ELMinfoНетinfo/debug
ELM_USERS_LOG_LEVELУровень логирования логов типа "users" для сервисов ELMinfoНетinfo/debug
ELM_SECURITY_LOG_LEVELУровень логирования логов типа "security" для сервисов ELMinfoНетinfo/debug
ELM_HOSTS_LOG_LEVELУровень логирования логов типа "hosts" для сервисов ELMinfoНетinfo/debug
ELM_COMMERCE_LOG_LEVELУровень логирования логов типа "commerce" для сервисов ELMinfoНетinfo/debug
ELM_CLI_KERNEL_LOG_LEVELУровень логирования логов типа "kernel" для CLI ELMerrorНетerror/debug
ELM_CLI_DEBUG_LOG_LEVELУровень логирования логов типа "debug" для CLI ELMoffНетoff/debug
ELM_CLI_DB_LOG_LEVELУровень логирования логов типа "db" для CLI ELMerrorНетerror/debug
ELM_CLI_NETWORKING_LOG_LEVELУровень логирования логов типа "networking" для CLI ELMerrorНетerror/debug

ELM_PCSCD_LOG_LEVEL

Уровень логирования логов для демона pcscdoffНетoff/debug
COMMON_TZЧасовой пояс, используемый для работы всех сервисовUTCНет-
ELM_WEB_UI_PORTПорт web-интерфейса на Docker-хосте 8092Нет-

Удаление Offline ELM

Для полного удаления Offline ELM с хоста требуется произвести следующие шаги:

 1. Перейти в директорию с файлами установленной версии Offline ELM.

 2. Выполнить команду:

$ docker compose down --remove-orphans --rmi all --volumes 

В результате выполнения команды Offline ELM будет остановлен. В случае, если на момент выполнения команды он еще функционировал, будут удалены служебные сети, хранилища и образы в Offline.

3. Удалить оставшиеся от Offline ELM каталоги и служебные файлы:

$ sudo rm -rf elm-offline-data-1.7-х

Offline ELM полностью удален с хоста.