Indeed Key Server
Indeed Key Server (Key Server) — это сервер, необходимый для работы мобильного приложения Indeed Key. С помощью Key Server отправляются push-уведомления и устанавливается связь с Core Server.
Связь с мобильным приложением Indeed Key осуществляется по протоколу HTTP или HTTPS.
При использовании SSL-соединения необходим корневой сертификат и
сертификат проверки подлинности веб-сервера. При создании сертификата
для Key Server в Common Name укажите имя или IP сервера, к
которому настроен доступ для приложения Indeed Key в теге
ServerUrl
конфигурационного файла сервера Key Server. Если в CN
указан IP-адрес, то он должен быть без протокола и порта.
Для записи событий сервера необходима отдельная база данных PostgreSQL.
Создание базы данных и сервисной учетной записи
Key Server поддерживает работу с базой PostgreSQL.
Подробнее о создании базы данных и сервисной учетной записи вы можете узнать в разделе Хранилище данных.
После создания базы данных (после первого запроса) можно уменьшить права для пользователя. Достаточно права db_owner для созданной базы данных.
Установка и настройка Indeed Key Server
Прежде чем перейти к установке и настройке Key Server, ознакомьтесь с системными требованиями.
Чтобы установить Key Server на сервере с операционной системой Linux, выполните следующие действия:
Откройте файл am/.env и в переменной
COMPOSE_PROFILES
добавьте значениеindeed-key-server
.Откройте конфигурационный файл am/haproxy.docker-compose.yml и раскомментируйте следующие строки.
В блоке
depends_on
:indeed-key
В блоке
ports
:"${INDEED_KEY_HTTPS_PORT}:7443"
"${INDEED_KEY_HTTPS_PORT_EXTERNAL}:8443"
Откройте конфигурационный файл am/haproxy/haproxy.cfg и раскомментируйте следующие строки с параметром
backend IK_Backend
.default_backend IK_Backend
backend IK_Backend
server docker indeed-key:5443 check inter 5000ms ssl verify required ca-file trusted_ca.crt
Откройте конфигурационный файл am/indeed-key/app-settings.json и в разделе
Server
в параметреUrl
укажите URL-адрес для подключения к Key Server.Для параметра
{port}
укажите значение переменнойINDEED_KEY_HTTPS_PORT_EXTERNAL
, заданное в файле am/.env.Пример
"Server": {
"Url": "http(s)://[Server address]:{port}",
"Logon": {
"Delay": "00:05:00"
},ИнформацияKey Server должен быть доступен с мобильного телефона.
Запустите контейнер с приложением с помощью команды
sudo docker-compose up -d
.
Настройка событий сервера
Установка и настройка осуществляется на Log Server.
В качестве хранилища можно использовать все способы хранения, которые поддерживает Log Server.
Отслеживать события можно следующими способами:
- При хранении в базе данных — сторонними средствами мониторинга или с помощью SQL-запросов.
- При использовании Syslog — сторонними средствами мониторинга с поддержкой Syslog.
В текущей версии Indeed AM просмотр событий Key Server с помощью Management Console не поддерживается.
Чтобы настроить события Key Server
Откройте файл am/ls/clientApps.config и найдите строчку
<Target Id="DbTargetSqlIndeedKey" Type="pgsql" />
, гдеDbTargetSqlIndeedKey
— это название конфигурационного файла в папке am/ls/targets.Откройте файл am/ls/targets/DbTargetSqlIndeedKey.config и в строке
ConnectionString
укажите следующие данные:Server
— DNS/IP-адрес сервера с базой данных PostgreSQL.Database
— имя базы данных.Port
— порт подключения.User ID
— имя пользователя, который имеет полные права для базы данных Database.Password
— пароль пользователя.
Пример
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>server=[database host address];port=5432;user id=[database service account];password=[database service password];database=[log server]</ConnectionString>
</Settings>Откройте конфигурационный файл сервера Log Server am/ls/clientApps.config.
Раскомментируйте блок
<Application Id="akc" SchemaId="akcSchema">
.Пример
<Application Id="akc" SchemaId="akcSchema">
<ReadTargetId>DbTargetSqlIndeedKey</ReadTargetId>
<WriteTargets>
<TargetId>DbTargetSqlIndeedKey</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>- В тегах
ReadTargetId
указывается идентификатор хранилища, откуда будет осуществляться чтение событий. - В блоке
WriteTargets
, в тегахTargetId
, указывается идентификатор хранилища, куда будет осуществляться запись событий. - Идентификаторы заданы в теге
Targets
, конфигурационные файлы для каждого типа находятся в папке am/ls/targets/ с соответствующим именем. - При использовании собственного клиентского сертификата в
CertificateThumbprint
указывается отпечаток клиентского сертификата Core Server.
- В тегах
При необходимости использовать дополнительное хранилище данных, укажите его в секции
Targets
:Пример
<Targets>
...
<Target Id="sqlTargetAM" Type="pgsql"/>
</Targets>
Если в качестве хранилища событий вы используете базу данных, выполните настройку подключения к базе в файле am/ls/targets/DbTargetSqlIndeedKey.config.
Для событий Key Server необходимо использовать отдельную базу данных.
Сервис очистки старых данных
В файле am/indeed-key/app-settings.json можно задать параметры сервиса очистки старых данных.
Пример
"CleanAkData": {
"Enabled": true,
"FirstRunTime": "00:00",
"Interval": "1.00:00:00",
"AkDataLifeTime": "1.00:00:00"
}
Описание атрибутов примера
Имя атрибута | Описание | Значение | Значение по умолчанию | Минимально допустимое значение |
---|---|---|---|---|
Enabled | Флаг включения сервиса | true , false | true | Отсутствует |
FirstRunTime | Время первого запуска сервиса | Строка в формате времени hh:mm | 00:00 (полночь) | Отсутствует |
Interval | Интервал запуска сервиса | Временной интервал | 1.00:00:00 (24 ч) | 00:10:00 |
AkDataLifeTime | Время жизни данных | Временной интервал | 1.00:00:00 (24 ч) | 00:10:00 |
Включить/Отключить шифрование конфигурационного файла
В терминале перейдите в каталог с утилитой для шифрования am/protection.
cd /am/protection
Выдайте права для запуска скрипта
protector.sh
.sudo chmod 500 protector.sh
Чтобы зашифровать конфигурационные файлы, запустите скрипт
protector.sh
с параметромprotect
.sudo bash ./protector.sh protect
Чтобы расшифровать конфигурационные файлы, запустите скрипт
protector.sh
с параметромunprotect
.sudo bash ./protector.sh unprotect
Проверка состояния сервера
Для проверки рабочего состояния контейнера в Docker используйте метод Healthcheck:
http(s)://<dns_имя_сервера>:<порт>/healthcheck/isHealthy
На странице отображается следующая информация о состоянии компонента:
- статус компонента Key Server, время обработки запроса к нему;
- статус последнего запроса;
- список ошибок при наличии.
Пример результата проверки
{
"Entries": {
"Storage": {
"Data": {
"HealthCheckStatus": {
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-03-17T11:07:55.9606294+00:00",
"CheckDuration": "00:00:00.0014040"
}
},
"Description": null,
"Duration": "00:00:00.0000052",
"Exception": null,
"Status": 2,
"Tags": []
}
},
"Status": 2,
"TotalDuration": "00:00:00.0003921"
}
Сбор логов
Информация по включению логирования и сбору логов компонента Key Server находится в разделе Сбор логов серверных компонентов.