本教程由社区贡献,Open WebUI 团队不提供支持。它仅用于演示如何根据您的特定用例自定义 Open WebUI。想贡献吗?请查看贡献教程。
🪣 切换到 S3 存储
本指南提供了关于如何将 Open WebUI 配置中默认的 local
存储切换到 Amazon S3 的说明。
先决条件
要遵循本教程,您必须具备以下条件
- 一个活跃的 AWS 账户
- 一个活跃的 AWS 访问密钥和秘密访问密钥
- 在 AWS 中拥有在 S3 中创建和放置对象的 IAM 权限
- 您的系统上安装了 Docker
什么是 Amazon S3
摘自 AWS 官方网站
“Amazon S3 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。它可存储和保护任意量的数据,适用于各种用例,如数据湖、网站、云原生应用程序、备份、归档、机器学习和分析。Amazon S3 设计为具有 99.999999999%(11 个 9)的持久性,为全球数百万客户存储数据。”
要了解有关 S3 的更多信息,请访问:Amazon S3 官方页面
如何设置
1. 所需环境变量
为了配置此选项,您需要收集以下环境变量
Open-WebUI 环境变量 | 示例值 |
---|---|
S3_ACCESS_KEY_ID | ABC123 |
S3_SECRET_ACCESS_KEY | SuperSecret |
S3_ENDPOINT_URL | https://s3.us-east-1.amazonaws.com |
S3_REGION_NAME | us-east-1 |
S3_BUCKET_NAME | my-awesome-bucket-name |
- S3_ACCESS_KEY_ID:这是您的 AWS 账户访问密钥的标识符。在 AWS Management Console 或 AWS CLI 中创建访问密钥时获取。
- S3_SECRET_ACCESS_KEY:这是您的 AWS 访问密钥对中的秘密部分。在 AWS 中创建访问密钥时提供,应安全存储。
- S3_ENDPOINT_URL:此 URL 指向您的 S3 服务终端节点,通常可在 AWS 服务文档或账户设置中找到。
- S3_REGION_NAME:这是您的 S3 存储桶所在的 AWS 区域,例如“us-east-1”。您可以在 AWS Management Console 的 S3 存储桶详细信息中找到此信息。
- S3_BUCKET_NAME:这是您的 S3 存储桶的唯一名称,在 AWS 中创建存储桶时指定。
有关可用 S3 终端节点 URL 的完整列表,请参阅:Amazon S3 常规终端节点
在此处查看所有 Cloud Storage
配置选项:Open-WebUI 云存储配置
2. 运行 Open-WebUI
在启动 Open-WebUI 实例之前,我们需要设置最后一个环境变量,名为 STORAGE_PROVIDER
。此变量告诉 Open-WebUI 您想使用哪个提供商。默认情况下,STORAGE_PROVIDER
为空,这意味着 Open-WebUI 使用本地存储。
存储提供商 | 类型 | 描述 | 默认 |
---|---|---|---|
local | str | 如果提供空字符串 (' ' ),则默认为本地存储 | 是 |
s3 | str | 使用 S3 客户端库以及 Amazon S3 存储中提到的相关环境变量 | 否 |
gcs | str | 使用 GCS 客户端库以及 Google Cloud Storage 中提到的相关环境变量 | 否 |
要使用 Amazon S3,我们需要将 STORAGE_PROVIDER
设置为 "S3",并同时设置步骤 1 中收集的所有环境变量(S3_ACCESS_KEY_ID
、S3_SECRET_ACCESS_KEY
、S3_ENDPOINT_URL
、S3_REGION_NAME
、S3_BUCKET_NAME
)。
在这里,我还将 ENV
设置为 "dev",这将允许我们查看 Open-WebUI Swagger 文档,以便我们可以进一步测试和确认 S3 存储设置是否按预期工作。
docker run -d \
-p 3000:8080 \
-v open-webui:/app/backend/data \
-e STORAGE_PROVIDER="s3" \
-e S3_ACCESS_KEY_ID="ABC123" \
-e S3_SECRET_ACCESS_KEY="SuperSecret" \
-e S3_ENDPOINT_URL="https://s3.us-east-1.amazonaws.com" \
-e S3_REGION_NAME="us-east-1" \
-e S3_BUCKET_NAME="my-awesome-bucket-name" \
-e ENV="dev" \
--name open-webui \
ghcr.io/open-webui/open-webui:main
3. 测试设置
Open-WebUI 运行起来后,我们上传一个简单的 Hello, World
文本文件来测试我们的设置。
并确认我们从选定的 LLM 收到了响应。
太棒了!看起来 Open-WebUI 中的一切都按预期工作。现在我们来验证文本文件是否确实已上传并存储在指定的 S3 存储桶中。使用 AWS Management Console,我们可以看到 S3 存储桶中现在有一个文件。除了我们上传的文件名 (hello.txt
) 外,您还可以看到对象名称后附加了一个唯一 ID。这是 Open-WebUI 跟踪所有已上传文件的方式。
使用 Open-WebUI 的 Swagger 文档,我们可以通过 /api/v1/files/{id}
终端节点并传入唯一 ID (4405fabb-603e-4919-972b-2b39d6ad7f5b) 来获取与此文件相关的所有信息。