Перейти к основному содержимому

Docker

подсказка

Запуск PassOffice в виде Docker-контейнера доступен только для Linux.

Требования

Установите 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</td><td>Данные БД Postgres</td></tr><tr><td>PASSOFFICE_HOME/logsЛоги сервера PassOffice
PASSOFFICE_HOME/licence</td><td>Файлы лицензии</td></tr><tr><td>PASSOFFICE_HOME/configФайлы настроек

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

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

примечание

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

Для получения пароля доступа обратитесь к вашему поставщику или на почту support@passoffice.ru

  1. Скачайте docker-образы с файлового сервера по полученной ссылке на устройство, которое имеет доступ к Интернет. Вам требуются файлы passoffice-1.11.tar, wdm-version.tar , postgres-version-alpine.tar и nginx-version-alpine.tar.
  2. Скопируйте архивы с docker-образами на сервер PassOffice в папку $PASSOFFICE_HOME любым удобным способом.
  3. Перейдите в папку $PASSOFFICE_HOME и выполните импорт docker-образов из архивов, введя команды (вместо 1.11 укажите версию PassOffice):
cd $PASSOFFICE_HOME
docker load --input passoffice-1.11.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.
warning

Имена файлов сертификата и ключа SSL должны иметь формат passoffice.yourdomain.ru.crt и passoffice.yourdomain.ru.key, где passoffice.yourdomain.ru - ваше доменное имя для PassOffice.

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

примечание

Для получение файлов лицензии и/или ключа аппаратной защиты обратитесь к вашему поставщику или на почту support@passoffice.ru

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

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

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

  • Установить ключ аппаратной защиты в USB-разъем сервера или выполнить проброс USB-over-IP при установке на виртуальную машину.
  • Проверить, что устройство отображается в списке USB устройств в выводе команды lsusb
  • Запросите файлы лицензии у вашего поставщика PassOffice или по почте support@passoffice.ru.
Программная лицензия LWM

Для запуска сервера лицензирования LWM с использованием программной лицензии необходимо:

  • Перейти в папку с файлами PassOffice, выполнить команду генерации файла-слепка системы.
cd $PASSOFFICE_HOME
docker compose run lwm /wdm/bin/apc_c2v
cd licence/apc_c2v
  • В результате выполнения команды в папке $PASSOFFICE_HOME/licence/apc_c2v появится файл с расширением .ac2v.
  • Направьте результат вывода команды генерации и файл .ac2v вашему поставщику PassOffice или на почту support@passoffice.ru с запросом генерации файла лицензии.

После получения файлов лицензии перейдите в папку $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
примечание

В случае возникновения проблем с запуском отправьте запрос на почту support@passoffice.ru

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

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

docker compose down
осторожно

Аварийное завершение работы серверного приложения PassOffice может повлечь за собой некорректное отключение от ключа аппаратной защиты или, в худшем случае, повреждение данных в БД.