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

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

подсказка

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

Вручную нужно создать только каталог config/ и поместить в него файл appsettings.json (см. ниже). Остальные каталоги (certs/, crypto/keys, crypto/data) Docker создаст автоматически при первом запуске контейнера.

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

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

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

  • 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.

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

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

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

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

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

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

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

подсказка

Параметры можно задавать и через переменные окружения контейнера, не создавая appsettings.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}

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

  • <рабочий-каталог> на путь к папке с файлом appsettings.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.

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

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

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

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

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

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

{
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"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.

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

Примечание:

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

Для этого в веб-интерфейсе откройте раздел Настройки шлюзов, выберите Транспортный сервер и заполните поля:

  • Адрес – URL транспортного сервера. Если при запуске контейнера транспортного сервера был указан нестандартный порт, его также необходимо указать в адресе, например http://10.0.0.124:8081 или https://ts.company.local:8443.
  • Секретный ключ – значение, указанное в параметре TransportServerToken в файле конфигурации транспортного сервера (см. Конфигурация транспортного сервера).