Перейти к содержанию

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

Расположение

Файл конфигурации серверной части находится по пути: ./conf/config.toml

Формат файла

Конфигурационный файл разбит на разделы и подразделы.

Обозначение начала раздела конфигурации:

#------------------------------------------------------------------------------
#----------------- Настройки авторизации и аутентификации  --------------------
#------------------------------------------------------------------------------

Обозначение начала подраздела конфигурации:

# --- Настройка токена ---

Название переменных в конфигурационном файле должны быть уникальными.

Важно

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

Переменные могут состоять из следующих символов:

  • строчные латинские буквы (a-z);
  • прописные латинские буквы (A-Z);
  • цифры (0-9)
  • символ подчеркивания (_);
  • символ тире (-).

Оформление комментария

Комментарии к переменным начинаются с 35-го символа строки. Если значение переменной превышает 35 символов, комментарий переносится на следующую строку.

Локализация

Язык интерфейса задается в соответствии со стандартом ISO 639-1 (двухбуквенные коды).

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

На данный момент поддерживаются 2 языка: ru и en

Переменные окружения

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

Чтобы значение из конфигурационного файла можно было переопределить через переменную окружения, имя переменной должно начинаться с префикса VISMIND_.

Например: переопределить название приложения

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

  • использует значение переменной окружения VISMIND_APP_NAME, если она задана;
  • в противном случае — значение app_name из конфигурационного файла.

Если переменной окружения не задать значение конфигурации, будут использоваться значения по умолчанию. Параметры Gunicorn также могут быть заданы через переменные окружения. Для этого имя переменной должно начинаться с префикса vismind_gunicorn_.

Переменные окружения также описаны в разделе Переменные_окружения.md

Параметр workers может принимать значение auto.
Пример: vismind_gunicorn_workers=auto
В этом случае количество воркеров рассчитывается по формуле: (количество ядер * 2) + 1 (формула взята из документации GUnicorn).

upd. (обновлено 2023-06-22): В связи с нестабильной работой Gunicorn при автоматическом расчете, количество воркеров рекомендуется задавать вручную, используя ту же формулу.

Пример конфигурации для Docker Compose

ППо умолчанию платформа запускается с использованием базы данных репозитория, которая создается при установке в контейнере vismind-postgres. Вся конфигурация серверной части может быть переопределена через переменные окружения. Ниже приведен минимальный набор переменных, необходимых для настройки подключения к базе данных и параметров аутентификации.
Переменные окружения задаются для контейнера vismind-backend в файле ./distr/docker-compose.yaml:

Пример docker-compose.yml
...
  vismind-backend:
    container_name: vismind-backend
    image: vismind-backend:0.36
    environment:
      # repository
      - VISMIND_REPOSITORY_HOST=vismind-postgresql
      - VISMIND_REPOSITORY_PORT=5432
      - VISMIND_REPOSITORY_NAME=repo_vismind
      - VISMIND_REPOSITORY_USER_LOGIN=
      - VISMIND_REPOSITORY_USER_PASSWORD=
      # redis
      - VISMIND_REDIS_HOST=vismind-redis
      - VISMIND_REDIS_PORT=6379
      - VISMIND_REDIS_DB=1
      - VISMIND_REDIS_PASSWORD=
      # LDAP
      - VISMIND_LDAP_ALLOW_LOGIN=1
      - VISMIND_LDAP_HOST=
      - VISMIND_LDAP_PORT=389
      - VISMIND_LDAP_USE_SSL=0
      - VISMIND_LDAP_USER_HOST=int.bittechno.ru
      - VISMIND_LDAP_DOMAIN_COMPONENT=
      - VISMIND_LDAP_USERS_PARTITION=
      - VISMIND_LDAP_USERNAME=sAMAccountName
      - VISMIND_LDAP_GROUPS=memberOf
      - VISMIND_LDAP_FIRST_NAME=givenName
      - VISMIND_LDAP_LAST_NAME=sn
      - VISMIND_LDAP_EMAIL=mail
      - VISMIND_LDAP_SYNC_GROUP_WITH_AD=1
      - VISMIND_LDAP_DEFAULT_GROUP=vismindUsers
      # kerberos
      - VISMIND_KERBEROS_ALLOW_LOGIN=1
      - VISMIND_KERBEROS_SYSTEM_USER_LOGIN=
      - VISMIND_KERBEROS_SYSTEM_USER_PASSWORD=
    volumes:
      - ./files:/app/files
      - ./kerberos_certs/krb5.conf:/etc/krb5.conf:ro
      - ./kerberos_certs/krb5.keytab:/etc/krb5.keytab:ro
    depends_on:
      - vismind-redis
      - vismind-postgresql
    networks:
      - vismind-nt
    restart: unless-stopped
...

Подключение внешних сервисов

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

Настройка доменной авторизации

