Docker

Уровень сложности: средний

Требования

Установите Docker и Docker Compose.

Прежде чем настраивать все остальное, настройте новую переменную среды $PASSOFFICE_HOME, указывающую на каталог, где будут находиться конфигурация, журналы и файлы данных. Убедитесь, что каталог существует и предоставлено соответствующее разрешение.

Рекомендуется использовать папку /opt/passoffice:

mkdir /opt/passoffice
export PASSOFFICE_HOME=/opt/passoffice

Для того, чтобы переменная PASSOFFICE_HOME была доступна во время следующей терминальной сессии, выполните команду:

echo "export PASSOFFICE_HOME=/opt/passoffice" >> ~/.bashrc

Контейнеры PassOffice будут использовать следующие смонтированные папки для хранения постоянных данных:

Папки
Использование

$PASSOFFICE_HOME/data

Данные БД Postgres

$PASSOFFICE_HOME/logs

Логи сервера PassOffice

$PASSOFFICE_HOME/licence

Файлы лицензии

$PASSOFFICE_HOME/config

Файлы настроек

Подготовка к запуску

Загрузка Docker образов

Docker-образы PassOffice доступны по ссылке passoffice.ru/download

Для получения пароля доступа обратитесь к вашему поставщику или на почту [email protected]

  1. Скачайте docker-образы с файлового сервера по полученной ссылке на устройство, которое имеет доступ к Интернет. Вам требуются файлы passoffice-{version}.tar, wdm-{version}.tar , postgres-{version}-alpine.tar и nginx-{version}-alpine.tar.

  2. Скопируйте архивы с docker-образами на сервер PassOffice в папку $PASSOFFICE_HOME любым удобным способом.

  3. Перейдите в папку $PASSOFFICE_HOME и выполните импорт docker-образов из архивов, введя команды (вместо {version} укажите версию PassOffice):

cd $PASSOFFICE_HOME
docker load --input passoffice-{version}.tar
docker load --input wdm-{version}.tar
docker load --input postgres-{version}-alpine.tar
docker load --input nginx-{version}-alpine.tar

Настройка окружения

При помощи Docker Compose вы можете легко настроить, установить и обновить PassOffice на базе Docker.

  1. Создайте в папке $PASSOFFICE_HOME файл .env (вместо {wdm_version}, {passoffice_version}, {postgres_version}, {nginx_version} укажите номера версий программного обеспечения).

Вместо passoffice.yourdomain.ru укажите доменное имя для сервиса PassOffice.

# Licence Web Manager
WDM_VERSION={wdm_version}
WDM_HOSTNAME=lwm
WDM_PORT=7010

# PassOffice
PASSOFFICE_VERSION={passoffice_version}
PASSOFFICE_HOSTNAME=passoffice
PASSOFFICE_PORT=4201
PASSOFFICE_LWM_URL=http://${WDM_HOSTNAME}:${WDM_PORT}

# Nginx
NGINX_HOSTNAME=passoffice.yourdomain.ru
NGINX_VERSION={nginx_version}

# Database
POSTGRES_VERSION={postgres_version}
DB_HOST=postgres
DB_NAME=passoffice
DB_USER=passoffice
DB_PASSWORD=passoffice
  1. Создайте в папке $PASSOFFICE_HOME файл docker-compose.yml с следующим содержимым:

