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

Azure Blob Storage

Este documento fornece instruções para configurar o Azure Blob Storage para o LibreChat

Configuração de Produção

O Azure Blob Storage oferece armazenamento de objetos escalável e seguro para arquivos no LibreChat. Siga estas etapas para configurar seu Azure Blob Storage.

1. Criar uma Azure Storage Account

  1. Entre no Azure:

    • Abra o Azure Portal e faça login com sua conta Microsoft.
  2. Criar uma Storage Account:

    • Clique em "Create a resource" e pesquise por "Storage account".
    • Clique em "Create" e preencha os detalhes necessários:
      • Assinatura e Grupo de Recursos: Escolha sua assinatura e selecione um grupo de recursos existente ou crie um novo.
      • Nome da Conta de Armazenamento: Insira um nome exclusivo (por exemplo, mylibrechatstorage).
      • Região: Selecione a região mais próxima de seus usuários.
      • Desempenho e Redundância: Escolha o nível de desempenho e o nível de redundância que melhor atendem às suas necessidades.
    • Clique em "Review + Create" e depois em "Create". Aguarde até que a implantação seja concluída.

2. Configurar Autenticação

Você tem duas opções para autenticar com sua Azure Storage Account:

Opção A: Usando uma Connection String

  1. Navegue até Access Keys:

    • Na sua conta de armazenamento recém-criada, vá para "Access keys" na barra lateral.
  2. Copiar String de Conexão:

    • Copie uma das strings de conexão fornecidas. Esta string inclui as credenciais necessárias para se conectar à sua conta de Blob Storage.

Opção B: Usando Managed Identity

Se a sua aplicação LibreChat estiver sendo executada em um serviço do Azure que suporte Managed Identity (como uma Azure VM, App Service ou AKS), você pode usá-la em vez de uma connection string.

  1. Atribuir Identidade Gerenciada:

    • Certifique-se de que seu recurso Azure (VM, App Service ou AKS) tenha uma Managed Identity atribuída pelo sistema ou pelo usuário habilitada.
  2. Conceder permissões de armazenamento:

    • Na sua conta de armazenamento, atribua a função Storage Blob Data Contributor (ou uma função com escopo semelhante) à sua Managed Identity. Isso permite que sua aplicação acesse o Blob Storage sem uma string de conexão.

3. Atualize suas variáveis de ambiente

Crie ou atualize seu arquivo .env na raiz do seu projeto com a seguinte configuração:

# 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: Defina isso se você estiver usando a Opção A.
  • AZURE_STORAGE_ACCOUNT_NAME: Defina isso se você estiver usando a Opção B (Identidade Gerenciada). Não defina ambos.
  • AZURE_STORAGE_PUBLIC_ACCESS: Defina como false se você não quiser que seus blobs sejam acessíveis publicamente por padrão. Defina como true se você precisar de acesso público (por exemplo, para imagens visualizáveis publicamente).
  • AZURE_CONTAINER_NAME: Este é o nome do container que sua aplicação usará (por exemplo, files). A aplicação criará automaticamente este container caso ele não exista.

4. Configure o LibreChat para usar o Azure Blob Storage

Atualize seu arquivo de configuração do LibreChat (librechat.yaml) para especificar que a aplicação deve usar o Azure Blob Storage para o gerenciamento de arquivos:

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

O Azure Blob Storage é um armazenamento de objetos, não uma CDN

O Azure Blob Storage armazena e serve arquivos diretamente da origem — ele não é uma CDN. Imagens e avatares são melhor servidos através de uma CDN para desempenho ideal e entrega global. Atualmente, o Firebase é a única opção de armazenamento com suporte a CDN.

Você pode usar fileStrategies para rotear apenas avatares e imagens para o Firebase, mantendo documentos no Azure Blob Storage:

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

Resumo

  1. Criar uma Storage Account:
    Faça login no Azure Portal, crie uma storage account e aguarde a conclusão da implantação.

  2. Configurar Autenticação:

  • Opção A: Obtenha a string de conexão em "Access keys" na sua conta de armazenamento.
  • Opção B: Use a Managed Identity habilitando-a em seu recurso Azure e concedendo a ele as permissões de armazenamento apropriadas.
  1. Atualizar Variáveis de Ambiente:
    No seu arquivo .env, defina um dos seguintes:
  • AZURE_STORAGE_CONNECTION_STRING (para a Opção A), ou
  • AZURE_STORAGE_ACCOUNT_NAME (para a Opção B), juntamente com:
  • AZURE_STORAGE_PUBLIC_ACCESS e
  • AZURE_CONTAINER_NAME
  1. Configure o LibreChat:
    Defina fileStrategy como "azure_blob" no seu arquivo de configuração librechat.yaml.

Com estas etapas, sua aplicação LibreChat criará automaticamente o container (caso ele não exista) e gerenciará uploads, downloads e exclusões de arquivos usando o Azure Blob Storage. A Managed Identity oferece uma alternativa segura ao eliminar a necessidade de credenciais de longo prazo.

Desenvolvimento Local com Azurite

Para desenvolvimento e testes locais, você pode usar o Azurite, um emulador de Azure Storage que fornece um ambiente local para testar sua integração com o Azure Blob Storage sem a necessidade de uma conta Azure real.

1. Configurar o Azurite

Você pode executar o Azurite de várias maneiras:

  1. Instale a extensão Azurite para o VS Code
  2. Abra a paleta de comandos (Ctrl+Shift+P ou Cmd+Shift+P)
  3. Pesquise e selecione "Azurite: Start"

Isso iniciará o Azurite em segundo plano com as configurações padrão.

Opção B: Usando Docker

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

Opção C: Usando npm

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

2. Configure as variáveis de ambiente para desenvolvimento local

Adicione as seguintes variáveis de ambiente ao seu arquivo .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:

  • O valor AccountKey é a chave de desenvolvimento padrão usada pelo Azurite
  • A conexão usa o protocolo http em vez de https para desenvolvimento local
  • O BlobEndpoint aponta para a instância local do Azurite rodando na porta 10000

3. Verificar a Conexão

Para verificar se sua aplicação consegue se conectar à instância local do Azurite:

  1. Inicie sua aplicação LibreChat
  2. Tente fazer o upload de um arquivo através da interface
  3. Verifique os logs do Azurite para confirmar a conexão e as operações

Se você estiver usando a extensão do VS Code, você pode visualizar os logs do Azurite no painel Output selecionando "Azurite Blob" no menu suspenso.

Nota

A chave de conta padrão do Azurite é um valor fixo usado apenas para fins de desenvolvimento. Nunca use esta chave em ambientes de produção. Certifique-se sempre de que sua connection string permaneça segura e nunca a envie para um repositório público.

Como está este guia?