Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Stockage Blob Azure

Ce document fournit des instructions pour configurer Azure Blob Storage pour LibreChat

Configuration pour la production

Azure Blob Storage offre un stockage d'objets évolutif et sécurisé pour les fichiers dans LibreChat. Suivez ces étapes pour configurer votre Azure Blob Storage.

1. Créer un compte de stockage Azure

  1. Connectez-vous à Azure :

    • Ouvrez le Azure Portal et connectez-vous avec votre compte Microsoft.
  2. Créer un compte de stockage :

    • Cliquez sur "Create a resource" et recherchez "Storage account".
    • Cliquez sur "Create" et remplissez les détails requis :
      • Abonnement et groupe de ressources : Choisissez votre abonnement et sélectionnez un groupe de ressources existant ou créez-en un nouveau.
      • Nom du compte de stockage : Entrez un nom unique (par ex. mylibrechatstorage).
      • Région : Sélectionnez la région la plus proche de vos utilisateurs.
      • Performance & Redundancy : Choisissez le niveau de performance et le niveau de redondance qui correspondent le mieux à vos besoins.
    • Cliquez sur "Review + Create" puis sur "Create". Attendez que le déploiement soit terminé.

2. Configurer l'authentification

Vous avez deux options pour vous authentifier avec votre compte Azure Storage :

Option A : Utilisation d'une chaîne de connexion

  1. Accédez aux clés d'accès :

    • Dans votre compte de stockage nouvellement créé, allez dans "Access keys" dans la barre latérale.
  2. Copier la chaîne de connexion :

    • Copiez l'une des chaînes de connexion fournies. Cette chaîne inclut les identifiants requis pour vous connecter à votre compte Blob Storage.

Option B : Utilisation d'une identité gérée (Managed Identity)

Si votre application LibreChat s'exécute sur un service Azure prenant en charge Managed Identity (tel qu'une machine virtuelle Azure, App Service ou AKS), vous pouvez l'utiliser à la place d'une chaîne de connexion.

  1. Attribuer une identité gérée :

    • Assurez-vous que votre ressource Azure (VM, App Service ou AKS) dispose d'une Managed Identity assignée par le système ou par l'utilisateur.
  2. Accorder les permissions de stockage :

    • Dans votre compte de stockage, attribuez le rôle Storage Blob Data Contributor (ou un rôle à portée similaire) à votre Managed Identity. Cela permet à votre application d'accéder au Blob Storage sans chaîne de connexion.

3. Mettez à jour vos variables d'environnement

Créez ou mettez à jour votre fichier .env à la racine de votre projet avec la configuration suivante :

# Option A: Using a Connection String
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=yourAccountName;AccountKey=yourAccountKey;EndpointSuffix=core.windows.net
 
# Option B: Using Managed Identity (do not set the connection string if using Managed Identity)
AZURE_STORAGE_ACCOUNT_NAME=yourAccountName
 
AZURE_STORAGE_PUBLIC_ACCESS=false
AZURE_CONTAINER_NAME=files
  • AZURE_STORAGE_CONNECTION_STRING: Définissez ceci si vous utilisez l'Option A.
  • AZURE_STORAGE_ACCOUNT_NAME : Définissez cette variable si vous utilisez l'Option B (Identité gérée). Ne définissez pas les deux.
  • AZURE_STORAGE_PUBLIC_ACCESS: Définissez sur false si vous ne souhaitez pas que vos blobs soient accessibles publiquement par défaut. Définissez sur true si vous avez besoin d'un accès public (par exemple, pour des images consultables publiquement).
  • AZURE_CONTAINER_NAME : Il s'agit du nom du conteneur que votre application utilisera (par exemple, files). L'application créera automatiquement ce conteneur s'il n'existe pas.

4. Configurer LibreChat pour utiliser Azure Blob Storage

Mettez à jour votre fichier de configuration LibreChat (librechat.yaml) pour spécifier que l'application doit utiliser Azure Blob Storage pour la gestion des fichiers :

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

Azure Blob Storage est un stockage d'objets, pas un CDN

