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

Azure Blob Storage

本文档提供了为 LibreChat 设置 Azure Blob Storage 的说明

生产环境设置

Azure Blob Storage 为 LibreChat 中的文件提供了可扩展且安全的的对象存储。请按照以下步骤配置您的 Azure Blob Storage。

1. 创建 Azure Storage Account

  1. 登录 Azure:

    • 打开 Azure Portal 并使用您的 Microsoft 账户登录。
  2. 创建存储账户:

    • 点击 "Create a resource" 并搜索 "Storage account"
    • 点击 "Create" 并填写所需详细信息:
      • 订阅与资源组: 选择您的订阅,并选择一个现有资源组或创建一个新资源组。
      • 存储账户名称 (Storage Account Name): 输入一个唯一的名称(例如 mylibrechatstorage)。
      • 区域: 选择离您的用户最近的区域。
      • 性能与冗余: 选择最适合您需求的性能层级和冗余级别。
    • 点击 "Review + Create",然后点击 "Create"。等待部署完成。

2. 设置身份验证

您有两种方式可以对您的 Azure Storage Account 进行身份验证:

选项 A:使用连接字符串

  1. 导航至访问密钥 (Access Keys):

    • 在您新创建的存储账户中,转到侧边栏中的 "Access keys"
  2. 复制连接字符串:

    • 复制所提供的连接字符串之一。该字符串包含连接到您的 Blob Storage 账户所需的凭据。

选项 B:使用托管标识 (Managed Identity)

如果您的 LibreChat 应用程序运行在支持托管标识(Managed Identity)的 Azure 服务上(例如 Azure VM、App Service 或 AKS),则可以使用该标识来代替连接字符串。

  1. 分配托管标识 (Managed Identity):

    • 确保您的 Azure 资源(VM、App Service 或 AKS)已启用系统分配或用户分配的 Managed Identity。
  2. 授予存储权限:

    • 在您的存储账户中,将 Storage Blob Data Contributor(或具有类似范围的角色)分配给您的 Managed Identity。这允许您的应用程序在无需连接字符串的情况下访问 Blob Storage。

3. 更新您的环境变量

在项目根目录中创建或更新您的 .env 文件,并填入以下配置:

# 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: 如果您正在使用选项 A,请设置此项。
  • AZURE_STORAGE_ACCOUNT_NAME: 如果您使用的是选项 B(托管标识),请设置此项。请勿同时设置两者。
  • AZURE_STORAGE_PUBLIC_ACCESS: 如果您不希望您的 blob 默认公开访问,请设置为 false。如果您需要公开访问(例如,用于可公开查看的图片),请设置为 true
  • AZURE_CONTAINER_NAME: 这是您的应用程序将使用的容器名称(例如 files)。如果该容器不存在,应用程序将自动创建它。

4. 配置 LibreChat 以使用 Azure Blob Storage

更新您的 LibreChat 配置文件 (librechat.yaml),以指定应用程序应使用 Azure Blob Storage 进行文件处理:

version: 1.3.5
cache: true
fileStrategy: "azure_blob"

Azure Blob Storage 是对象存储,而非 CDN

Azure Blob Storage 直接从源站存储和提供文件——它不是 CDN。为了获得最佳性能和全球分发效果,图像和头像最好通过 CDN 提供服务。目前,Firebase 是唯一支持 CDN 的存储选项。

您可以使用 fileStrategies 将头像和图片路由到 Firebase,同时将文档保留在 Azure Blob Storage 上:

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

摘要

  1. 创建存储账户:
    登录 Azure Portal,创建一个存储账户,并等待部署完成。

  2. 设置身份验证:

  • 选项 A: 从存储账户的 "Access keys" 中获取连接字符串。
  • 选项 B: 通过在 Azure 资源上启用托管标识(Managed Identity)并授予其相应的存储权限来使用它。
  1. 更新环境变量:
    在您的 .env 文件中,设置以下任一项:
  • AZURE_STORAGE_CONNECTION_STRING(适用于选项 A),或
  • AZURE_STORAGE_ACCOUNT_NAME(适用于选项 B),以及:
  • AZURE_STORAGE_PUBLIC_ACCESS
  • AZURE_CONTAINER_NAME
  1. 配置 LibreChat:
    在您的 librechat.yaml 配置文件中,将 fileStrategy 设置为 "azure_blob"

通过这些步骤,您的 LibreChat 应用程序将自动创建容器(如果不存在),并使用 Azure Blob Storage 管理文件上传、下载和删除。托管标识 (Managed Identity) 提供了一种安全的替代方案,无需使用长期凭据。

使用 Azurite 进行本地开发

对于本地开发和测试,您可以使用 Azurite,这是一个 Azure Storage 模拟器,它提供了一个本地环境,用于测试您的 Azure Blob Storage 集成,而无需实际的 Azure 账户。

1. 设置 Azurite

您可以通过多种方式运行 Azurite:

  1. 为 VS Code 安装 Azurite extension
  2. 打开命令面板 (Ctrl+Shift+P 或 Cmd+Shift+P)
  3. 搜索并选择 "Azurite: Start"

这将使用默认设置在后台启动 Azurite。

选项 B:使用 Docker

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

选项 C:使用 npm

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

2. 为本地开发配置环境变量

将以下环境变量添加到您的 .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

注意:

  • AccountKey 值是 Azurite 使用的默认开发密钥。
  • 该连接在本地开发时使用 http 协议而非 https
  • BlobEndpoint 指向运行在 10000 端口上的本地 Azurite 实例

3. 验证连接

要验证您的应用程序是否可以连接到本地 Azurite 实例:

  1. 启动您的 LibreChat 应用程序
  2. 尝试通过界面上传文件
  3. 检查 Azurite 日志以确认连接和操作

如果您正在使用 VS Code 扩展,可以通过在下拉菜单中选择“Azurite Blob”来在输出(Output)面板中查看 Azurite 日志。

注意

默认的 Azurite 账户密钥是一个仅用于开发目的的固定值。切勿在生产环境中使用此密钥。请始终确保您的连接字符串保持安全,且绝不要将其提交到公共仓库中。

这篇指南怎么样?