Конфигурация сервера¶
Используя образ Docker по умолчанию, всю необходимую конфигурацию можно выполнить через браузер. Однако в зависимости от развертывания может потребоваться настроить конфигурацию сервера.
Эта страница перечисляет все методы изменения конфигурации и все существующие параметры конфигурации.
Конфигурационный файл vs. переменные окружения¶
Для настроек вы можете использовать либо конфигурационный файл, либо переменные окружения.
Когда вы используете настройку на основе Docker Compose, вы можете включить конфигурационный файл, добавив следующий элемент списка под ключом volumes: в блоке grampsweb::
- /path/to/config.cfg:/app/config/config.cfg
/path/to/config.cfg — это путь к конфигурационному файлу в файловой системе вашего сервера (правая сторона относится к пути в контейнере и не должна изменяться).
При использовании переменных окружения,
- добавьте префикс
GRAMPSWEB_к каждому имени настройки, чтобы получить имя переменной окружения - Используйте двойные подчеркивания для вложенных настроек словаря, например,
GRAMPSWEB_THUMBNAIL_CACHE_CONFIG__CACHE_DEFAULT_TIMEOUTустановит значение параметра конфигурацииTHUMBNAIL_CACHE_CONFIG['CACHE_DEFAULT_TIMEOUT']
Обратите внимание, что параметры конфигурации, установленные через окружение, имеют приоритет над параметрами в конфигурационном файле. Если оба присутствуют, переменная окружения "выигрывает".
Переменные окружения без префикса устарели
По историческим причинам, несколько настроек – TREE, SECRET_KEY, USER_DB_URI, POSTGRES_USER, POSTGRES_PASSWORD, MEDIA_BASE_DIR, SEARCH_INDEX_DIR, EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, DEFAULT_FROM_EMAIL, BASE_URL, и STATIC_PATH – все еще могут быть установлены через переменную окружения без префикса GRAMPSWEB_. Это устарело, выдает предупреждение при запуске и перестанет работать в будущем релизе. Всегда используйте префиксированный вариант, например, GRAMPSWEB_TREE вместо TREE.
Обратите внимание, что это касается только переменных окружения. В конфигурационном файле имена настроек всегда используются без префикса.
Существующие параметры конфигурации¶
Существуют следующие параметры конфигурации.
Обязательные настройки¶
| Ключ | Описание |
|---|---|
TREE |
Имя базы данных семейного дерева, которую нужно использовать. Показать доступные деревья с помощью gramps -l. Если дерево с таким именем не существует, будет создано новое пустое. |
SECRET_KEY |
Секретный ключ для Flask. Секрет не должен быть общедоступным. Изменение его недействительно все токены доступа. |
USER_DB_URI |
URL базы данных пользовательской базы данных. Разрешен любой URL, совместимый с SQLAlchemy. |
Info
Вы можете сгенерировать безопасный секретный ключ, например, с помощью команды
python3 -c "import secrets;print(secrets.token_urlsafe(32))"
Необязательные настройки¶
| Ключ | Описание |
|---|---|
MEDIA_BASE_DIR |
Путь, который использовать в качестве базового каталога для медиафайлов, переопределяя базовый каталог медиа, установленный в Gramps. При использовании S3 должен иметь вид s3://<bucket_name> |
TREE_ID |
Имя каталога базы данных семейного дерева, которое нужно использовать в режиме одного дерева (когда TREE не установлено на *). При установке сервер идентифицирует дерево по имени каталога, а не по его отображаемому имени, что более надежно при переименованиях. Обязательно, если вы хотите переименовать дерево через API. Имя каталога можно найти через GET /api/trees/- (поле id). |
SEARCH_INDEX_DB_URI |
URL базы данных для поискового индекса. Разрешены только sqlite или postgresql в качестве бэкендов. По умолчанию sqlite:///indexdir/search_index.db, создавая файл SQLite в папке indexdir, относительно пути, где выполняется скрипт. |
SEARCH_INDEX_DIR |
Устарело (используйте SEARCH_INDEX_DB_URI вместо этого). Каталог, содержащий поисковый индекс. Если установлен, когда SEARCH_INDEX_DB_URI не установлен, URL поискового индекса выводится как sqlite:///<SEARCH_INDEX_DIR>/search_index.db. |
STATIC_PATH |
Путь для обслуживания статических файлов (например, статический веб-фронтенд) |
BASE_URL |
Базовый URL, по которому можно получить доступ к API (например, https://mygramps.mydomain.com/). Это необходимо, например, для построения правильных ссылок для сброса пароля. |
CORS_ORIGINS |
Происхождения, с которых разрешены CORS-запросы. По умолчанию все запрещены. Используйте "*" для разрешения запросов с любого домена. |
EMAIL_HOST |
Хост SMTP-сервера (например, для отправки писем для сброса пароля) |
EMAIL_PORT |
Порт SMTP-сервера. По умолчанию 465 |
EMAIL_HOST_USER |
Имя пользователя SMTP-сервера |
EMAIL_HOST_PASSWORD |
Пароль SMTP-сервера |
EMAIL_USE_TLS |
Устарело (используйте EMAIL_USE_SSL или EMAIL_USE_STARTTLS вместо этого). Булевое значение, указывающее, использовать ли TLS для отправки писем. По умолчанию True. При использовании STARTTLS установите это значение в False и используйте порт, отличный от 25. |
EMAIL_USE_SSL |
Булевое значение, указывающее, использовать ли неявный SSL/TLS для SMTP (v3.6.0+). По умолчанию True, если EMAIL_USE_TLS не установлен явно. Обычно используется с портом 465. |
EMAIL_USE_STARTTLS |
Булевое значение, указывающее, использовать ли явный STARTTLS для SMTP (v3.6.0+). По умолчанию False. Обычно используется с портом 587 или 25. |
DEFAULT_FROM_EMAIL |
Адрес "От" для автоматических писем |
THUMBNAIL_CACHE_CONFIG |
Словарь с настройками для кеша миниатюр. См. Flask-Caching для возможных настроек. |
REQUEST_CACHE_CONFIG |
Словарь с настройками для кеша запросов. См. Flask-Caching для возможных настроек. |
PERSISTENT_CACHE_CONFIG |
Словарь с настройками для постоянного кеша, используемого, например, для телеметрии. См. Flask-Caching для возможных настроек. |
CELERY_CONFIG |
Настройки для очереди фоновых задач Celery. См. Celery для возможных настроек. |
REPORT_DIR |
Временный каталог, в котором будет храниться вывод выполнения отчетов Gramps |
EXPORT_DIR |
Временный каталог, в котором будет храниться вывод экспорта базы данных Gramps |
REGISTRATION_DISABLED |
Если True, запрещает регистрацию новых пользователей (по умолчанию False) |
DISABLE_TELEMETRY |
Если True, отключает статистическую телеметрию (по умолчанию False). См. телеметрию для получения подробной информации. |
PILLOW_MAX_IMAGE_PIXELS |
Устанавливает параметр PIL.Image.MAX_IMAGE_PIXELS, который указывает количество пикселей, которые может содержать обрабатываемое изображение. См. документацию для получения подробной информации. |
MAX_THUMBNAIL_FILE_BYTES |
Устанавливает жесткий максимальный размер файла для миниатюр. По умолчанию 50 * 1024 * 1024 (50 МБ). Увеличение этого значения может значительно увеличить использование памяти и привести к сбоям из-за нехватки памяти или потере данных, если большие файлы распаковываются в памяти. |
Info
При использовании переменных окружения для конфигурации булевы параметры, такие как EMAIL_USE_SSL, должны быть либо строкой true, либо false (регистр имеет значение!).
Настройки только для базы данных PostgreSQL¶
Это необходимо, если вы настроили свою базу данных Gramps для работы с дополнением PostgreSQL.
| Ключ | Описание |
|---|---|
POSTGRES_USER |
Имя пользователя для подключения к базе данных |
POSTGRES_PASSWORD |
Пароль для пользователя базы данных |
Настройки, относящиеся к хостингу нескольких деревьев¶
Следующие настройки актуальны при хостинге нескольких деревьев.
| Ключ | Описание |
|---|---|
MEDIA_PREFIX_TREE |
Булевое значение, указывающее, использовать ли отдельную подпапку для медиафайлов каждого дерева. По умолчанию False, но настоятельно рекомендуется использовать True в настройках с несколькими деревьями. |
NEW_DB_BACKEND |
Бэкенд базы данных, который следует использовать для вновь созданных семейных деревьев. Должен быть одним из sqlite, postgresql или sharedpostgresql. По умолчанию sqlite. |
POSTGRES_HOST |
Имя хоста сервера PostgreSQL, используемого для создания новых деревьев при использовании настройки с несколькими деревьями с бэкендом SharedPostgreSQL |
POSTGRES_PORT |
Порт сервера PostgreSQL, используемого для создания новых деревьев при использовании настройки с несколькими деревьями с бэкендом SharedPostgreSQL |
Настройки для аутентификации OIDC¶
Эти настройки необходимы, если вы хотите использовать аутентификацию OpenID Connect (OIDC) с внешними провайдерами. Для получения подробных инструкций по настройке и примеров см. Аутентификация OIDC.
| Ключ | Описание |
|---|---|
OIDC_ENABLED |
Булевое значение, указывающее, включать ли аутентификацию OIDC. По умолчанию False. |
OIDC_ISSUER |
URL-адрес провайдера OIDC (для пользовательских провайдеров OIDC) |
OIDC_CLIENT_ID |
Идентификатор клиента OAuth (для пользовательских провайдеров OIDC) |
OIDC_CLIENT_SECRET |
Секрет клиента OAuth (для пользовательских провайдеров OIDC) |
OIDC_NAME |
Пользовательское отображаемое имя для провайдера. По умолчанию "OIDC" |
OIDC_SCOPES |
Области OAuth. По умолчанию "openid email profile" |
OIDC_USERNAME_CLAIM |
Утверждение, которое использовать для имени пользователя. По умолчанию "preferred_username" |
OIDC_OPENID_CONFIG_URL |
Необязательно: URL-адрес конечной точки конфигурации OpenID Connect (если не используется стандартный /.well-known/openid-configuration) |
OIDC_DISABLE_LOCAL_AUTH |
Булевое значение, указывающее, отключать ли локальную аутентификацию по имени пользователя/паролю. По умолчанию False |
OIDC_AUTO_REDIRECT |
Булевое значение, указывающее, перенаправлять ли автоматически на OIDC, когда настроен только один провайдер. По умолчанию False |
Встроенные провайдеры OIDC¶
Для встроенных провайдеров (Google, Microsoft) используйте эти настройки:
| Ключ | Описание |
|---|---|
OIDC_GOOGLE_CLIENT_ID |
Идентификатор клиента для Google OAuth |
OIDC_GOOGLE_CLIENT_SECRET |
Секрет клиента для Google OAuth |
OIDC_MICROSOFT_CLIENT_ID |
Идентификатор клиента для Microsoft OAuth |
OIDC_MICROSOFT_CLIENT_SECRET |
Секрет клиента для Microsoft OAuth |
Сопоставление ролей OIDC¶
Эти настройки позволяют сопоставить группы/роли OIDC из вашего провайдера идентификации с ролями пользователей Gramps Web:
| Ключ | Описание |
|---|---|
OIDC_ROLE_CLAIM |
Имя утверждения в токене OIDC, которое содержит группы/роли пользователя. По умолчанию "groups" |
OIDC_GROUP_ADMIN |
Имя группы/роли из вашего провайдера OIDC, которое сопоставляется с ролью "Admin" в Gramps |
OIDC_GROUP_OWNER |
Имя группы/роли из вашего провайдера OIDC, которое сопоставляется с ролью "Owner" в Gramps |
OIDC_GROUP_EDITOR |
Имя группы/роли из вашего провайдера OIDC, которое сопоставляется с ролью "Editor" в Gramps |
OIDC_GROUP_CONTRIBUTOR |
Имя группы/роли из вашего провайдера OIDC, которое сопоставляется с ролью "Contributor" в Gramps |
OIDC_GROUP_MEMBER |
Имя группы/роли из вашего провайдера OIDC, которое сопоставляется с ролью "Member" в Gramps |
OIDC_GROUP_GUEST |
Имя группы/роли из вашего провайдера OIDC, которое сопоставляется с ролью "Guest" в Gramps |
Настройки только для функций ИИ¶
Эти настройки необходимы, если вы хотите использовать функции, основанные на ИИ, такие как чат или семантический поиск.
| Ключ | Описание |
|---|---|
LLM_BASE_URL |
Базовый URL для совместимого с OpenAI API чата. По умолчанию None, что использует API OpenAI. |
LLM_MODEL |
Модель, которую использовать для совместимого с OpenAI API чата. Если не установлено (по умолчанию), чат отключен. Начиная с версии v3.6.0, помощник ИИ использует Pydantic AI с возможностями вызова инструментов. |
VECTOR_EMBEDDING_MODEL |
Модель, которую использовать для векторных эмбеддингов семантического поиска. При использовании локальной модели это должно быть имя модели Sentence Transformers. При использовании удаленного API (см. VECTOR_EMBEDDING_BASE_URL) это имя модели, передаваемое удаленному провайдеру. Если не установлено (по умолчанию), семантический поиск и чат отключены. |
VECTOR_EMBEDDING_BASE_URL |
Базовый URL для удаленного API эмбеддингов, совместимого с OpenAI (например, Ollama, OpenAI, LiteLLM). Если не установлено (по умолчанию), используется локальная модель Sentence Transformers. См. Использование удаленного API эмбеддингов для получения подробной информации. |
VECTOR_EMBEDDING_API_KEY |
API-ключ для аутентифицированных удаленных провайдеров эмбеддингов. Необходим только когда VECTOR_EMBEDDING_BASE_URL установлен и провайдер требует аутентификации. |
LLM_MAX_CONTEXT_LENGTH |
Ограничение по символам для контекста семейного дерева, предоставляемого LLM. По умолчанию 50000. |
LLM_SYSTEM_PROMPT |
Пользовательский системный запрос для помощника чата LLM (v3.6.0+). Если не установлено, используется стандартный запрос, оптимизированный для генеалогии. |
Пример конфигурационного файла¶
Минимальный конфигурационный файл для продакшн-окружения может выглядеть так: ```python TREE="Мое семейное дерево" BASE_URL="https://mytree.example.com" SECRET_KEY="..." # ваш секретный ключ USER_DB_URI="sqlite:////path/to/users.sqlite" EMAIL_HOST="mail.example.com" EMAIL_PORT=465 EMAIL_USE_SSL=True # Использовать неявный SSL для порта 465 EMAIL_HOST_USER="gramps@example.com" EMAIL_HOST_PASSWORD="..." # ваш SMTP пароль DEFAULT_FROM_EMAIL="gramps@example.com"