Skip to content

浮光 / Glimmer v1.0.3

Choose a tag to compare

@praming praming released this 19 Sep 01:51
· 6 commits to main since this release

补丁版本。让图片直链里的 /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,改成按当前前缀动态认领请求 —— 这正是「保存即生效、无需重启」的原因;
  • 链接生成跟着前缀走,并把它纳入适配器缓存签名(否则会重演「改完配置、链接却还是旧值」的静默失效);
  • 前端容器完全不感知前缀,只按「末段带图片扩展名」判断哪些请求要转发给后端 —— 所以以后无论你把前缀改成什么,前端都不用动。

两种配置方式

位置 说明
后台「设置 → 命名与域名 → 直链路径前缀」 推荐。保存即生效;留空即挂在根路径
.envFILES_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.conflocation /files/ 是写死的:换了前缀要同步改它,留空则无法用 location 匹配、只能回源 API(README 已注明);
  • 文档与 .env.example 补上了这段前缀的说明与三种写法。

升级

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 原样使用。不配置前缀的部署,行为与以前完全一致。

镜像

镜像 标签
praming/glimmer-api 1.0.3 · latest
praming/glimmer-web 1.0.3 · latest

想固定版本:在 .env 里设 IMAGE_TAG=1.0.31.0.2 / 1.0.1 / 1.0.0 的标签保持不动,仍可回退。

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

链接