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