lobehub/docs/self-hosting/advanced/s3.zh-CN.mdx
Arvin Xu 4a87b31246
📝 docs: improve docs (#12013)
Update docs
2026-01-31 19:46:44 +08:00

77 lines
3.5 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 配置 S3 存储服务 - 多模态 AI 会话
description: 了解如何配置 S3 存储服务以支持多模态 AI 会话和图片上传。
tags:
- S3 存储
- 多模态 AI
- 图片上传
- 文件存储
---
# 配置 S3 存储服务
LobeHub 在 [很早以前](https://x.com/lobehub/status/1724289575672291782) 就支持了多模态的 AI 会话,其中涉及到图片上传给大模型的功能。在客户端数据库方案中,图片文件直接以二进制数据存储在浏览器 IndexedDB 数据库,但在服务端数据库中这个方案并不可行。因为在 Postgres 中直接存储文件类二进制数据会大大浪费宝贵的数据库存储空间,并拖慢计算性能。
这块最佳实践是使用文件存储服务S3来存储图片文件同时 S3 也是文件上传 / 知识库功能所依赖的大容量静态文件存储方案。
<Callout type={'info'}>
在本文档库中S3 所指代的是指兼容 S3 存储方案,即支持 Amazon S3 API 的对象存储系统,常见例如
Cloudflare R2 、阿里云 OSS可以自部署的 minio 等均支持 S3 兼容 API。
</Callout>
## 核心环境变量
<Steps>
### `S3_ACCESS_KEY_ID` 与 `S3_SECRET_ACCESS_KEY`
所有 S3 兼容存储服务都需要的两个密钥,用于访问 S3 存储服务,不详细展开。
### `S3_ENDPOINT`
存储桶的请求端点, 注意此处链接不应该包含存储桶的名称。
<Callout type={'warning'}>`S3_ENDPOINT`必须删除后缀路径,否则会无法访问所上传文件</Callout>
例如 Cloudflare 为:
```shell
S3_ENDPOINT=https://0b33a03b5c993fd2f453379dc36558e5.r2.cloudflarestorage.com
```
### `S3_BUCKET` 和 `S3_REGION`
存储桶的名称和区域,`S3_BUCKET` 是必须的,用于指定存储桶的名称。 `S3_REGION` 是可选的,用于指定存储桶的区域,一般来说不需要添加,但某些服务商则需要配置。
### `S3_SET_ACL`
是否在上传文件时设置 ACL 为 `public-read`。该选项默认启用。如果服务商不支持为文件设置单独的 ACL即所有文件继承存储桶的 ACL启用此选项可能会导致请求错误将 `S3_SET_ACL` 设置为 `0` 即可关闭。
### `S3_ENABLE_PATH_STYLE`
是否启用 S3 的 `path-style` 访问模式。此选项默认禁用。如果您的 S3 服务提供商使用 `path-style`,请将 `S3_ENABLE_PATH_STYLE` 设置为 `1` 以启用它。
<Callout type={'info'}>
`path-style` 和 `virtual-host` 在 S3 中是访问 bucket 和 object 的不同方式URL 的结构和域名解析不太一样
假设 S3 服务商的域名是 s3.example.net bucket 为 mybucketobject 为 config.env具体区别如下
- path-style : `s3.example.net/mybucket/config.env`
- virtual-host : `mybucket.s3.example.net/config.env`
</Callout>
<Callout type={'tip'}>
常见的 S3 Cloud 服务商往往默认采用 `virtual-host` 模式,而自部署服务 minio 则默认使用的是 `path-style`。 因此如果你使用了 minio 作为 S3 服务,你需要设置 `S3_ENABLE_PATH_STYLE=1` 。
</Callout>
</Steps>
## S3 配置指南
目前文档中包含的 S3 配置指南如下:
<Cards>
<Card href={'/zh/docs/self-hosting/advanced/s3/cloudflare-r2'} title={'Cloudflare R2'} />
<Card href={'/zh/docs/self-hosting/advanced/s3/tencent-cloud'} title={'腾讯云 COS'} />
</Cards>
点击即可查看对应 S3 服务的部署指南,如果上述指南中不包含你所使用的 S3 服务商,欢迎提交 PR ,将共同完善 S3 对象存储的指南。