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
-
Entre no Azure:
- Abra o Azure Portal e faça login com sua conta Microsoft.
-
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
-
Navegue até Access Keys:
- Na sua conta de armazenamento recém-criada, vá para "Access keys" na barra lateral.
-
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.
-
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.
-
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
falsese você não quiser que seus blobs sejam acessíveis publicamente por padrão. Defina comotruese 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
-
Criar uma Storage Account:
Faça login no Azure Portal, crie uma storage account e aguarde a conclusão da implantação. -
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.
- Atualizar Variáveis de Ambiente:
No seu arquivo.env, defina um dos seguintes:
AZURE_STORAGE_CONNECTION_STRING(para a Opção A), ouAZURE_STORAGE_ACCOUNT_NAME(para a Opção B), juntamente com:AZURE_STORAGE_PUBLIC_ACCESSeAZURE_CONTAINER_NAME
- Configure o LibreChat:
DefinafileStrategycomo"azure_blob"no seu arquivo de configuraçãolibrechat.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:
Opção A: Usando a extensão do VS Code (Recomendado para desenvolvimento)
- Instale a extensão Azurite para o VS Code
- Abra a paleta de comandos (Ctrl+Shift+P ou Cmd+Shift+P)
- 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/azuriteOpção C: Usando npm
npm install -g azurite
azurite --silent --location /path/to/azurite/workspace --debug /path/to/debug/log2. 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=filesNotas:
- O valor
AccountKeyé a chave de desenvolvimento padrão usada pelo Azurite - A conexão usa o protocolo
httpem vez dehttpspara desenvolvimento local - O
BlobEndpointaponta 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:
- Inicie sua aplicação LibreChat
- Tente fazer o upload de um arquivo através da interface
- 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?
CloudFront com S3
Configure o Amazon CloudFront como a camada de CDN para arquivos do LibreChat armazenados no S3, incluindo links de mídia estáveis, cookies assinados e URLs de download assinadas.
CDN do Firebase
Este documento fornece instruções para configurar o Firebase Storage como uma CDN para o LibreChat