Skip to content

浮光 / Glimmer v1.0.4

Choose a tag to compare

@praming praming released this 19 Sep 07:07
· 5 commits to main since this release

补丁版本。修掉 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 -d

1Panel 等使用面板专用编排文件的场景:

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.41.0.3 / 1.0.2 / 1.0.1 / 1.0.0 的标签保持不动,仍可回退。

镜像目前只构建 linux/amd64;ARM 设备(树莓派 / 部分 NAS)请改用源码本地构建:docker compose up -d --build

链接