CDN de Firebase
Este documento proporciona instrucciones para configurar Firebase Storage como una CDN para LibreChat
Firebase Storage se integra con la CDN global de Firebase Hosting, lo que le permite servir archivos almacenados en Firebase Storage a través de ubicaciones perimetrales en todo el mundo. Es una de las opciones de almacenamiento de archivos respaldadas por CDN de LibreChat, junto con CloudFront for S3.
Lo que necesitarás
Una cuenta de Google y aproximadamente 10 minutos. Creará un proyecto de Firebase, habilitará Cloud Storage, registrará una aplicación web para obtener las credenciales y luego configurará LibreChat para que las utilice.
Crear un proyecto de Firebase
Abre Firebase e inicia sesión. Ve al sitio web de Firebase, haz clic en Get started e inicia sesión con tu cuenta de Google.
Asigne un nombre a su proyecto. Puede reutilizar el mismo proyecto que Google OAuth si ya tiene uno.
Configurar Google Analytics (opcional). Puedes deshabilitar Google Analytics para este proyecto.
Cree el proyecto. Espere de 20 a 30 segundos para que finalice el aprovisionamiento y, a continuación, haga clic en Continuar.
Habilitar almacenamiento en la nube
Abrir todos los productos. Desde el panel del proyecto, haga clic en All Products.
Seleccione Storage, luego haga clic en Get Started.
Confirma las reglas de seguridad. Haz clic en Next para continuar.
Elija una ubicación de almacenamiento en la nube, luego finalice la configuración y regrese a la Descripción general del proyecto.
Registrar una aplicación web
Añadir una aplicación web. En la vista general del proyecto (Project Overview), haz clic en + Add app debajo del nombre de tu proyecto y, a continuación, elige Web.
Registra la app y asÃgnale un apodo.
Copia tus valores de firebaseConfig. Guarda la configuración mostrada en un lugar seguro.
Agregue los valores a su archivo .env. Asigne cada valor de firebaseConfig a la variable correspondiente:
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 # appIdActualizar reglas de almacenamiento
Reglas de Open Storage. Regrese a la Project Overview, seleccione Storage, luego abra la pestaña Rules.
Permitir acceso de lectura y escritura. Cambie allow read, write: if false; a if true; para que coincida con las reglas a continuación:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /images/{userId}/{fileName} {
allow read, write: if true;
}
}
}Publica tus cambios.
Configurar LibreChat
Establezca fileStrategy en firebase en su archivo de configuración librechat.yaml para que LibreChat utilice Firebase para el almacenamiento de archivos:
version: 1.3.5
cache: true
fileStrategy: 'firebase'Para obtener más información sobre este archivo, consulta la guÃa de librechat.yaml.
Habilitar CORS para exportaciones PNG
Solo es necesario para exportaciones PNG
La exportación de conversaciones como PNG obtiene las imágenes directamente desde Firebase Storage en el navegador. Sin una polÃtica de CORS que permita su dominio, esas solicitudes serán bloqueadas. Omita esta sección si no exporta conversaciones como PNG.
Cree el archivo de configuración CORS. En un editor de texto, cree cors.json y permita el acceso desde su dominio:
[
{
"origin": ["https://ai.example.com"],
"method": ["GET", "POST", "DELETE", "PUT"],
"maxAgeSeconds": 3600
}
]Aplique la configuración. Desde el directorio que contiene cors.json, ejecute el siguiente comando, reemplazando <your-cloud-storage-bucket> con el nombre de su bucket:
gsutil cors set cors.json gs://<your-cloud-storage-bucket>Verifique la configuración. Recupere la polÃtica activa y confirme que coincide con cors.json:
gsutil cors get gs://<your-cloud-storage-bucket>Pruébelo. Exporte una conversación como PNG desde su origen permitido. Si todo está configurado correctamente, la exportación se realizará con éxito sin errores de CORS.
Consejo de seguridad
Solo permita CORS para orÃgenes de confianza y limite los métodos y encabezados a lo que su despliegue realmente necesite.
¿Qué te parece esta guÃa?