Azure Blob Storage stocke et sert les fichiers directement depuis l'origine — ce n'est pas un CDN. Les images et les avatars sont mieux servis via un CDN pour des performances optimales et une diffusion mondiale. Actuellement, Firebase est la seule option de stockage prise en charge par un CDN.

Vous pouvez utiliser fileStrategies pour acheminer uniquement les avatars et les images vers Firebase tout en conservant les documents sur Azure Blob Storage :

fileStrategies:
  avatar: "firebase"
  image: "firebase"
  document: "azure_blob"

Résumé

  1. Créer un compte de stockage :
    Connectez-vous au portail Azure, créez un compte de stockage et attendez la fin du déploiement.

  2. Configurer l'authentification :

  • Option A : Récupérez la chaîne de connexion depuis "Access keys" dans votre compte de stockage.
  • Option B : Utilisez une identité gérée (Managed Identity) en l'activant sur votre ressource Azure et en lui accordant les autorisations de stockage appropriées.
  1. Mise à jour des variables d'environnement :
    Dans votre fichier .env, définissez l'une ou l'autre des options suivantes :
  • AZURE_STORAGE_CONNECTION_STRING (pour l'Option A), ou
  • AZURE_STORAGE_ACCOUNT_NAME (pour l'Option B), ainsi que :
  • AZURE_STORAGE_PUBLIC_ACCESS et
  • AZURE_CONTAINER_NAME.
  1. Configurer LibreChat :
    Définissez fileStrategy sur "azure_blob" dans votre fichier de configuration librechat.yaml.

Avec ces étapes, votre application LibreChat créera automatiquement le conteneur (s'il n'existe pas) et gérera les téléchargements, les envois et les suppressions de fichiers en utilisant Azure Blob Storage. Managed Identity offre une alternative sécurisée en éliminant le besoin d'identifiants à long terme.

Développement local avec Azurite

Pour le développement et les tests locaux, vous pouvez utiliser Azurite, un émulateur de stockage Azure qui fournit un environnement local pour tester votre intégration Azure Blob Storage sans avoir besoin d'un compte Azure réel.

1. Configurer Azurite

Vous pouvez exécuter Azurite de plusieurs manières :

  1. Installez l'extension Azurite pour VS Code
  2. Ouvrez la palette de commandes (Ctrl+Shift+P ou Cmd+Shift+P)
  3. Recherchez et sélectionnez "Azurite: Start"

Ceci démarrera Azurite en arrière-plan avec les paramètres par défaut.

Option B : Utilisation de Docker

docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite

Option C : Utilisation de npm

npm install -g azurite
azurite --silent --location /path/to/azurite/workspace --debug /path/to/debug/log

2. Configurer les variables d'environnement pour le développement local

Ajoutez les variables d'environnement suivantes à votre fichier .env :

# Azurite connection string for local development
AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;"
AZURE_STORAGE_PUBLIC_ACCESS=true
AZURE_CONTAINER_NAME=files

Notes :

  • La valeur AccountKey est la clé de développement par défaut utilisée par Azurite
  • La connexion utilise le protocole http au lieu de https pour le développement local
  • Le BlobEndpoint pointe vers l'instance Azurite locale s'exécutant sur le port 10000

3. Vérifier la connexion

Pour vérifier que votre application peut se connecter à l'instance Azurite locale :

  1. Démarrez votre application LibreChat
  2. Tenter de télécharger un fichier via l'interface
  3. Vérifiez les journaux d'Azurite pour confirmer la connexion et les opérations

Si vous utilisez l'extension VS Code, vous pouvez consulter les journaux Azurite dans le panneau Output en sélectionnant "Azurite Blob" dans le menu déroulant.

Note

La clé de compte Azurite par défaut est une valeur fixe utilisée uniquement à des fins de développement. N'utilisez jamais cette clé dans des environnements de production. Assurez-vous toujours que votre chaîne de connexion reste sécurisée et ne la validez jamais dans un dépôt public.

Que pensez-vous de ce guide ?