Skip to content

Backends de stockage (Storage Backends) ​

Les backends de stockage conservent les fichiers bruts, les images issues de l’analyse et les artefacts exportés. Un espace peut enregistrer plusieurs instances, en désigner une par défaut et choisir un emplacement par base de connaissances.

Le multi-instance convient notamment lorsque :

  • des équipes ou projets distincts utilisent des buckets séparés pour l’usage et les droits ;
  • la région du bucket doit respecter des contraintes de localisation des données ;
  • une migration vers un stockage objet cloud se fait progressivement : nouvelles bases sur le nouveau backend, anciennes fichiers inchangés.
Paramètres stockage : liste multi-instance, instance par défaut et test de connectivité
Paramètres stockage : liste multi-instance, instance par défaut et test de connectivité

Enregistrer et choisir un backend ​

Un Admin d’espace gère les instances dans « Paramètres → Stockage » :

  1. Créer un backend, choisir le provider (local / minio / cos / tos / s3 / oss / ks3 / obs, aligné sur les providers du pipeline documentaire), renseigner les paramètres de connexion (table ci-dessous). La liste peut être restreinte par STORAGE_ALLOW_LIST ; vide = tous disponibles ;
  2. Tester la connexion : lecture/écriture réelle pour valider point de terminaison, bucket et identifiants ;
  3. Définir l’instance par défaut de l’espace. Les nouvelles bases sans instance explicite l’utilisent ;
  4. Si besoin, onglet « Stockage » de l’édition de base pour une instance dédiée.

Le backend n’est modifiable que si la base est vide ; avec des fichiers, le sélecteur est désactivé et un message indique la migration. Les chemins dépendent du backend à l’ingestion : un changement direct casse l’accès. Pour changer, créer une nouvelle base et migrer le contenu.

Paramètres de connexion ​

Champs communs à tous les providers ; access_key_id / secret_access_key chiffrés en base, masqués dans les réponses API.

NomTypeDéfautDescription
endpointstringvideAdresse du service. Obligatoire pour minio (mode=remote), tos, s3, oss, ks3, obs ; inutile pour cos. Contrôle SSRF à l’enregistrement ; adresses internes via SSRF_WHITELIST
regionstringvideRégion. Obligatoire pour cos, tos, s3, oss, ks3, obs
access_key_id / secret_access_keystringvideClés d’accès ; pour COS = SecretId / SecretKey. Inutiles pour local et MinIO mode=docker
bucket_namestringvideBucket, obligatoire sauf local
path_prefixstringvidePréfixe de clé objet : chemin relatif, sans / initial ni ..
modestringremoteMinIO seulement : docker = MinIO du déploiement (MINIO_ENDPOINT, etc.), remote = MinIO externe
use_sslboolfalseHTTPS pour MinIO, S3, OBS
force_path_styleboolfalseS3 seulement : style path ; souvent requis pour les services compatibles S3
app_idstringvideCOS seulement : AppID Tencent
temp_bucket_name / temp_regionstringvideCOS, TOS, OSS : bucket/région pour fichiers temporaires ; OSS requiert aussi use_temp_bucket=true
  • OBS : endpoint en nom de domaine → style virtual-hosted (<bucket>.<endpoint>) ; Huawei Cloud refuse le path-style sur domaine depuis 2023-12-30 ; IP → path-style. Sans domaine proxy, URL fichier <scheme>://<bucket>.<endpoint-host>/<key>.
  • Timeouts de transfert : upload/download S3, COS, KS3, OBS, OSS — plus de plafond global 30 s ; durée max 30 min par transfert ; connexion, TLS et en-têtes de réponse restent limités pour échouer vite si le pair disparaît.
  • Redirections KS3 : chaque saut est revu SSRF ; la signature n’est plus relayée vers l’hôte de redirection.

Différence avec le stockage vectoriel ​

Fichiers bruts et index de recherche sont gérés séparément :

Backend de stockage (Storage Backend)Stockage vectoriel (Vector Store)
ContenuFichiers bruts, images, exportsVecteurs et index de recherche
Configuration« Paramètres → Stockage »« Paramètres → Vector store »
Champ basestorage_backend_idvector_store_id
Chapitrecelui-ciMoteurs de recherche et stockage vectoriel

Référence API ​

MéthodeCheminPermission
GET/storage-backends/typesViewer+, liste des providers autorisés par STORAGE_ALLOW_LIST
GET/storage-backends、/storage-backends/:idViewer+
POST/storage-backendsAdmin+
PUT / DELETE/storage-backends/:idAdmin+
POST/storage-backends/testAdmin+, test avec paramètres non enregistrés
POST/storage-backends/:id/testAdmin+, test instance enregistrée
PUT/storage-backends/:id/defaultAdmin+, défaut de l’espace

Clé API : capacité manage_storage_backends ou full-access.

Modèle de données et règles de compatibilité ​

Table storage_backends (isolation tenant_id, suppression logique) :

ChampDescription
nameUnique dans l’espace (index partiel sous suppression logique)
providerType de stockage
configJSONB, clés chiffrées
sourceuser (UI ou API) / env (généré depuis variables d’environnement)
statusactive / disabled
legacy_aliasvoir ci-dessous

legacy_alias assure la compatibilité avec l’historique configuré par variables d’environnement. À la montée de version, un enregistrement alias permet de résoudre les chemins existants sans déplacer les données. Un seul alias par espace et par provider ; les instances créées manuellement restent distinctes.

Documentation issue de WeKnora v0.9.0 · MIT License