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

Настройка для хостинга нескольких деревьев

По умолчанию Gramps Web позволяет доступ только к одной базе данных семейного дерева (“дерево”), указанной в конфигурационном файле.

Однако, начиная с версии 0.7.0 бэкенда Gramps Web API, также возможно обслуживать несколько деревьев из одной установки. Тем не менее, каждый пользователь (в настоящее время) привязан к одному дереву, поэтому эта настройка не подходит для совместного использования деревьев между пользователями, а предназначена для хостинга нескольких изолированных экземпляров Gramps Web.

Включение поддержки нескольких деревьев

Чтобы включить поддержку нескольких деревьев, параметр конфигурации TREE должен быть установлен в один символ *, например, в конфигурационном файле:

TREE = "*"

Это сделает все деревья в каталоге базы данных Gramps сервера доступными (при наличии достаточных прав пользователя). ID дерева — это имя подкаталога. Вы можете перечислить существующие деревья (имена и ID) с помощью команды

python -m gramps_webapi --config /app/config/config.cfg tree list

Кроме того, вы должны установить параметр конфигурации MEDIA_PREFIX_TREE в True, чтобы гарантировать, что медиафайлы хранятся в отдельных подпапках. В противном случае пользователи смогут получить доступ к медиафайлам, которые принадлежат дереву, к которому у них нет разрешений!

Добавление учетной записи пользователя к конкретному дереву

Чтобы добавить пользователя к конкретному дереву, просто добавьте параметр командной строки --tree TREEID к команде добавления пользователя. Вы также можете отправить POST-запрос на конечную точку /users/ с установленным свойством tree в JSON-данных.

Имена пользователей должны быть уникальными для всех деревьев. Адреса электронной почты не обязательно должны быть уникальными (с версии Gramps Web API 3.22), поэтому один и тот же человек может, например, иметь учетные записи в нескольких деревьях, используя один и тот же адрес электронной почты.

Создание нового дерева

Чтобы создать новое дерево, рекомендуется отправить POST-запрос на конечную точку /trees/, а не использовать Gramps CLI. Это будет использовать UUIDv4 в качестве ID дерева, что обеспечивает дополнительную безопасность, так как имя нельзя угадать. Новые деревья используют бэкенд базы данных, установленный в параметре конфигурации NEW_DB_BACKEND: SQLite (по умолчанию) или SharedPostgreSQL. См. Использование базы данных PostgreSQL для получения подробностей.

Авторизация

Для авторизации (получения токена) необходимы только имя пользователя и пароль, как в режиме одного дерева, поскольку ID дерева известен для каждого пользователя, поэтому нет необходимости его указывать.

Миграция существующих медиафайлов

Если вы хотите мигрировать существующий экземпляр Gramps Web на поддержку нескольких деревьев и используете локальные медиафайлы, вы можете просто переместить их в подпапку оригинального местоположения с именем ID дерева.

Если вы используете медиафайлы, размещенные на S3, вы можете использовать скрипт, предоставленный в каталоге scripts репозитория gramps-web-api:

python scripts/s3_rename.py BUCKET_NAME TREE_ID

Это предполагает, что соответствующие ключи доступа уже установлены в виде переменных окружения.

Миграция существующей базы данных пользователей

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

python -m gramps_webapi --config /app/config/config.cfg user fill-tree TREE_ID

Настройка фронтенда

Страница регистрации, доступная со страницы входа, не работает в настройке нескольких деревьев, так как для регистрации необходимо указать дерево. Поэтому рекомендуется установить hideRegisterLink в true в конфигурации фронтенда.