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

Хостинг медіа-файлів на S3

Замість того, щоб хостити медіа-файли родинного дерева на тому ж сервері, що й база даних Gramps, їх також можна хостити на Amazon S3 або іншій API-сумісній службі об'єктного зберігання. Це суттєво зменшує вимоги до зберігання та трафіку для веб-сервера Gramps.

Підготовка облікових даних

У вашому обліковому записі AWS (або іншій службі об'єктного зберігання) отримайте ідентифікатор ключа доступу та секретний ключ доступу (можливо, спочатку ви захочете створити окремого користувача з політикою безпеки, яка дозволяє доступ лише до S3).

Завантаження медіа-файлів

Щоб завантажити ваші існуючі медіа-файли на S3, на Linux ви можете використовувати локальну установку Gramps з аддоном S3 Media Uploader, який можна встановити безпосередньо з настільного додатка Gramps. Однак потрібна додаткова конфігурація.

Аддон використовує бібліотеку Python boto3 під капотом. Спочатку вам потрібно встановити її за допомогою

python3 -m pip install boto3

На командному рядку експортуйте ідентифікатор ключа доступу та секретний ключ у відповідні змінні середовища:

export AWS_ACCESS_KEY_ID=my_access_key_id
export AWS_SECRET_ACCESS_KEY=my_secret_access_key

Тепер ви можете запустити завантажувач, виконавши наступну команду,

gramps -O "My Family Tree" -a tool \
    -p "name=s3uploader,bucket_name=my_bucket_name"

замінивши "My Family Tree" на назву вашого родинного дерева та my_bucket_name на повну назву вашого S3 кошика. Вам знадобиться спеціальний S3 кошик для вашого веб-екземпляра Gramps. Якщо кошик ще не існує, аддон S3 Uploader спробує його створити.

Налаштування Gramps Web

Щоб використовувати новий S3 кошик як джерело медіа для Gramps Web, просто встановіть параметр конфігурації MEDIA_BASE_DIR опція конфігурації на s3://my_bucket_name.

При використанні Docker Compose найзручнішим варіантом є додавання всіх змінних середовища до блоку environment: служби grampsweb:

environment:
  AWS_ACCESS_KEY_ID: my_access_key_id
  AWS_SECRET_ACCESS_KEY: my_secret_access_key
  GRAMPSWEB_MEDIA_BASE_DIR: s3://my_bucket_name
  AWS_DEFAULT_REGION: eu-central-1

Зверніть увагу, що лише параметр конфігурації Gramps Web має префікс GRAMPSWEB_; змінні AWS_* читаються безпосередньо бібліотекою boto3 і повинні залишатися без префікса.

Якщо ви хочете використовувати об'єктне зберігання, сумісне з S3, крім AWS (наприклад, GCP або для локального тестування), встановіть змінну середовища AWS_ENDPOINT_URL.

Синхронізація медіа-файлів

Щоб підтримувати медіа-файли в синхронізації між локальною установкою Gramps і медіа-файлами Gramps Web, які хостяться на S3, аддон Gramps Web Sync підтримує синхронізацію файлів через Web API.