
LobeHub 自托管怎么配置 RustFS 作为 S3 对象存储【免费下载链接】lobehub LobeHub is your Chief Agent Operator, organizing your agents into 7×24 operations by hiring, scheduling, and reporting on your entire AI team.项目地址: https://gitcode.com/GitHub_Trending/lo/lobehubLobeHub 采用服务端数据库部署后对话中上传的图片、文件上传 / 知识库功能依赖的文件都需要一个 S3 兼容的对象存储服务来存放——直接把这些二进制数据写进 Postgres 会浪费存储并拖慢性能。官方文档推荐自部署开源方案 RustFS由于近期 MinIO 的商业化策略调整文档已不再推荐 MinIO。前提条件一台可用的 Docker / Docker Compose 主机Linux/macOSWindows 需通过 WSL 29000S3 API与9001WebUI 控制台端口未被占用。按下面的顺序完成部署 RustFS → 创建存储桶并设置公共读策略 → 创建访问密钥 → 配置反向代理 → 修改 LobeHub 的.env。1. 部署 RustFS 容器先拉取镜像并用命令确认版本文档建议使用 v1.0.0 及以上docker pull rustfs/rustfs:latest docker inspect --format{{index .Config.Labels version}} rustfs/rustfs:latest然后用 Docker Compose 部署。以下片段来自官方文档YOUR_ACCESS_KEY与YOUR_SECRET_KEY是文档中的占位符替换为你自行设定的一组主账号访问密钥 / 秘密密钥任意强度足够的字符串services: rustfs: image: rustfs/rustfs:latest container_name: lobe-rustfs ports: - 9000:9000 - 9001:9001 environment: - RUSTFS_CONSOLE_ENABLEtrue - RUSTFS_ACCESS_KEYYOUR_ACCESS_KEY - RUSTFS_SECRET_KEYYOUR_SECRET_KEY volumes: - rustfs-data:/data volumes: rustfs-data:启动容器docker compose up -d2. 创建存储桶并配置公共读策略访问 RustFS WebUIhttp://localhost:9001/会跳转到登录页。账号填docker-compose.yml中设置的RUSTFS_ACCESS_KEY密码填RUSTFS_SECRET_KEY。登录后点击左侧边栏对象存储再点右上角创建存储桶创建一个新存储桶。下文以lobe为例版本Versioning与对象锁Object Lock按默认配置不开启。进入该存储桶点击配置策略选择自定义粘贴下面的 JSON使存储桶权限为公有读私有写保存即可{ ID: , Version: 2012-10-17, Statement: [ { Sid: , Effect: Allow, Principal: { AWS: [ * ] }, Action: [ s3:GetObject ], NotAction: [], Resource: [ arn:aws:s3:::lobe/* ], NotResource: [], Condition: {} } ] }其中Resource字段的arn:aws:s3:::lobe/*对应上文创建的桶名lobe如果你创建时用了其他桶名这一处要改成你的桶名。3. 创建访问密钥文档建议不要直接复用docker-compose.yml里的主账号密钥RUSTFS_ACCESS_KEY/RUSTFS_SECRET_KEY而是手动创建一个专用访问密钥更安全。在左侧边栏点访问密钥再点右上角添加访问密钥。名称随意策略按默认的主账号策略即可。创建后复制生成的 Access Key 和 Secret Key可点导出按钮把 JSON 保存到本地。文档特别提醒界面上的英文标签有误导性记住短的是 Access Key长的是 Secret Key导出的 JSON 里是正确的。4. 配置反向代理为了让 LobeHub 和浏览器能访问 RustFS需要反向代理把端口映射到域名域名反代端口是否必选lobe-s3-api.example.com9000必选lobe-s3-ui.example.com9001完成反向代理后配置对应的 SSL 证书并启用 HTTPS 访问。5. 配置 LobeHub 环境变量修改 LobeHub 的.env文件加入以下变量# RustFS 的鉴权 Access Key / Secret Key S3_ACCESS_KEY_IDYOUR_ACCESS_KEY S3_SECRET_ACCESS_KEYYOUR_SECRET_KEY # RustFS API 的请求端点 S3_ENDPOINThttps://lobe-s3-api.example.com # 存储桶的名称 S3_BUCKETlobe S3_ENABLE_PATH_STYLE1逐项说明变量含义见 配置 S3 存储服务S3_ACCESS_KEY_ID/S3_SECRET_ACCESS_KEY第 3 步创建的访问密钥短的是 Access Key长的是 Secret Key。S3_ENDPOINT示例中的https://lobe-s3-api.example.com是文档示例域名替换为你第 4 步实际反代的 S3 API 域名指向9000端口。两个硬性约束不能包含存储桶名称也不能带后缀路径否则上传的文件将无法访问。S3_BUCKET第 2 步创建的桶名示例为lobe。S3_ENABLE_PATH_STYLE1RustFS 这类自部署服务默认使用path-style访问模式URL 形如s3.example.net/mybucket/config.env区别于云厂商常用的 virtual-host 模式mybucket.s3.example.net/config.env因此必须置为1默认值是关闭的。S3_REGION可选一般不需要配置个别服务商才要求。一个容易踩的坑S3_ENDPOINT不要写成http://rustfs:9000这类容器内网地址。浏览器无法访问容器内网会导致对话内上传图片不可用头像上传不受影响。验证与排查版本第 1 步的docker inspect命令输出的版本应为 v1.0.0 及以上不满足时升级镜像。服务健康官方部署用的 Compose 配置 中RustFS 容器的健康检查使用http://localhost:9000/health该端点可正常响应说明 API 服务可用。上传异常时按 通过 Docker Compose 部署 LobeHub 的排查章节先查 RustFS 日志并确认桶已创建docker compose logs rustfs docker compose logs rustfs-init docker compose exec rustfs ls /data/lobe对话内上传图片不可用核对S3_ENDPOINT是否为浏览器可访问的公网 / 局域网地址HTTPS且不含桶名与后缀路径。文档还说明对话内上传图片需要一个浏览器可访问的S3_ENDPOINT因此配置完成后可以直接在 LobeHub 对话里上传一张图片做功能验证。可选路径与其他 S3 方案如果你不是单独部署 RustFS而是用一键脚本部署整套 LobeHubbash (curl -fsSL https://lobe.li/setup.sh)脚本会一并拉起 RustFS 并自动写好S3_ENDPOINT、密钥等.env配置运行结束后查看配置生成报告里的 RustFS URL 和账号密码即可详见 通过 Docker Compose 部署 LobeHub。不用自建、想用云厂商的话文档另有 Cloudflare R2 与 腾讯云 COS 教程环境变量配置方式相同区别在于云厂商通常默认virtual-host模式无需S3_ENABLE_PATH_STYLE1。更多背景可参考 配置 RustFS 存储服务 与 配置 S3 存储服务 原文。【免费下载链接】lobehub LobeHub is your Chief Agent Operator, organizing your agents into 7×24 operations by hiring, scheduling, and reporting on your entire AI team.项目地址: https://gitcode.com/GitHub_Trending/lo/lobehub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考