Настройка для хостинга нескольких деревьев¶
По умолчанию 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 в конфигурации интерфейса.