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

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

По умолчанию 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-данных.

Имена пользователей и адреса электронной почты должны быть уникальными для всех деревьев.

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

Чтобы создать новое дерево, рекомендуется отправить POST-запрос на конечную точку /trees/, а не использовать Gramps CLI. Это будет использовать UUIDv4 в качестве ID дерева, что обеспечивает дополнительную безопасность, так как имя не может быть угадано. В настоящее время поддерживается только SQLite для вновь созданных деревьев.

Авторизация

Для авторизации (получения токена) необходимы только имя пользователя и пароль, как в режиме одного дерева, поскольку 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 в конфигурации интерфейса.