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

Ручная установка системы

подсказка

В большинстве случаев используйте установку через Docker Compose – она проще и автоматизирует все шаги, описанные ниже. Ручная установка через docker run нужна, когда веб-приложение и транспортный сервер требуется разнести на разные хосты или необходим тонкий контроль над запуском каждого контейнера.

Развёртывание системы вручную состоит из следующих этапов:

  • получение дистрибутива приложения в виде Docker-образов компонентов;
  • создание базы данных на существующем сервере СУБД;
  • подготовка конфигурации;
  • запуск Docker-контейнера веб-приложения;
  • запуск Docker-контейнера транспортного сервера.

Предварительные требования​

  • машина или сервер с установленной системой контейнеризации для запуска веб-приложения;
  • отдельная машина или сервер с установленной системой контейнеризации для запуска транспортного сервера, если он используется;
  • сервер СУБД и учётная запись.

Системные требования описаны в статье Системные требования.

Получение дистрибутива​

Дистрибутив приложения «ФинГрад — Корпоративное казначейство» поставляется в виде Docker-образов отдельных компонентов:

  • веб-приложение;
  • транспортный сервер.

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

Команда для загрузки Docker-образа:

docker pull registry.fingrad.com/{component}:{version}

где:

  • {component} – имя компонента дистрибутива. Допустимые значения:
    • web – веб-приложение;
    • transport-server – транспортный сервер.
  • {version} – номер версии дистрибутива.

Например, для загрузки версии 6.0.0.41569 используются команды:

docker pull registry.fingrad.com/web:6.0.0.41569
docker pull registry.fingrad.com/transport-server:6.0.0.41569

Выполнение команд требует сетевого доступа к реестру образов https://registry.fingrad.com и серверу аутентификации https://registry-auth.fingrad.com.

Передача дистрибутива в сеть без доступа в Интернет​

Для установки «ФинГрад — Корпоративное казначейство» в изолированном контуре без доступа к Интернету необходимо выполнить следующие действия:

  1. на любой машине с доступом в Интернет и установленной системой контейнеризации скачать Docker-образы компонентов дистрибутива (см. Получение дистрибутива);

  2. на этой же машине выполнить команды в терминале для сохранения образов в виде файлов-архивов:

    docker save registry.fingrad.com/{component}:{version} | gzip > fingrad-{component}.tar.gz
  1. перенести сформированные .tar.gz файлы на соответствующие целевые машины в изолированном контуре. Например, при помощи инструментов scp, cp или rsync;

  2. на целевой машине выполнить команду в терминале для загрузки образа из соответствующего файла-архива:

    docker load -i {archive-name}.tar.gz

    Например, для веб-приложения:

    docker load -i fingrad-web.tar.gz

    Для транспортного сервера:

    docker load -i fingrad-transport-server.tar.gz

База данных​

ПО «ФинГрад — Корпоративное казначейство» в своей работе использует базу данных определённой структуры. Создать её можно при помощи утилиты, входящей в дистрибутив приложения. Если необходимо, чтобы транспортный сервер использовал отдельную БД, изолированную от основной для веб-приложения, создайте обе. Требуется существующий сервер СУБД и его учётная запись.

примечание

Если сервер PostgreSQL ещё не развёрнут и не настроен, см. Установка и настройка PostgreSQL.

Шаблон команды терминала для создания БД:

docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:{version} \
../DbManager.dll /action=create /dbms={dbms} /server={server} [/port={port}] /user={user} /password={password} /database={database}

где:

  • {version} – номер версии дистрибутива;
  • {dbms} – тип используемой СУБД:
    • postgresql – PostgreSQL;
    • mssql – Microsoft SQL Server;
  • {server} – адрес сервера СУБД;
  • {port} – порт подключения к СУБД, указывается при необходимости;
  • {user} – имя учётной записи СУБД;
  • {password} – пароль учётной записи СУБД;
  • {database} – имя создаваемой базы данных.

Параметр {port} указывать необязательно, если он стандартный для СУБД.

Пример команд для создания БД с названием MyCompany на сервере СУБД с IP-адресом 10.0.0.123 под учётной записью login / pass.

Для PostgreSQL:

docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:6.0.0.41569 \
../DbManager.dll /action=create /dbms=postgresql /server="10.0.0.123" /port=5432 /user=login /password=pass /database=MyCompany
примечание

