Установка Single-Node

Устанавливаемые компоненты

КомпонентОписание
Zakroma-DiskСервис Закрома.Диск, включая web-интерфейс, dsdrive, WebDAV и сервис блокировок.
NginxProxy-сервер для web-интерфейса и WebDAV.
KeycloakСистема аутентификации и авторизации.
PostgreSQLСУБД для метаданных Закрома.Диск и Keycloak.
СерверКомпоненты
plank.zakroma.internalZakroma-Disk, Nginx, PostgreSQL, Keycloak

Установка

1. Получение и распаковка архива поставки

1tar -xvzf zakroma-roles-2.0.1.tar.gz 2cd zakroma-roles-2.0.1

2. Подготовка inventory

В качестве основы используйте файл инвентаря inventories/single-node/hosts.

1[certificates] 2plank ansible_host=10.222.0.220 3 4[zakroma-disk-nginx] 5plank ansible_host=10.222.0.220 6 7[zakroma-disk] 8plank ansible_host=10.222.0.220

Если Keycloak устанавливается этой же поставкой, добавьте хост в группу keycloak:

1[keycloak] 2plank ansible_host=10.222.0.220

3. Распространение сертификатов

Отредактируйте inventories/single-node/group_vars/certificates.yml: укажите имя хоста из inventory, файлы сертификатов и целевые каталоги.

1--- 2certificates_copy_source_path: "files" 3 4host_cert_config: 5 plank: 6 certs: 7 - src_dir: "{{ certificates_copy_source_path }}" 8 dest_dir: "/opt/certs/" 9 cert_file: "zakroma.crt" 10 key_file: "zakroma.key" 11 owner: "nginx" 12 group: "nginx" 13 cert_permissions: "0644" 14 key_permissions: "0600"

Запустите playbook:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/single-node/hosts playbooks/sample-play-copy-certificates.yml

4. Установка Keycloak

Если используется Keycloak из поставки, настройте inventories/single-node/group_vars/keycloak.yml по инструкции Настройка Keycloak и запустите:

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/single-node/hosts playbooks/sample-play-keycloak.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/single-node/hosts playbooks/sample-play-keycloak-copy-realm.yml

5. Настройка Закрома.Диск

Отредактируйте inventories/single-node/group_vars/zakroma-disk.yml.

Ниже представлены базовые параметры для установки Закрома.Диск, поменяйте их на соответствующие и запустите установку:

1zakroma_disk_version: 1.5.1 2 3zakroma_disk_auth: 4 # Включить аутентификацию для микросервисов Закрома.Диск. 5 # Для корректной работы WebDAV значение должно быть true.
Развернутьarrow

Важная информация об аутентификации пользователей

Закрома.Диск поддерживает интеграцию с Keycloak для аутентификации пользователей в Web UI и WebDAV.

Для Web UI может использоваться один из двух режимов:

  • Authorization Code Flow / redirect flow - пользователь перенаправляется в Keycloak, проходит интерактивную аутентификацию в браузере и возвращается в Web UI Закрома.Диск;
  • direct grant - Закрома.Диск получает токен доступа напрямую от Keycloak без браузерного перенаправления пользователя.

WebDAV использует только режим direct grant. Это связано с тем, что типовые WebDAV-клиенты не поддерживают интерактивный OIDC/OAuth redirect в браузере и не могут выполнить стандартный сценарий входа через Keycloak.

Параметры zakroma_disk_auth.access_key_id и zakroma_disk_auth.access_key обязательны при включенной межсервисной аутентификации Закрома.Диск. Для корректной работы Закрома.Диск с WebDAV задайте zakroma_disk_auth.enabled: true, заполните zakroma_disk_auth.access_key_id и zakroma_disk_auth.access_key, а также не оставляйте эти значения пустыми в продуктивной инсталляции.

Для работы WebDAV необходимо включить Direct Access Grants / direct grant flow в настройках Keycloak client и включить direct grant в конфигурации Закрома.Диск:

1zakroma_disk_dsdrive.auth.direct_grant.enabled: true

Для синхронизации пользователей можно использовать два варианта: по ролям Keycloak (user_role) или по группам Keycloak (user_groups). Настройка role-mapper и group-mapper описана в отдельной инструкции по Keycloak для Закрома.Диск.

6. Настройка Nginx

Отредактируйте inventories/single-node/group_vars/zakroma-disk-nginx.yml: замените server_name, пути к сертификатам и домены disk.zakroma.internal / webdav.zakroma.internal на значения вашего контура.

TLS для Закрома.Диск настраивается на уровне Nginx. В конфигурации zakroma_disk_dsdrive.storage TLS-параметры Закрома.Диск указывать не требуется.

Пример конфигурации Nginx:

1--- 2# Перезапустить nginx, даже если не было изменений. 3flush_restart_nginx: false 4 5# Название пакета Nginx.
Развернутьarrow

7. Запуск установки

1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/single-node/hosts playbooks/sample-play-zakroma-disk.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/single-node/hosts playbooks/sample-play-zakroma-disk-nginx.yml

8. Проверка стенда после установки

  1. Откройте https://disk.zakroma.internal и убедитесь, что загружается интерфейс Закрома.Диск.
  2. Войдите через Keycloak и проверьте, что пользователь попадает в интерфейс без ошибок авторизации.
  3. Подключитесь к WebDAV по адресу https://webdav.zakroma.internal и проверьте чтение и запись тестового файла.
  4. На узлах группы zakroma-disk убедитесь, что сервисы zakroma-disk-* запущены и не уходят в постоянный перезапуск.