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

Archiviazione Blob Azure

Questo documento fornisce le istruzioni per configurare Azure Blob Storage per LibreChat

Configurazione per la produzione

Azure Blob Storage offre uno storage di oggetti scalabile e sicuro per i file in LibreChat. Segui questi passaggi per configurare il tuo Azure Blob Storage.

1. Crea un Azure Storage Account

  1. Accedi ad Azure:

    • Apri il Azure Portal e accedi con il tuo account Microsoft.
  2. Crea un account di archiviazione:

    • Fai clic su "Create a resource" e cerca "Storage account".
    • Fai clic su "Create" e inserisci i dettagli richiesti:
      • Sottoscrizione e Gruppo di risorse: Scegli la tua sottoscrizione e seleziona un gruppo di risorse esistente oppure creane uno nuovo.
      • Nome dell'account di archiviazione: Inserisci un nome univoco (ad esempio, mylibrechatstorage).
      • Regione: Seleziona la regione più vicina ai tuoi utenti.
      • Prestazioni e Ridondanza: Scegli il livello di prestazioni e il grado di ridondanza più adatti alle tue esigenze.
    • Fai clic su "Review + Create" e poi su "Create". Attendi il completamento del deployment.

2. Configura l'autenticazione

Hai due opzioni per l'autenticazione con il tuo Azure Storage Account:

Opzione A: Utilizzo di una Connection String

  1. Vai a Access Keys:

    • Nel tuo account di archiviazione appena creato, vai su "Access keys" nella barra laterale.
  2. Copia stringa di connessione:

    • Copia una delle stringhe di connessione fornite. Questa stringa include le credenziali necessarie per connettersi al tuo account di Blob Storage.

Opzione B: Utilizzo di Managed Identity

Se la tua applicazione LibreChat è in esecuzione su un servizio Azure che supporta Managed Identity (come una VM Azure, un App Service o AKS), puoi utilizzarlo al posto di una stringa di connessione.

  1. Assegna identità gestita:

    • Assicurati che la tua risorsa Azure (VM, App Service o AKS) abbia una Managed Identity assegnata dal sistema o dall'utente abilitata.
  2. Concedi i permessi di archiviazione:

    • Nel tuo account di archiviazione, assegna il ruolo Storage Blob Data Contributor (o un ruolo con ambito simile) alla tua Managed Identity. Ciò consente alla tua applicazione di accedere a Blob Storage senza una stringa di connessione.

3. Aggiorna le tue variabili d'ambiente

Crea o aggiorna il tuo file .env nella root del progetto con la seguente configurazione:

# 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: Impostalo se stai utilizzando l'Opzione A.
  • AZURE_STORAGE_ACCOUNT_NAME: Imposta questo valore se stai utilizzando l'Opzione B (Managed Identity). Non impostarli entrambi.
  • AZURE_STORAGE_PUBLIC_ACCESS: Impostare su false se non si desidera che i propri blob siano accessibili pubblicamente per impostazione predefinita. Impostare su true se è necessario l'accesso pubblico (ad esempio, per immagini visualizzabili pubblicamente).
  • AZURE_CONTAINER_NAME: Questo è il nome del container che la tua applicazione utilizzerà (ad esempio, files). L'applicazione creerà automaticamente questo container se non esiste.

4. Configurare LibreChat per utilizzare Azure Blob Storage

Aggiorna il tuo file di configurazione di LibreChat (librechat.yaml) per specificare che l'applicazione deve utilizzare Azure Blob Storage per la gestione dei file:

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

Azure Blob Storage è un object storage, non una CDN

Azure Blob Storage archivia e serve i file direttamente dall'origine — non è una CDN. Le immagini e gli avatar vengono serviti al meglio tramite una CDN per prestazioni ottimali e una distribuzione globale. Attualmente, Firebase è l'unica opzione di archiviazione supportata da CDN.

Puoi utilizzare fileStrategies per instradare solo avatar e immagini su Firebase, mantenendo i documenti su Azure Blob Storage:

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

Riepilogo

  1. Crea un account di archiviazione:
    Accedi al portale Azure, crea un account di archiviazione e attendi il completamento della distribuzione.

  2. Configurazione dell'autenticazione:

  • Opzione A: Recupera la stringa di connessione da "Access keys" nel tuo account di archiviazione.
  • Opzione B: Utilizzare Managed Identity abilitandola sulla propria risorsa Azure e concedendo le autorizzazioni di archiviazione appropriate.
  1. Aggiorna le variabili d'ambiente:
    Nel tuo file .env, imposta uno dei seguenti:
  • AZURE_STORAGE_CONNECTION_STRING (per l'Opzione A), o
  • AZURE_STORAGE_ACCOUNT_NAME (per l'Opzione B), insieme a:
  • AZURE_STORAGE_PUBLIC_ACCESS e
  • AZURE_CONTAINER_NAME.
  1. Configura LibreChat:
    Imposta fileStrategy su "azure_blob" nel tuo file di configurazione librechat.yaml.

Con questi passaggi, la tua applicazione LibreChat creerà automaticamente il container (se non esiste) e gestirà il caricamento, il download e l'eliminazione dei file utilizzando Azure Blob Storage. Managed Identity fornisce un'alternativa sicura eliminando la necessità di credenziali a lungo termine.

Sviluppo locale con Azurite

Per lo sviluppo e il test in locale, puoi utilizzare Azurite, un emulatore di Azure Storage che fornisce un ambiente locale per testare la tua integrazione con Azure Blob Storage senza bisogno di un account Azure reale.

1. Configurare Azurite

Puoi eseguire Azurite in diversi modi:

  1. Installa l'estensione Azurite per VS Code
  2. Apri la tavolozza dei comandi (Ctrl+Shift+P o Cmd+Shift+P)
  3. Cerca e seleziona "Azurite: Start"

Questo avvierà Azurite in background con le impostazioni predefinite.

Opzione B: Utilizzo di Docker

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

Opzione C: Utilizzo di npm

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

2. Configurare le variabili d'ambiente per lo sviluppo locale

Aggiungi le seguenti variabili d'ambiente al tuo file .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

Note:

  • Il valore AccountKey è la chiave di sviluppo predefinita utilizzata da Azurite
  • La connessione utilizza il protocollo http invece di https per lo sviluppo locale
  • Il BlobEndpoint punta all'istanza locale di Azurite in esecuzione sulla porta 10000

3. Verifica la connessione

Per verificare che la tua applicazione possa connettersi all'istanza locale di Azurite:

  1. Avvia la tua applicazione LibreChat
  2. Prova a caricare un file tramite l'interfaccia
  3. Controlla i log di Azurite per confermare la connessione e le operazioni

Se stai utilizzando l'estensione VS Code, puoi visualizzare i log di Azurite nel pannello Output selezionando "Azurite Blob" dal menu a discesa.

Nota

La chiave dell'account Azurite predefinita è un valore fisso utilizzato esclusivamente a scopo di sviluppo. Non utilizzare mai questa chiave in ambienti di produzione. Assicurati sempre che la tua stringa di connessione rimanga sicura e non eseguire mai il commit in un repository pubblico.

Com’è questa guida?