浮光 / Glimmer v1.0.3
补丁版本。让图片直链里的 /files 变成可配置:可以换成自己的前缀,也可以完全去掉。
现在可以这样
到「设置 → 命名与域名 → 直链路径前缀」填:
files → https://pic.gukong.net/files/2026/0919-7sgcq0.webp (默认,与以前完全一致)
img → https://pic.gukong.net/img/2026/0919-7sgcq0.webp
(留空) → https://pic.gukong.net/2026/0919-7sgcq0.webp (直接挂在根路径)
保存即生效,不需要重启容器。设置页里带实时的直链效果预览,改之前就能看到链接会变成什么样。
为什么以前改不了
/files 不只是链接里的一段文案 —— 它是 API 的路由挂载点(文件真的由 /files/* 这个路由提供),同时被前端容器的代理白名单写死。所以「链接生成」与「服务端路由」必须一起改口,只改一头就会出现「链接变了但打不开」。
本次把六处写死点统一到一个配置:
- API 不再静态挂载
/files,改成按当前前缀动态认领请求 —— 这正是「保存即生效、无需重启」的原因; - 链接生成跟着前缀走,并把它纳入适配器缓存签名(否则会重演「改完配置、链接却还是旧值」的静默失效);
- 前端容器完全不感知前缀,只按「末段带图片扩展名」判断哪些请求要转发给后端 —— 所以以后无论你把前缀改成什么,前端都不用动。
两种配置方式
| 位置 | 说明 |
|---|---|
| 后台「设置 → 命名与域名 → 直链路径前缀」 | 推荐。保存即生效;留空即挂在根路径 |
.env 的 FILES_ROUTE_PREFIX |
部署级强制值,优先级更高。填 img 强制 /{img}/,填 / 强制根路径 |
设置页的后台前缀被 .env 锁定时,输入框会禁用并说明原因,不会让你改了半天才发现没生效。
⚠️ 改完后记得重写历史直链
直链是上传那一刻的快照,所以改了前缀之后,已经上传的图片仍是旧地址:
docker exec glimmer-api node apps/api/dist/cli/rebuild-urls.js # 先预演,只打印不改库
docker exec glimmer-api node apps/api/dist/cli/rebuild-urls.js --apply # 确认后落库(这条命令 v1.0.2 就已提供;本次它还会打印当前生效的前缀及其来源,便于自查。)
一个建议
如果只是想让链接更好看,推荐用 /img 这类自定义短前缀,而不是留空。
自定义前缀能靠路径前缀精确区分「图片」与「前端页面」;而留空之后,服务端只能靠「像不像图片路径」来猜,将来前端若出现同形态的路径就会冲突。留空是可用的,只是没有自定义前缀稳。
其它
nginx.conf的location /files/是写死的:换了前缀要同步改它,留空则无法用location匹配、只能回源 API(README 已注明);- 文档与
.env.example补上了这段前缀的说明与三种写法。
升级
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 原样使用。不配置前缀的部署,行为与以前完全一致。
镜像
| 镜像 | 标签 |
|---|---|
praming/glimmer-api |
1.0.3 · latest |
praming/glimmer-web |
1.0.3 · latest |
想固定版本:在 .env 里设 IMAGE_TAG=1.0.3。1.0.2 / 1.0.1 / 1.0.0 的标签保持不动,仍可回退。
镜像目前只构建 linux/amd64;ARM 设备(树莓派 / 部分 NAS)请改用源码本地构建:docker compose up -d --build。
链接
- README —— 部署步骤、配置清单、常见问题
- v1.0.2 发布说明
- 许可:AGPL-3.0