CDN do Firebase
Este documento fornece instruções para configurar o Firebase Storage como uma CDN para o LibreChat
O Firebase Storage integra-se à CDN global do Firebase Hosting, permitindo que você sirva arquivos armazenados no Firebase Storage através de localizações de borda (edge locations) ao redor do mundo. É uma das opções de armazenamento de arquivos com suporte a CDN do LibreChat, juntamente com o CloudFront for S3.
O que você precisará
Uma conta Google e aproximadamente 10 minutos. Você criará um projeto no Firebase, ativará o Cloud Storage, registrará um aplicativo web para obter as credenciais e, em seguida, configurará o LibreChat para utilizá-las.
Criar um projeto no Firebase
Abra o Firebase e faça login. Acesse o site do Firebase, clique em Get started e faça login com sua conta Google.
Nomeie seu projeto. Você pode reutilizar o mesmo projeto do Google OAuth, caso já possua um.
Configure o Google Analytics (opcional). Você pode desativar o Google Analytics para este projeto.
Crie o projeto. Aguarde 20-30 segundos para que o provisionamento seja concluído e, em seguida, clique em Continue.
Habilitar Armazenamento em Nuvem
Abrir Todos os Produtos. No painel do projeto, clique em All Products.
Selecione Storage, então clique em Get Started.
Confirme as regras de segurança. Clique em Next para continuar.
Escolha um local de Armazenamento em Nuvem, depois conclua a configuração e retorne para a Visão Geral do Projeto.
Registrar um Web App
Adicione um aplicativo web. Na Visão Geral do Projeto (Project Overview), clique em + Add app abaixo do nome do seu projeto e, em seguida, escolha Web.
Registre o app e dê a ele um apelido.
Copie os seus valores de firebaseConfig. Salve a configuração exibida em um local seguro.
Adicione os valores ao seu .env file. Mapeie cada valor de firebaseConfig para a variável correspondente:
FIREBASE_API_KEY=api_key # apiKey
FIREBASE_AUTH_DOMAIN=auth_domain # authDomain
FIREBASE_PROJECT_ID=project_id # projectId
FIREBASE_STORAGE_BUCKET=storage_bucket # storageBucket
FIREBASE_MESSAGING_SENDER_ID=messaging_sender_id # messagingSenderId
FIREBASE_APP_ID=1:your_app_id # appIdAtualizar Regras de Armazenamento
Regras de Open Storage. Retorne à Visão Geral do Projeto, selecione Storage e, em seguida, abra a aba Rules.
Permitir acesso de leitura e gravação. Altere allow read, write: if false; para if true; para que corresponda às regras abaixo:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /images/{userId}/{fileName} {
allow read, write: if true;
}
}
}Publique suas alterações.
Configurar o LibreChat
Defina fileStrategy como firebase no seu arquivo de configuração librechat.yaml para que o LibreChat utilize o Firebase para armazenamento de arquivos:
version: 1.3.5
cache: true
fileStrategy: 'firebase'Para mais informações sobre este arquivo, consulte o guia do librechat.yaml.
Habilitar CORS para Exportações PNG
Necessário apenas para exportações em PNG
Exportar conversas como PNG busca imagens diretamente do Firebase Storage no navegador. Sem uma política de CORS que permita o seu domínio, essas solicitações são bloqueadas. Ignore esta seção se você não exporta conversas como PNG.
Crie o arquivo de configuração CORS. Em um editor de texto, crie o cors.json e permita o acesso a partir do seu domínio:
[
{
"origin": ["https://ai.example.com"],
"method": ["GET", "POST", "DELETE", "PUT"],
"maxAgeSeconds": 3600
}
]Aplique a configuração. A partir do diretório que contém o cors.json, execute o comando abaixo, substituindo <your-cloud-storage-bucket> pelo nome do seu bucket:
gsutil cors set cors.json gs://<your-cloud-storage-bucket>Verifique as configurações. Recupere a política ativa e confirme se ela corresponde ao cors.json:
gsutil cors get gs://<your-cloud-storage-bucket>Teste. Exporte uma conversa como PNG a partir da sua origem permitida. Se tudo estiver configurado corretamente, a exportação será bem-sucedida sem erros de CORS.
Dica de segurança
Permita CORS apenas para origens confiáveis e limite os métodos e cabeçalhos ao que sua implantação realmente precisa.
Como está este guia?