Для PostgreSQL DbManager подключается под учётной записью с правами SUPERUSER. О создании такой роли см. Установка и настройка PostgreSQL → После настройки.

Для Microsoft SQL Server:

docker container run --rm -it \
--entrypoint dotnet \
registry.fingrad.com/web:6.0.0.41569 \
../DbManager.dll /action=create /dbms=mssql /server="10.0.0.123" /user=login /password=pass /database=MyCompany

В результате успешного создания БД окончание вывода команды будет иметь вид:

Создание базы данных...
Завершение работы...

Настройка ОС Astra Linux​

Компоненты приложения «ФинГрад — Корпоративное казначейство» при аварийных завершениях формируют дампы и отчёты для дальнейшего анализа нештатных ситуаций и инцидентов. Операционная система Astra Linux по умолчанию запрещает необходимую для этого трассировку процессов. При активном запрете запуск приложения невозможен.

Чтобы разрешить трассировку, на каждом хосте, где запускаются Docker-контейнеры приложения, необходимо отключить блокировку командой:

sudo astra-ptrace-lock disable

После выполнения команды перезагрузите машину. В результате параметр kernel.yama.ptrace_scope примет значение 1 (разрешена трассировка дочерних процессов родительским).

Проверить текущее значение параметра можно командой:

cat /proc/sys/kernel/yama/ptrace_scope

Подробнее об ограничении использования системного вызова ptrace см. официальную документацию Astra Linux по управлению параметрами ядра.

Конфигурация компонентов​

Подготовка рабочих каталогов​

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

Пути к рабочим каталогам можно выбрать самостоятельно. В примерах ниже используются следующие пути:

  • веб-приложение: ~/fingrad/web;
  • транспортный сервер: ~/fingrad/ts.

Структура рабочего каталога:

<рабочий-каталог>/
├── config/ # конфигурационный файл (usersettings.json)
├── certs/ # сертификаты для взаимодействия с банками
└── crypto/
├── keys/ # ключевые контейнеры клиентских сертификатов
└── data/ # данные КриптоПро, сохраняемые между перезапусками контейнера

Все каталоги нужно создать вручную до первого запуска контейнера. Пример команды для веб-приложения:

mkdir -p ~/fingrad/web/config ~/fingrad/web/certs ~/fingrad/web/crypto/keys ~/fingrad/web/crypto/data

Для транспортного сервера:

mkdir -p ~/fingrad/ts/config ~/fingrad/ts/certs ~/fingrad/ts/crypto/keys ~/fingrad/ts/crypto/data

Примечание: Docker создаёт недостающие каталоги при монтировании сам, но его аналоги, например, Podman – нет.

Затем в каталог config/ помещается файл usersettings.json (см. ниже).

Права на каталоги настраивать не нужно: при запуске контейнер сам назначает их владельцем пользователя, от имени которого работает приложение.

Строка подключения к БД​

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

Ниже приведены примеры, где:

  • 10.0.0.123 – IP-адрес сервера СУБД;
  • 5432 – порт сервера СУБД;
  • MyCompany – имя базы данных;
  • login – имя учётной записи СУБД;
  • pass – пароль учётной записи СУБД.

PostgreSQL:

Driver={PostgreSQL Unicode};Server=10.0.0.123;Port=5432;Database=MyCompany;Uid=login;Pwd=pass;sslmode=prefer;timeout=15;commlog=1;persist security info=True;

В примере приведена типовая строка подключения к БД через PostgreSQL ODBC Driver (psqlODBC). Краткая справка: https://www.connectionstrings.com/postgresql-odbc-driver-psqlodbc/.

Microsoft SQL Server:

Driver={ODBC Driver 18 for SQL Server};language=Russian;server=10.0.0.123;connection timeout=30;network library=dbmssocn;packet size=16384;encrypt=yes;trustservercertificate=yes;uid=login;pwd=pass;Failover_Partner=;Database=MyCompany

В примере приведена типовая строка подключения к БД через Microsoft ODBC Driver for SQL Server. Описание параметров строки подключения приведено в документации Microsoft: https://learn.microsoft.com/sql/connect/odbc/dsn-connection-string-attribute.

Конфигурация веб-приложения​

Перед запуском веб-приложения необходимо создать файл usersettings.json по пути:

