[Bug] rustfs-init fails to start: mc parse policy failed due to uppercase ‘ID’ in bucket.config.json

该报错发生在 LobeChat Docker Compose 部署时, lobe-rustfs-init 容器因内置 bucket.config.json 中使用了大写 "ID" 而导致 mc 客户端解析策略失败。优先排查本地 docker-compose/dev/bucket.config.jso

快速结论:该报错发生在 LobeChat Docker Compose 部署时,lobe-rustfs-init 容器因内置 bucket.config.json 中使用了大写 "ID" 而导致 mc 客户端解析策略失败。优先排查本地 docker-compose/dev/bucket.config.jsondocker-compose/deploy/bucket.config.json 文件中第 2 行的 JSON 字段大小写。

适用环境:LobeChat v2.2.1,Docker Compose 自托管(Self‑hosting Docker),Linux 操作系统,mc 客户端版本为 RELEASE.2025‑08‑13T08‑35‑41Z(该版本强制校验 AWS S3 Policy 规范)。

最快修复方案:将本地 bucket.config.json 中的 "ID": "" 改为 "Id": ""(标题大小写),重启容器即可。

注意事项:该方案已通过 Issue 确认有效;若你的 mc 客户端版本较旧(不强制校验),可能不会触发此问题,但建议统一保持标题大小写以兼容新版本。此外,Issue 提及另一个相关问题 #14655(minio/mc 与 RustFS 的 probe‑bsign 不兼容),但本修复方案仅针对当前报错的 parse policy failed 问题。

问题场景

用户使用 Docker Compose 启动 LobeChat 时,lobe-rustfs-init 容器在初始化阶段退出并报错(exit code 1),导致整个 docker‑compose 堆栈启动失败。该进程使用 mc anonymous set-json 命令将策略文件 /bucket.config.json 应用到 RustFS 上时解析失败。

报错原文

+ mc anonymous set-json /bucket.config.json rustfs/lobe
mc: <ERROR> Unable to set-json anonymous `/bucket.config.json` for `rustfs/lobe`. parse policy failed Error("unknown field `ID`, expected one of `Id`, `Version`, `Statement`", line: 2, column: 6).
service "rustfs-init" didn't complete successfully: exit 1

原因分析

LobeChat 项目自带的 docker-compose/dev/bucket.config.jsondocker-compose/deploy/bucket.config.json 文件中,第 2 行使用了大写 "ID"。而当前部署环境中的 minio/mc 客户端(RELEASE.2025-08-13T08-35-41Z)遵循 AWS S3 Policy 规范,要求使用标题大小写 "Id",因此解析失败。这是 JSON 字段大小写不匹配导致的配置兼容性问题。

环境排查

  • 确认 Docker Compose 部署的 LobeChat 版本为 v2.2.1。
  • 确认 mc 客户端版本为 RELEASE.2025-08-13T08-35-41Z 或更新版本(更早版本可能不强制校验)。
  • 检查本地 bucket.config.json 所在路径:docker-compose/dev/bucket.config.json(开发环境)或 docker-compose/deploy/bucket.config.json(生产部署)。
  • 确认 rustfs-init 容器使用的镜像版本与 LobeChat 版本对应。

解决步骤

  1. 打开本地部署目录下的 docker-compose/dev/bucket.config.jsondocker-compose/deploy/bucket.config.json
  2. 找到第 2 行的 "ID": "",将其改为 "Id": ""(保留引号和空字符串)。
  3. 保存文件并重新执行 docker compose up -d 启动服务。
  4. 如果仍然报错,可尝试拉取最新镜像(Issue 已确认后续版本会在官方仓库中修复此字段)。

验证方法

执行 docker compose logs rustfs-init,观察不再出现 parse policy failed 错误,容器状态为 exited with code 0 或正常完成初始化。同时检查整个 docker‑compose 堆栈是否正常启动。

参考来源

lobehub/lobe-chat #15482

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15969

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注