Azure Blob Storage
本文档提供了为 LibreChat 设置 Azure Blob Storage 的说明
生产环境设置
Azure Blob Storage 为 LibreChat 中的文件提供了可扩展且安全的的对象存储。请按照以下步骤配置您的 Azure Blob Storage。
1. 创建 Azure Storage Account
-
登录 Azure:
- 打开 Azure Portal 并使用您的 Microsoft 账户登录。
-
创建存储账户:
- 点击 "Create a resource" 并搜索 "Storage account"。
- 点击 "Create" 并填写所需详细信息:
- 订阅与资源组: 选择您的订阅,并选择一个现有资源组或创建一个新资源组。
- 存储账户名称 (Storage Account Name): 输入一个唯一的名称(例如
mylibrechatstorage)。 - 区域: 选择离您的用户最近的区域。
- 性能与冗余: 选择最适合您需求的性能层级和冗余级别。
- 点击 "Review + Create",然后点击 "Create"。等待部署完成。
2. 设置身份验证
您有两种方式可以对您的 Azure Storage Account 进行身份验证:
选项 A:使用连接字符串
-
导航至访问密钥 (Access Keys):
- 在您新创建的存储账户中,转到侧边栏中的 "Access keys"。
-
复制连接字符串:
- 复制所提供的连接字符串之一。该字符串包含连接到您的 Blob Storage 账户所需的凭据。
选项 B:使用托管标识 (Managed Identity)
如果您的 LibreChat 应用程序运行在支持托管标识(Managed Identity)的 Azure 服务上(例如 Azure VM、App Service 或 AKS),则可以使用该标识来代替连接字符串。
-
分配托管标识 (Managed Identity):
- 确保您的 Azure 资源(VM、App Service 或 AKS)已启用系统分配或用户分配的 Managed Identity。
-
授予存储权限:
- 在您的存储账户中,将 Storage Blob Data Contributor(或具有类似范围的角色)分配给您的 Managed Identity。这允许您的应用程序在无需连接字符串的情况下访问 Blob Storage。
3. 更新您的环境变量
在项目根目录中创建或更新您的 .env 文件,并填入以下配置:
- 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 进行文件处理:
Azure Blob Storage 是对象存储,而非 CDN
Azure Blob Storage 直接从源站存储和提供文件——它不是 CDN。为了获得最佳性能和全球分发效果,图像和头像最好通过 CDN 提供服务。目前,Firebase 是唯一支持 CDN 的存储选项。
您可以使用 fileStrategies 将头像和图片路由到 Firebase,同时将文档保留在 Azure Blob Storage 上:
摘要
-
创建存储账户:
登录 Azure Portal,创建一个存储账户,并等待部署完成。 -
设置身份验证:
- 选项 A: 从存储账户的 "Access keys" 中获取连接字符串。
- 选项 B: 通过在 Azure 资源上启用托管标识(Managed Identity)并授予其相应的存储权限来使用它。
- 更新环境变量:
在您的.env文件中,设置以下任一项:
AZURE_STORAGE_CONNECTION_STRING(适用于选项 A),或AZURE_STORAGE_ACCOUNT_NAME(适用于选项 B),以及:AZURE_STORAGE_PUBLIC_ACCESS和AZURE_CONTAINER_NAME
- 配置 LibreChat:
在您的librechat.yaml配置文件中,将fileStrategy设置为"azure_blob"。
通过这些步骤,您的 LibreChat 应用程序将自动创建容器(如果不存在),并使用 Azure Blob Storage 管理文件上传、下载和删除。托管标识 (Managed Identity) 提供了一种安全的替代方案,无需使用长期凭据。
使用 Azurite 进行本地开发
对于本地开发和测试,您可以使用 Azurite,这是一个 Azure Storage 模拟器,它提供了一个本地环境,用于测试您的 Azure Blob Storage 集成,而无需实际的 Azure 账户。
1. 设置 Azurite
您可以通过多种方式运行 Azurite:
选项 A:使用 VS Code 扩展(推荐用于开发)
- 为 VS Code 安装 Azurite extension
- 打开命令面板 (Ctrl+Shift+P 或 Cmd+Shift+P)
- 搜索并选择 "Azurite: Start"
这将使用默认设置在后台启动 Azurite。
选项 B:使用 Docker
选项 C:使用 npm
2. 为本地开发配置环境变量
将以下环境变量添加到您的 .env 文件中:
注意:
AccountKey值是 Azurite 使用的默认开发密钥。- 该连接在本地开发时使用
http协议而非https BlobEndpoint指向运行在 10000 端口上的本地 Azurite 实例
3. 验证连接
要验证您的应用程序是否可以连接到本地 Azurite 实例:
- 启动您的 LibreChat 应用程序
- 尝试通过界面上传文件
- 检查 Azurite 日志以确认连接和操作
如果您正在使用 VS Code 扩展,可以通过在下拉菜单中选择“Azurite Blob”来在输出(Output)面板中查看 Azurite 日志。
注意
默认的 Azurite 账户密钥是一个仅用于开发目的的固定值。切勿在生产环境中使用此密钥。请始终确保您的连接字符串保持安全,且绝不要将其提交到公共仓库中。
这篇指南怎么样?