services:

  passoffice:
    image: 'passoffice/passoffice:${PASSOFFICE_VERSION}'
    restart: unless-stopped
    hostname: ${PASSOFFICE_HOSTNAME}
    depends_on:
      - lwm
      - postgres
      - nginx
    environment:
      DB_HOST: '${DB_HOST}'
      DB_NAME: '${DB_NAME}'
      DB_USER: '${DB_USER}'
      DB_PASSWORD: '${DB_PASSWORD}'
      LWM_URL: '${PASSOFFICE_LWM_URL}'
    expose:
      - ${PASSOFFICE_PORT}
    volumes:
      - './logs/passoffice:/var/log/passoffice' # PassOffice Logs
      - './licence:/app/bin/license' # PassOffice Licence File
      - '/tmp/passoffice:/app/bin/activemq-data/localhost/tmp_storage' # ActiveMQ Tmp Storage

  lwm:
    image: 'passoffice/wdm:${WDM_VERSION}'
    restart: unless-stopped
    hostname: ${WDM_HOSTNAME}
    volumes:
      - './logs/wdm:/wdm/Logs'
      - './licence:/wdm/Licence'
      - './licence/apc_c2v:/wdm/bin/apc_c2v_output'
    ports:
      - '${WDM_PORT}:${WDM_PORT}'
    command: bash -c 'service aksusbd start && sleep 3s && /wdm/bin/ApcWebDrvManagerConsole -port=${WDM_PORT} -delayedDrvCreation'
    devices:
      - /dev/bus/usb:/dev/bus/usb # Sentinel Hardlock

  nginx:
    image: 'nginx:${NGINX_VERSION}-alpine'
    restart: unless-stopped
    ports:
      - '443:443'
      - '80:80'
    environment:
      HOSTNAME: ${NGINX_HOSTNAME}
      PASSOFFICE_HOSTNAME: ${PASSOFFICE_HOSTNAME}
      PASSOFFICE_PORT: ${PASSOFFICE_PORT}
    volumes:
      - './config/nginx/templates/passoffice.conf.template:/etc/nginx/templates/default.conf.template:ro'
      - './config/nginx/certs:/etc/nginx/certs:ro'

  postgres:
    image: 'postgres:${POSTGRES_VERSION}-alpine'
    restart: unless-stopped
    environment:
      POSTGRES_USER: '${DB_USER}'
      POSTGRES_PASSWORD: '${DB_PASSWORD}'
      POSTGRES_DB: '${DB_NAME}'
    volumes:
      - './data:/var/lib/postgresql/data'
  1. Создайте папки для хранения конфигурационных файлов и сертификатов Nginx:

cd $PASSOFFICE_HOME
mkdir config && cd config
mkdir nginx && cd nginx
mkdir templates
mkdir certs
  1. Создайте в папке $PASSOFFICE_HOME/config/nginx/templates файл с именем passoffice.conf.template, который будет содержать следующий шаблон:

server {
    listen 80;
    server_name ${HOSTNAME};
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name ${HOSTNAME};

    ssl_certificate /etc/nginx/certs/${HOSTNAME}.crt;
    ssl_certificate_key /etc/nginx/certs/${HOSTNAME}.key;

    client_max_body_size 20M;

    location / {
        proxy_pass http://${PASSOFFICE_HOSTNAME}:${PASSOFFICE_PORT};
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
  1. Поместите в папку $PASSOFFICE_HOME/config/nginx/certs сертификаты и ключи SSL, необходимые для работы Nginx.

Лицензирование

Для получение файлов лицензии и/или ключа аппаратной защиты обратитесь к вашему поставщику или на почту [email protected]

Для схемы лицензирования PassOffice с использованием LWM (LicenceWebManager) доступны два варианта запуска сервера лицензирования LWM:

  • с использованием ключа аппаратной защиты Sentinel;

  • с использованием программной лицензии, которая генерируется с привязкой к аппаратному обеспечению сервера, на котором запускается система.

Для запуска сервера лицензирования LWM с использованием ключа аппаратной защиты Sentinel необходимо:

  • Установить ключ аппаратной защиты в USB-разъем сервера или выполнить проброс USB-over-IP при установке на виртуальную машину.

  • Проверить, что устройство отображается в списке USB устройств в выводе команды lsusb

  • Запросите файлы лицензии у вашего поставщика PassOffice или по почте [email protected].

После получения файлов лицензии перейдите в папку $PASSOFFICE_HOME/licence и скопируйте в нее файлы лицензии Licence.bin и HWLicence.bin любым удобным способом:

cd $PASSOFFICE_HOME
mkdir $PASSOFFICE_HOME/licence/
cp Licence.bin HWLicence.bin $PASSOFFICE_HOME/licence/

Запуск

  1. Убедитесь, что вы находитесь в папке с файлом docker-compose.yml и запустите сервер PassOffice:

cd $PASSOFFICE_HOME
docker compose up -d
  1. Для просмотра лога работы сервера PassOffice выполните команду:

docker compose logs -f
  1. Когда сервер PassOffice будет готов принимать входящие запросы, в логах появится надпись:

*************************************
     PassOffice Server is started     
*************************************
  1. Сервер PassOffice доступен через веб-браузер по адресу https://passoffice.yourdomain.ru

В случае возникновения проблем с запуском отправьте запрос на почту [email protected]

Остановка сервера

Убедитесь, что вы находитесь в папке с файлом docker-compose.yml и выполните команду:

docker compose down

Last updated

Was this helpful?