Connecter le stockage
Une fois qu’un backend de stockage objet compatible S3 est disponible - qu’il soit auto-hébergé ou basé sur le cloud - Relution doit être configuré pour l’utiliser.
Prérequis
Les informations suivantes sont nécessaires, à demander auprès du fournisseur de stockage objet :
| Paramètre | Description |
|---|---|
| Endpoint | L’URL de l’API S3. Facultatif pour AWS S3, l’endpoint étant alors déduit de la région. |
| Access Key | L’ID de la clé d’authentification |
| Secret Key | Le secret d’authentification |
| Nom du bucket | Le nom du bucket de stockage. Relution ne crée pas le bucket lui-même, il doit donc déjà exister et n’est utilisé que par cette instance Relution. |
| Région | Région du bucket (facultatif, par défaut eu-west-1). Pour AWS S3, la région réelle du bucket, par exemple eu-central-1. |
Si l’Access Key et la Secret Key restent vides, Relution s’authentifie via le profil d’instance. Cela n’est utile que pour un fonctionnement sur AWS EC2 avec un rôle IAM attribué.
Les exemples de configuration ci-dessous utilisent des valeurs d’exemple correspondant à Installer SeaweedFS →. Pour un backend ou un fournisseur différent, adapter ces valeurs en conséquence.
Configuration
Choisir une des deux options suivantes. Les deux permettent d’obtenir le même résultat.
Option A : utilisation de application.yml
Ajouter ce qui suit à l’application.yml :
relution:
storage:
resourceStorageType: S3
s3:
customEndpoint: http://seaweedfs:8333
accessKey: %ACCESS-KEY%
secretKey: %SECRET-KEY%
bucketName: relution
region: eu-west-1 # facultatif, par défaut : eu-west-1
Option B : utilisation de variables d’environnement
Ajouter ces variables d’environnement au service relution dans le compose.yaml :
services:
relution:
environment:
- RELUTION_STORAGE_RESOURCESTORAGETYPE=S3
- RELUTION_STORAGE_S3_CUSTOMENDPOINT=http://seaweedfs:8333
- RELUTION_STORAGE_S3_ACCESSKEY=%ACCESS-KEY%
- RELUTION_STORAGE_S3_SECRETKEY=%SECRET-KEY%
- RELUTION_STORAGE_S3_BUCKETNAME=relution
- RELUTION_STORAGE_S3_REGION=eu-west-1 # facultatif, par défaut : eu-west-1
Les valeurs sont indiquées sans guillemets, car dans cette forme de liste, Docker Compose conserve les guillemets comme partie de la valeur. Les entrées existantes sous environment: (par exemple TZ) sont conservées.
Si le stockage objet doit être chiffré avec une clé fournie par le client, cela doit être fait avant le premier démarrage : Chiffrement côté serveur (SSE-C) →
Démarrer les services
Télécharger les images les plus récentes :
docker compose pullDémarrer ou redémarrer les conteneurs :
docker compose up -dRelution commence automatiquement la migration du contenu de la table de base de données
resourcevers le bucket de stockage objet.
Tous les contenus ne sont pas transférés dans le bucket :
- Les fichiers jusqu’à 512 Ko restent dans la base de données (
relution.storage.s3.smallFileThreshold; la valeur0désactive cette règle). - Les certificats et les clés privées restent toujours chiffrés dans la base de données.
La première migration démarre au premier démarrage avec le stockage objet. Les ressources encore présentes dans la base de données sont ensuite traitées chaque jour à 3 h 00 (relution.storage.s3.resourceMigrationSchedule). Les transferts ayant échoué sont relancés au bout de 5 minutes.
Surveiller la progression
Observer la progression de la migration dans les logs :
docker logs -f relution
Chaque fichier transféré vers le stockage objet apparaît sous la forme Saving file <UUID> in S3 at key <Key>, les fichiers volumineux sous la forme Saving large file <UUID> in S3 via multipart upload. Avec le niveau de log par défaut, Relution n’affiche ni nombre total ni pourcentage. Les transferts ayant échoué apparaissent sous la forme Scheduling retry attempt for resource migration of <UUID> et sont relancés plus tard. Les ressources qui ne peuvent pas être migrées apparaissent sous la forme Won't migrate resource <UUID>.
Il est également possible de vérifier que des fichiers sont créés en consultant le backend de stockage objet (par exemple via l’interface web de SeaweedFS ou la console du fournisseur cloud).