<рабочий-каталог>/config/usersettings.json

Папка с этим файлом в дальнейшем будет примонтирована к Docker-контейнеру.

Пример содержимого usersettings.json:

{
"DbSettings": {
"ConnectionString": "{connection-string}"
}
}

где {connection-string} – строка подключения к БД (см. Строка подключения к БД).

подсказка

Параметры можно задавать и через переменные окружения контейнера, не создавая usersettings.json: например, строка подключения веб-приложения – DbSettings__ConnectionString. Именно так настраивается автоматизированная установка через Docker Compose.

Запуск веб-приложения​

При наличии БД для подключения и файла конфигурации веб-приложение «ФинГрад — Корпоративное казначейство» запускается как Docker-контейнер. Шаблон команды:

docker container run --name fingrad-web \
-v <рабочий-каталог>/config/:/app/Fingrad/web/config/ \
-v <рабочий-каталог>/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v <рабочий-каталог>/crypto/data/:/var/opt/cprocsp/users/app/ \
-v <рабочий-каталог>/certs/:/home/app/certs/ \
--init \
--restart unless-stopped \
--detach \
-p <порт-хоста>:8080 \
registry.fingrad.com/web:{version}

В шаблоне необходимо заменить:

  • <рабочий-каталог> на путь к рабочему каталогу на хосте (с каталогом config/ и файлом usersettings.json);
  • <порт-хоста> на порт хоста, по которому приложение будет доступно.

Пример команды для запуска приложения с рабочим каталогом по пути ~/fingrad/web/ на 80-м порту (HTTP):

docker container run --name fingrad-web \
-v ~/fingrad/web/config/:/app/Fingrad/web/config/ \
-v ~/fingrad/web/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v ~/fingrad/web/crypto/data/:/var/opt/cprocsp/users/app/ \
-v ~/fingrad/web/certs/:/home/app/certs/ \
--init \
--restart unless-stopped \
--detach \
-p 80:8080 \
registry.fingrad.com/web:6.0.0.41569

При успешном выполнении всех этапов установки системы приложение будет доступно на хосте по адресу http://localhost.

Конфигурация транспортного сервера​

Перед запуском транспортного сервера необходимо создать файл usersettings.json по пути:

<рабочий-каталог>/config/usersettings.json

Файл должен содержать строку подключения к БД и секретный ключ транспортного сервера.

Секретный ключ формируется пользователем самостоятельно. Такое же значение необходимо будет указать в настройках банковских шлюзов в веб-интерфейсе приложения.

Пример содержимого usersettings.json:

{
"ConnectionSettings": {
"DbConnectionString": "{connection-string}"
},
"AuthSettings": {
"TransportServerToken": "{token}"
}
}

где:

Запуск транспортного сервера​

При наличии БД для подключения и файла конфигурации транспортный сервер «ФинГрад — Корпоративное казначейство» запускается как Docker-контейнер. Шаблон команды:

docker container run --name fingrad-transport-server \
-v <рабочий-каталог>/config/:/app/config/ \
-v <рабочий-каталог>/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v <рабочий-каталог>/crypto/data/:/var/opt/cprocsp/users/app/ \
-v <рабочий-каталог>/certs/:/home/app/certs/ \
--init \
--restart unless-stopped \
--detach \
-p <порт-хоста>:8080 \
registry.fingrad.com/transport-server:{version}

Пример команды для запуска приложения с конфигурацией по пути ~/fingrad/ts/ на 80-м порту (HTTP):

docker container run --name fingrad-transport-server \
-v ~/fingrad/ts/config/:/app/config/ \
-v ~/fingrad/ts/crypto/keys/:/var/opt/cprocsp/keys/app/ \
-v ~/fingrad/ts/crypto/data/:/var/opt/cprocsp/users/app/ \
-v ~/fingrad/ts/certs/:/home/app/certs/ \
--restart unless-stopped \
--init \
--detach \
-p 80:8080 \
registry.fingrad.com/transport-server:6.0.0.41569

Первый вход​

Вход в систему сразу после развёртывания возможен по учётной записи администратора, имеющейся в новой БД по умолчанию: root / root.

Далее см. Вход в систему.

Настройка транспортного сервера

Если используется транспортный сервер, после входа в систему необходимо указать параметры подключения к нему (см. раздел Настройка транспортного сервера).