Перейти до змісту

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

За замовчуванням, 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 у конфігурації фронтенду.