Для установки ПО PLAN-R необходимо выполнить следующую последовательность операций:
# docker --version
Docker version 24.0.7, build afdd53b
# docker-compose –version
Docker Compose version v2.23.3-desktop.2
Рекомендуемая структура каталогов:
Создайте структуру каталогов выполнив следующие команды.
# mkdir /opt/dppm && mkdir /opt/dppm/distr && mkdir /opt/dppm/postgres_dump
# cd /opt/dppm
# ls -lha
total 16K
drwxr-xr-x 4 root root 4.0K Mar 28 14:05 .
drwxr-xr-x 5 root root 4.0K Mar 28 14:05 ..
drwxr-xr-x 2 root root 4.0K Mar 28 14:05 distr
drwxr-xr-x 2 root root 4.0K Mar 28 14:05 postgres_dump
# mv <path*to_distr>/planr*<_version_>.zip /opt/dppm/distr/
# cd /opt/dppm/distr
# ls -la
total 2638584
drwxr-xr-x 2 root root 4096 Mar 28 14:05 .
drwxr-xr-x 4 root root 4096 Mar 28 14:05 ..
-rw-r-xr-x 1 root root 2701895280 Mar 28 14:05 planr_XXX.x.zip
# unzip -P <_password_> /opt/dppm/distr/planr\_<_version_>.zip -d /opt/dppm/
# ls -lha
Извлечение файлов приложения из архива
Распаковка образов PLAN-R
Успешный старт системы
Загрузка образов системы в Docker
Старт приложения PLAN-R
Работающее приложение PLAN-R
Бэкапирование предыдущих настроек
Перемещение скачанного архива в каталог
Извлечение файлов приложения из архива
Распаковка образов PLAN-R
Успешный старт системы
Файл переменных среды. env (Environment variables если используется Portainer) содержит в себе все настройки системы, которые применяются при старте. После изменения файла с переменными среды, для применения настроек, нужно выполнить ./start.sh для вступления изменений в силу. Описание всех переменных среды приведено в таблице ниже.
Таблица 4. Описание значений переменной COMPOSE_PROFILES
Название переменной | Пример | Описание |
1 | 2 | 3 |
DB_URL | postgresql://planr:planr@postgres/planr | Строка подключения к базе данных PostreSQL. |
MB_URL | amqp://planr:planr@rabbitmq/planr | Строка подключения к брокеру сообщений. |
REDIS_PASSWORD | redis_password | Пароль для аунтификации в redis |
REDIS_URL | redis://:${REDIS_PASSWORD}@redis:6379 | Строка подключения к кешу данных Redis. |
LOCAL_AUTH_ENABLED | true | Использовать локальную аутентификацию, для хранения паролей используется база данных. |
LDAP_AUTH_ENABLED | true | Использовать аутентификацию через Active Directory параметры подключения настраиваются через Web консоль администрирования (Подробнее в пункте 17 Интеграция с Active Directory) |
KERBEROS_ENABLED | true | Включение SSO авторизации через Kerberos (см. п. 8.4.4.2 Настройка SSO Kerberos) |
KERBEROS_CONF_PATH | /etc/krb5.conf | Путь к файлу конфигурации kr5.conf на сервере |
KERBEROS_KEYTAB_PATH | /etc/krb5_multi.keytab | Пусть к сгенерированому keytab файлу на сервере. (см. п. 8.4.4.2.1 Генерация keytab файла) |
API_KEY_AUTH_ENABLED | true | Включить аутентификацию с помощью API ключей, используется для доступа сторонних приложений. Для настройки перейдите в управление пользователями в Web консоли администрирования. (Подробнее в пункте 14.2 Управление API токенами) |
FILE_TOKEN_SECRET | GeneRaTeDComPaNyToken | Рандомная строка, используемая для подписи файлов, выгружаемых для пользователя. Должна быть сгенерирована и заменена при первоначальной настройке системы. |
FILE_TOKEN_EXPIRESIN | 24h | Время жизни токена |
JWT_SECRET | HggHdtd467Gg67 | Строка для подписи JWT токена аутентификации. Должна быть сгенерирована и заменена при первоначальной настройке системы. |
EXTEND_LOGS | true | Вывод в логи подробной информации о событиях. |
Настройка прокси (8.4.3 Настройка прокси) | ||
PROXY_PORT | 80 | Внешний порт сервера, который будет открыт при старте приложения |
PROXY_SSL_PORT | 443 | Внешний порт сервера, который будет открыть при старте для защищённого HTTPS соединения |
PROXY_SSL_ENABLED | false | Включение/выключение HTTPS на выбранном PROXY_SSL_PORT |
PROXY_CERT_PATH | /etc/ssl/planr.pem | Путь к сертификату, выданному удостоверяющим центром компании для HTTPS соединения. Для применения сертификата переменная PROXY_SSL_ENABLED должна содержать значение true |
PROXY_API_ENABLED | true | Включение/выключение доступа к публичному api по адресу FQDN/public-api |
PROXY_SWAGGER_ENABLED | true | Включение/выключение доступа к публичному api по адресу FQDN/swagger |
Масштабирование приложения | ||
MAIN_REPLICA | 1 | Количество реплик main контейнера |
ADMIN_REPLICA | 1 | Количество реплик admin контейнера |
PLANR_WORKER_REPLICA | 8 | Количество реплик planr-worker контейнера |
IMPEX_WORKER_REPLICA | 8 | Количество реплик impex-worker контейнера |
BACKUP_WORKER_REPLICA | 1 | Количество реплик backup-worker контейнера |
AAS_WORKER_REPLICA | 1 | Количество реплик aas-worker контейнера |
LOGGER_WORKER_REPLICA | 1 | Количество реплик logger-worker контейнера |
SCHEDULE_WORKER_REPLICA | 1 | Количество реплик schedule-worker контейнера |
NOTICE_WORKER_REPLICA | 1 | Количество реплик notice-worker контейнера |
STORAGE_WORKER_REPLICA | 1 | Количество реплик storage контейнера |
COSTR_WORKER_REPLICA | 1 | Количество реплик costr-worker контейнера |
DOCS_REPLICA | 1 | Количество реплик docs контейнера |
API_REPLICA | 1 | Количество реплик api контейнера |
KERBEROS_REPLICA | 1 | Количество реплик kerberos контейнера |
Настройки аутентификации через OIDC (8.4.4.1 Настройка аутентификации через OIDC на примере keycloack) | ||
OPENID_ISSUER | https://OIDC.DOMANIN.COM/realms/REALMNAME | Область авторизации. |
OPENID_AUTHORIZATIONURL | https://OIDC.DOMANIN.COM/realms/ REALMNAME/protocol/openid-connect/auth | URL-адрес для авторизации. |
OPENID_TOKENURL | https://OIDC.DOMANIN.COM/realms/ REALMNAME/protocol/openid-connect/token | URL-адрес для получения пользовательского токена. |
OPENID_USERINFOURL | https://OIDC.DOMANIN.COM/realms/ REALMNAME/protocol/openid-connect/userinfo | URL-адрес для получения информации о пользователе. |
OPENID_CLIENTID | planrclient | Идентификатор клиента. |
OPENID_CLIENTSECRET | lzkfjhwo3587hnafh | Секретный ключ клиента. |
OPENID_CALLBACKURL | http://PLANR-HOST/api/v1/auth/openid | URL-адрес обратного вызова, вызывается после процесса аутентификации. |
Для контроля запуска нужных сервисов используется переменная COMPOSE_PROFILES (https://docs.docker.com/compose/profiles/).
Например, если планируется использовать внешнюю базу данных, то её профиль необходимо исключить, тогда переменная примет следующие значения
Описание доступных профилей для старта указано в следующей таблице.
Таблица 5. Значение переменной COMPOSE_PROFILES
Значение переменной COMPOSE_PROFILES | Описание |
---|---|
1 | 2 |
all | Старт приложения со всеми сервисами входящими в комплект поставки в полной конфигурации. |
main | Старт только основного приложения PLAN-R, без внешних сервисов, в этом случаи нужно обеспечить подключение приложения к необходимым сервисам postgresql, redis, rabbitmq и/или системе логирования. |
kerberos | Профиль для старта сервиса, реализующего Kerberos SSO. |
postgres | Профиль для старта базы данных PostgreSQL из комплекта поставки. |
rabbitmq | Профиль для старта брокера сообщений RabbitMQ из комплекта поставки. |
redis | Профиль для старта кеша данных Redis из комплекта поставки. |
logging | Старт системы логирования (Fluent-bit -> Loki -> Grafana). |
Для создания бэкапов базы данных перед обновлением можно использовать несколько способов:
Создание бэкапа базы данных перед обновлением
Создание бэкапа базы данных перед обновлением
Для созданию бэкапов по расписанию необходимо добавить скрипт dump.sh в таблицу исполнения скриптов по расписанию crontab. Параметры запуска скрипта можно посмотреть, выполнив ./dump.sh -h.
Параметры запуска скрипта dump.sh
Пример использования скрипта в crontab приведен ниже. В данном случае скрипт выполняется каждую ночь в 3:00, делает бэкап в директорию /opt/dppm/postgres_dump/ с периодом ротации 14 (Это означает что в папке всегда будет хранится 14 актуальных бэкапов) и количеством файлов, которые не удалятся в любом случаи – 5.
Исполнение скрипта по расписанию
Для восстановления базы данных из бэкапа используем скрипт ./restore.sh. Пример использования скрипта по восстановлению базы данных из бэкапа представлен на рисунке ниже.
Восстановление базы из файла бэкапа
Настройка интеграции с OIDC провайдерами настраивается с помощью переменных среды в файле ./planr/.env. Описание необходимы переменных среды можно найти в таблице (см. Таблица 4. Описание значений переменной COMPOSE_PROFILES )
Заходим в keyclocak, создаём новый realm с именем Planr, либо используем уже существующий. Переходим в созданный или существующий Realm, нажимаем “Realm setting” и скачиваем файл “OpenID Endpoint Configuration”.
Скачивание файла OpenID Endpoint Configuration
Переходим во вкладку “Clients” и создаем клиента. Во вкладке Capability Setting обязательно включить “Client authentication”. В вкладке “Login Settings” обязательно указать Valid redirect URLs (тут нужно указать FQDN хоста, на котором развернут PLAN-R, например https://PLAN-R.ru/*).
Создание клиента для Planr realm
Включение Client authentication
Указание Valid redirect URLs
Переходим к настройкам переменных среды в файле ./planr/.env. Открываем ранее скачанный файл OpenID Endpoint Configuration.json (справа на скриншоте) и сопоставляем данные для авторизации с переменными среды. Значение переменной OPENDID_CLIENTID и OPENID_CLIENTSECRET можно взять из Keycloak, перейдя в нужный Realm, далее открыть созданного ранее клиента planr и перейти на вкладку “Сredentials”. Переменная OPENID_CALLBACKURL должна содержать FQDN хоста, на котором развернут PLAN-R в формате http://PLANR-HOST/api/v1/auth/openid.
После сохранения настроек применить изменения командой ./start.sh
Настройка переменных среды для для авторизации через OIDC
Если все настроено правильно при входе должна появиться иконка OpenID.
Кнопка OpenID.
Для включения SSO авторизации Kerberos нужно выполнить следующие условия:
При соблюдении всех условий при авторизации должна появится кнопка “kerberos”, при нажатии на которую происходит аутентификация по сеансу операционной системы.
Кнопка аунтификации по сеансу операционной системы
SPN (Service Principal Name) — уникальный идентификатор экземпляра сервиса. SPN используется аутентификацией Kerberos для сопоставления экземпляра сервиса с учетной записью сервиса (service logon account). Это позволяет клиентским приложением аутентифицироваться в роли сервиса, даже не зная имени пользователя.
До того, как аутентификация Kerberos сможет использовать SPN для аутентификации сервиса, SPN должен быть привязан к учетной записи, которая будет использоваться для входа. SPN может быть привязан только к одной учетной записи. Если учетная запись, привязанная к SPN, изменяется, то необходимо заново выполнить привязку.
Когда клиент хочет воспользоваться сервисом, он находит экземпляр сервиса и составляет SPN для этого экземпляра, далее использует этот SPN для аутентификации.
Keytab-файл — это файл, содержащий пары Kerberos принципалов и их ключей (полученных с использованием Kerberos пароля). Эти файлы используются для аутентификации в системах, использующих Kerberos, без ввода пароля. Если пароль принципала изменится, то keytab-файл необходимо будет сгенерировать заново.
Создание пользователя на windows DC
Привязка SPN к созаной учетной записи
где:
Создание Keytab файла
Проверка учетной записи
Создание и привязка SPN к пользователю
Генерация keytab фалйла для samba DC