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

Azure Blob Storage

Este documento proporciona instrucciones para configurar Azure Blob Storage para LibreChat

Configuración de producción

Azure Blob Storage ofrece almacenamiento de objetos escalable y seguro para archivos en LibreChat. Siga estos pasos para configurar su Azure Blob Storage.

1. Crear una Azure Storage Account

  1. Inicia sesión en Azure:

    • Abre el Azure Portal e inicia sesión con tu cuenta de Microsoft.
  2. Crear una cuenta de almacenamiento:

    • Haz clic en "Create a resource" y busca "Storage account".
    • Haz clic en "Create" y completa los detalles requeridos:
      • Suscripción y grupo de recursos: Elija su suscripción y seleccione un grupo de recursos existente o cree uno nuevo.
      • Nombre de la cuenta de almacenamiento: Introduzca un nombre único (p. ej., mylibrechatstorage).
      • Región: Seleccione la región más cercana a sus usuarios.
      • Rendimiento y redundancia: Elija el nivel de rendimiento y el nivel de redundancia que mejor se adapten a sus necesidades.
    • Haz clic en "Review + Create" y luego en "Create". Espera hasta que se complete la implementación.

2. Configurar la autenticación

Tienes dos opciones para autenticarte con tu Azure Storage Account:

Opción A: Uso de una cadena de conexión

  1. Navegar a Access Keys:

    • En su cuenta de almacenamiento recién creada, vaya a "Access keys" en la barra lateral.
  2. Copiar cadena de conexión:

    • Copia una de las cadenas de conexión proporcionadas. Esta cadena incluye las credenciales necesarias para conectarte a tu cuenta de Blob Storage.

Opción B: Uso de Managed Identity

Si su aplicación LibreChat se está ejecutando en un servicio de Azure que admite Managed Identity (como una Azure VM, App Service o AKS), puede usar eso en lugar de una cadena de conexión.

  1. Asignar identidad administrada:

    • Asegúrate de que tu recurso de Azure (VM, App Service o AKS) tenga habilitada una Managed Identity asignada por el sistema o por el usuario.
  2. Otorgar permisos de almacenamiento:

    • En su cuenta de almacenamiento, asigne el rol Storage Blob Data Contributor (o un rol con un alcance similar) a su Managed Identity. Esto permite que su aplicación acceda a Blob Storage sin necesidad de una cadena de conexión.

3. Actualiza tus variables de entorno

Cree o actualice su archivo .env en la raíz de su proyecto con la siguiente configuración:

# 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: Configúrelo si está utilizando la Opción A.
  • AZURE_STORAGE_ACCOUNT_NAME: Configure esto si está utilizando la Opción B (Identidad administrada). No configure ambos.
  • AZURE_STORAGE_PUBLIC_ACCESS: Establézcalo en false si no desea que sus blobs sean accesibles públicamente de forma predeterminada. Establézcalo en true si necesita acceso público (por ejemplo, para imágenes que se pueden ver públicamente).
  • AZURE_CONTAINER_NAME: Este es el nombre del contenedor que utilizará su aplicación (por ejemplo, files). La aplicación creará automáticamente este contenedor si no existe.

4. Configurar LibreChat para usar Azure Blob Storage

Actualice su archivo de configuración de LibreChat (librechat.yaml) para especificar que la aplicación debe utilizar Azure Blob Storage para el manejo de archivos:

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

Azure Blob Storage es almacenamiento de objetos, no una CDN

Azure Blob Storage almacena y sirve archivos directamente desde el origen; no es una CDN. Las imágenes y los avatares se sirven mejor a través de una CDN para un rendimiento óptimo y una entrega global. Actualmente, Firebase es la única opción de almacenamiento respaldada por una CDN.

Puedes usar fileStrategies para enrutar solo avatares e imágenes a Firebase mientras mantienes los documentos en Azure Blob Storage:

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

Resumen

  1. Crear una cuenta de almacenamiento:
    Inicie sesión en el Azure Portal, cree una cuenta de almacenamiento y espere a que finalice la implementación.

  2. Configurar la autenticación:

  • Opción A: Obtenga la cadena de conexión desde "Access keys" en su cuenta de almacenamiento.
  • Opción B: Utilice Managed Identity habilitándola en su recurso de Azure y otorgándole los permisos de almacenamiento adecuados.
  1. Actualizar variables de entorno:
    En tu archivo .env, configura cualquiera de las siguientes:
  • AZURE_STORAGE_CONNECTION_STRING (para la Opción A), o
  • AZURE_STORAGE_ACCOUNT_NAME (para la Opción B), junto con:
  • AZURE_STORAGE_PUBLIC_ACCESS y
  • AZURE_CONTAINER_NAME.
  1. Configurar LibreChat:
    Establezca fileStrategy en "azure_blob" en su archivo de configuración librechat.yaml.

Con estos pasos, su aplicación LibreChat creará automáticamente el contenedor (si no existe) y gestionará la carga, descarga y eliminación de archivos utilizando Azure Blob Storage. Managed Identity proporciona una alternativa segura al eliminar la necesidad de credenciales a largo plazo.

Desarrollo local con Azurite

Para el desarrollo y pruebas locales, puede utilizar Azurite, un emulador de Azure Storage que proporciona un entorno local para probar su integración con Azure Blob Storage sin necesidad de una cuenta de Azure real.

1. Configurar Azurite

Puedes ejecutar Azurite de varias maneras:

  1. Instale la extensión Azurite para VS Code
  2. Abre la paleta de comandos (Ctrl+Shift+P o Cmd+Shift+P)
  3. Busca y selecciona "Azurite: Start"

Esto iniciará Azurite en segundo plano con la configuración predeterminada.

Opción B: Usando Docker

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

Opción C: Usando npm

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

2. Configurar variables de entorno para el desarrollo local

Agregue las siguientes variables de entorno a su archivo .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

Notas:

  • El valor AccountKey es la clave de desarrollo predeterminada utilizada por Azurite
  • La conexión utiliza el protocolo http en lugar de https para el desarrollo local
  • El BlobEndpoint apunta a la instancia local de Azurite que se ejecuta en el puerto 10000

3. Verificar la conexión

Para verificar que su aplicación puede conectarse a la instancia local de Azurite:

  1. Inicie su aplicación LibreChat
  2. Intenta subir un archivo a través de la interfaz
  3. Revisa los registros de Azurite para confirmar la conexión y las operaciones

Si estás utilizando la extensión de VS Code, puedes ver los registros de Azurite en el panel de Output seleccionando "Azurite Blob" en el menú desplegable.

Nota

La clave de cuenta predeterminada de Azurite es un valor fijo utilizado únicamente para fines de desarrollo. Nunca utilice esta clave en entornos de producción. Asegúrese siempre de que su cadena de conexión permanezca segura y nunca la incluya en un repositorio público.

¿Qué te parece esta guía?