Авторизация с использованием доменных учетных записей (включая сквозную) по умолчанию включена на стороне клиента, однако для полноценной работы требуется активировать соответствующие настройки на серверной стороне. Для включения необходимо: 1. Внести изменения в конфигурацию в файле ./distr/docker-compose.yaml; 2. Выполнить перезапуск приложения.

$ docker compose -f ./distr/docker-compose.yaml down && docker compose -f ./distr/docker-compose.yaml up -d

Значения по умолчанию не заданы для соединений с внешними службами (postgres, redis, ldap)

PostgreSQL 15 repository

Определяет параметры подключения к БД репозитория приложения.

Настройки подключения к БД
VISMIND_REPOSITORY_HOST           # имя сервера PostgreSQL 
VISMIND_REPOSITORY_PORT           # порт, по умолчанию 5432
VISMIND_REPOSITORY_NAME           # имя БД репозитория платформы
VISMIND_REPOSITORY_USER_LOGIN     # логин пользователя для доступа к репозиторию
VISMIND_REPOSITORY_USER_PASSWORD  # пароль пользователя для доступа к репозиторию

База данных не создается заранее - ее развертывание выполняется с помощью скриптов в процессе установки приложения.

Перенос базы данных на другой сервер

При необходимости переноса можно: 1. Свернуть БД из контейнера vismind-postgresql; 2. Перенести ее на целевой сервер; 3. Изменить параметры подключения в конфигурации; 4. Перезапустить приложение.

Redis in-memory database

Определяет параметры подключения к Redis, который используется для хранения состояний и выполнения оперативных (in-memory) расчетов приложения.

Настройки подключения к БД
VISMIND_REDIS_HOST      # имя сервера Redis 
VISMIND_REDIS_PORT      # порт, по умолчанию 6379
VISMIND_REDIS_DB        # номер бд в которой будут храниться данные
VISMIND_REDIS_PASSWORD  # пароль для доступа к Redis

БД Редис не хранит свое состояние, поэтому все временные данные, хранящиеся в ней, будут удалены при остановке контейнера.

LDAP Active Directory

Параметры подключения к серверам Active Directory для авторизации с использованием доменных учетных записей приведены ниже:

Настройки подключения к LDAP
VISMIND_LDAP_ALLOW_LOGIN              # Использовать LDAP
VISMIND_LDAP_HOST                     # Адрес сервера LDAP. Можно указывать множество хостов через разделитель <;> (точка с запятой)
VISMIND_LDAP_PORT                     # Порт сервера LDAP
VISMIND_LDAP_USE_SSL                  # Использовать ssl
VISMIND_LDAP_GET_INFO                 # Чтение информации о сервере,
                                      # возможные значения:
                                      #   NONE
                                      #   DSA
                                      #   SCHEMA
                                      #   ALL

VISMIND_LDAP_CLIENT_STRATEGY          # Стратегии соединения,
                                      # возможные значения:
                                      #   SYNC
                                      #   ASYNC
                                      #   LDIF
                                      #   RESTARTABLE
                                      #   REUSABLE
                                      #   SAFE_SYNC
                                      #   SAFE_RESTARTABLE        

VISMIND_LDAP_AUTHENTICATION           # Аутентификация, возможные значения:
                                      #   ANONYMOUS
                                      #   SIMPLE
                                      #   SASL
                                      #   NTLM

VISMIND_LDAP_USER_HOST                # Наименование домена (обязательный) 
VISMIND_LDAP_DOMAIN_COMPONENT         # Домен, в котором записан пользователь. Пример: dc=int,dc=bittechno,dc=ru
VISMIND_LDAP_USERS_PARTITION          # Адрес до раздела с пользователями. Пример: ou=Service Accounts,ou=Enterprise 
                                      # (если оставить пустой, то поиск будет происходить по всему домену)

                                      # Атрибуты LDAP для использования при создании пользователя в платформе
VISMIND_LDAP_USERNAME                 # Логин пользователя
VISMIND_LDAP_GROUPS                   # Группы, которые надо проверить для добавления в группы
VISMIND_LDAP_FIRST_NAME               # Имя пользователя
VISMIND_LDAP_LAST_NAME                # Фамилия пользователя
VISMIND_LDAP_EMAIL                    # Почта пользователя

При использовании LDAP пользователь считается внешним по отношению к платформе. Атрибуты такого пользователя (получаемые из LDAP при подключении) не могут быть изменены внутри платформы.
При первом входе внешнего пользователя в платформе автоматически создается учетная запись, которая заполняется данными из LDAP. В соответствии с настройками по умолчанию, новый пользователь добавляется в группу «Администраторы».

Доступ к конфигурации в коде

Для использования в приложении настроек конфигурации, необходимо импортировать переменную SETTINGS.

Пример импорта

from core.config import SETTINGS

Можно обращаться к разделу и переменной

Пример обращения к параметру конфигурации из раздела

SETTINGS.AUTH.DEFAULT_GROUP

Можно обращаться к разделу, к подразделу и переменной

Пример обращения к параметру конфигурации из подраздела

SETTINGS.AUTH.OIDC.ALLOW_LOGIN