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

Firebase CDN

本文档提供了将 Firebase Storage 设置为 LibreChat CDN 的说明

Firebase Storage 与 Firebase Hosting 的全球 CDN 集成,让您可以通过世界各地的边缘节点提供存储在 Firebase Storage 中的文件。它是 LibreChat 支持 CDN 的文件存储选项之一,另一个是 CloudFront for S3

您需要准备什么

一个 Google 账号和大约 10 分钟的时间。你需要创建一个 Firebase 项目,启用 Cloud Storage,注册一个 Web 应用以获取凭据,然后将其指向 LibreChat。

创建 Firebase 项目

打开 Firebase 并登录。 前往 Firebase 网站,点击 Get started,然后使用您的 Google 账号登录。

为您的项目命名。 如果您已有项目,可以复用与 Google OAuth 相同的项目。

为 Firebase 项目命名

配置 Google Analytics(可选)。 你可以为此项目禁用 Google Analytics。

Google Analytics 开关

创建项目。 等待 20-30 秒以完成配置,然后点击 Continue

项目准备就绪,点击继续

启用云存储

打开所有产品。 在项目仪表板中,点击 All Products

All Products 菜单

选择 Storage,然后点击 Get Started

选择存储

Storage Get Started

确认安全规则。 点击 Next 继续。

Security rules step

选择一个云存储位置,然后完成设置并返回到项目概览

选择云存储位置

注册 Web 应用

添加一个 Web 应用。 在“项目概览”(Project Overview) 页面,点击项目名称下方的 + Add app,然后选择 Web

添加 Web 应用

注册应用并为其设置一个昵称。

注册应用

复制您的 firebaseConfig 值。 将显示的配置保存到安全的地方。

Firebase 配置值

将这些值添加到您的 .env 文件中。 将每个 firebaseConfig 值映射到对应的变量:

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                     # appId

更新存储规则

Open Storage rules. 返回 Project Overview,选择 Storage,然后打开 Rules 选项卡。

Open Storage

允许读写访问。allow read, write: if false; 修改为 if true;,使其符合下方的规则:

rules_version = '2';
 
service firebase.storage {
  match /b/{bucket}/o {
    match /images/{userId}/{fileName} {
      allow read, write: if true;
    }
  }
}

更新后的存储规则

发布您的更改。

Publish rules

配置 LibreChat

在你的 librechat.yaml 配置文件中将 fileStrategy 设置为 firebase,以便 LibreChat 使用 Firebase 进行文件存储:

version: 1.3.5
cache: true
fileStrategy: 'firebase'

有关此文件的更多信息,请参阅 librechat.yaml 指南

启用 PNG 导出的 CORS

仅在 PNG 导出时需要

将对话导出为 PNG 会在浏览器中直接从 Firebase Storage 获取图像。如果没有允许您域名的 CORS 策略,这些请求将被拦截。如果您不将对话导出为 PNG,则可以跳过此部分。

创建 CORS 配置文件。 在文本编辑器中创建 cors.json,并允许来自您域名的访问:

[
  {
    "origin": ["https://ai.example.com"],
    "method": ["GET", "POST", "DELETE", "PUT"],
    "maxAgeSeconds": 3600
  }
]

应用配置。 在包含 cors.json 的目录下,运行以下命令,并将 <your-cloud-storage-bucket> 替换为您的存储桶名称:

gsutil cors set cors.json gs://<your-cloud-storage-bucket>

验证设置。 获取当前生效的策略并确认其与 cors.json 一致:

gsutil cors get gs://<your-cloud-storage-bucket>

进行测试。 从你允许的来源将对话导出为 PNG。如果配置正确,导出将成功且不会出现 CORS 错误。

安全提示

仅允许受信任的源进行 CORS,并将方法和标头限制为您部署实际所需的内容。

这篇指南怎么样?