浮光 / Glimmer v1.0.4
补丁版本。修掉 S3 存储后端的两处对象键 / 直链问题,都是配了七牛云这类 S3 兼容存储之后立刻会撞上的。
一、空间里凭空多出一个同名文件夹
现象:Bucket 填的是空间名,上传后文件却在 空间根目录/<空间名>/… 下,而不是直接落在空间根目录。
根因不是 Bucket 的语义,是 Endpoint 填错了。 对象存储控制台通常同时给出两个地址:
服务域名(Endpoint) https://s3.cn-east-1.qiniucs.com ← 这里该填这个
空间域名(虚拟主机风格) https://<空间名>.s3.cn-east-1.qiniucs.com ← 不要填这个
「空间域名」本身已经把请求路由到了该空间,再叠加「使用 Path-Style 访问」,这段主机名就被算进了对象键 —— 于是 Key 变成 <空间名>/<命名规则>。
本次的处理:
- 自动纠正:Endpoint 的主机名首段若与空间名相同、且余下部分像服务域名(
s3/oss/cos/r2/obs/storage),就把多余那段剥掉。自定义 CNAME 不会被误伤。 - 明确告知:「测试连接」的结果里会带上说明,成功与失败两条路径都会显示,不会再出现「配置悄悄被改写」。
- 表单引导:Endpoint / Bucket / 路径前缀三个字段都补了说明,并给出实时的存储位置预览。
Bucket 仍然就是空间名(七牛要填它在「空间概览 → S3 域名」里显示的「S3 空间名」);要在命名规则之前多一层目录,用**「路径前缀」**这一项,留空即不加。
二、填了「路径前缀」之后直链 404
S3 适配器拼直链时漏掉了 pathPrefix 这一段:文件被写到 <路径前缀>/<命名规则>,链接却指向 <命名规则>,两边对不上。本地与 WebDAV 适配器一直是对的,只有 S3 漏了,现已补齐。
若你在 S3 后端填过「路径前缀」,跑一次
rebuild-urls --apply就能把老记录的直链修正回来 —— 它只改 URL,不移动任何文件。从本次起,事后修改「路径前缀」等于把所有老文件的直链整体平移(数据库里存的是不含前缀的相对路径),所以前缀请在开始上传前定好。
如果你已经踩到了
| 你的配置 | 处理 |
|---|---|
| Endpoint 填的是「空间域名」 | 升级后自动纠正;已上传的老文件不用动,直链仍指向同一个对象(那层目录本来就在 Key 里)。想清理空间只能手工移动或重传 |
| 「路径前缀」填了空间名 | 把它清空即可。老文件的直链需要 rebuild-urls --apply 修正 |
| 「路径前缀」填了别的值 | 直链本来就是错的(缺陷二),跑 rebuild-urls --apply 修回来 |
其它
- 后端编辑弹窗的 Endpoint / Bucket / 路径前缀补了字段说明、存储位置实时预览与误填警示;
- 「使用 Path-Style 访问」的说明改为「MinIO、七牛 Kodo 及多数自建服务建议开启;R2 / AWS S3 通常不需要」;
- README 新增《使用 S3 兼容对象存储》一节与对应问答;数据库里
storage_records.path的注释修正为「不含 pathPrefix」(原文写反了,正是缺陷二的来源)。
升级
cd <你的编排项目目录>
docker compose pull
docker compose up -d1Panel 等使用面板专用编排文件的场景:
docker compose -f docker-compose.1panel.yml pull
docker compose -f docker-compose.1panel.yml up -d数据无需任何迁移,./glimmer-data 原样使用。不用 S3 后端的部署不受影响。
镜像
| 镜像 | 标签 |
|---|---|
praming/glimmer-api |
1.0.4 · latest |
praming/glimmer-web |
1.0.4 · latest |
想固定版本:在 .env 里设 IMAGE_TAG=1.0.4。1.0.3 / 1.0.2 / 1.0.1 / 1.0.0 的标签保持不动,仍可回退。
镜像目前只构建 linux/amd64;ARM 设备(树莓派 / 部分 NAS)请改用源码本地构建:docker compose up -d --build。
链接
- README —— 部署步骤、配置清单、常见问题
- v1.0.3 发布说明
- 许可:AGPL-3.0