Aller au contenu

Hébergement de fichiers multimédias sur S3

Au lieu d'héberger les fichiers multimédias de l'arbre généalogique sur le même serveur que la base de données Gramps, ils peuvent également être hébergés sur Amazon S3 ou un autre service de stockage d'objets compatible avec l'API. Cela réduit fortement les besoins en stockage et en trafic pour le serveur Web Gramps.

Préparation des identifiants

Dans votre compte AWS (ou autre service de stockage d'objets), obtenez un ID de clé d'accès et une clé d'accès secrète (vous voudrez peut-être d'abord créer un utilisateur séparé avec une politique de sécurité permettant uniquement l'accès à S3).

Télécharger des fichiers multimédias

Pour télécharger vos fichiers multimédias existants sur S3, sur Linux, vous pouvez utiliser une installation locale de Gramps avec l'addon S3 Media Uploader, que vous pouvez installer directement depuis le bureau Gramps. Cependant, une configuration supplémentaire est nécessaire.

L'addon utilise la bibliothèque Python boto3 en arrière-plan. Vous devez d'abord l'installer avec

python3 -m pip install boto3

Dans la ligne de commande, exportez l'ID de clé d'accès et la clé secrète vers les variables d'environnement appropriées :

export AWS_ACCESS_KEY_ID=my_access_key_id
export AWS_SECRET_ACCESS_KEY=my_secret_access_key

Maintenant, vous pouvez démarrer l'uploader en exécutant la commande suivante,

gramps -O "Mon Arbre Généalogique" -a tool \
    -p "name=s3uploader,bucket_name=my_bucket_name"

remplaçant "Mon Arbre Généalogique" par le nom de votre arbre généalogique et my_bucket_name par le nom complet de votre bucket S3. Vous aurez besoin d'un bucket S3 dédié pour votre instance Gramps Web. Si le bucket n'existe pas encore, l'addon S3 Uploader tentera de le créer.

Configurer Gramps Web

Pour utiliser le nouveau bucket S3 comme source multimédia pour Gramps Web, il suffit de définir l'option de configuration MEDIA_BASE_DIR configuration option sur s3://my_bucket_name.

Lors de l'utilisation de Docker Compose, l'option la plus simple est d'ajouter toutes les variables d'environnement au bloc env :

env:
  AWS_ACCESS_KEY_ID: my_access_key_id
  AWS_SECRET_ACCESS_KEY: my_secret_access_key
  MEDIA_BASE_DIR: s3://my_bucket_name
  AWS_DEFAULT_REGION: eu-central-1

Si vous souhaitez utiliser un stockage d'objets compatible S3 autre qu'AWS (par exemple, GCP ou pour des tests locaux), définissez la variable d'environnement AWS_ENDPOINT_URL.

Synchronisation des fichiers multimédias

Pour garder les fichiers multimédias synchronisés entre une installation locale de Gramps et les fichiers multimédias hébergés sur S3 de Gramps Web, l'addon Gramps Web Sync prend en charge la synchronisation des fichiers via l'API Web.