上传页面图片 / 视频到 CDN(nginx 静态托管 · 伪 CDN)¶
场景:网页 / 笔记里有本地图片、视频资源文件,需要得到可直接访问的公网 CDN URL,供分享的 Markdown/HTML 使用。 适用环境:agent-matrix 内网静态托管主机
gptac-zs(serve.nutshellai.cn)。2026-09-06 实测通过。
1. 目标产物¶
每个媒体文件对应一个公网 URL:
2. 关键环境变量(本机 tianyi / mobius 视角)¶
| 变量 | 值 | 说明 |
|---|---|---|
| 发布主机别名 | gptac-zs |
= mobius@111.36.208.22:12229(ssh/aimux 已配好免密) |
| 远端静态根目录 | /home/mobius/publish/auto |
nginx 已托管,/publish/auto/{folder} ↔ 该目录 {folder} |
| 公网 URL 前缀 | https://serve.nutshellai.cn/publish/auto |
下载用 |
| 上传命令 | aimux send_files gptac-zs <远端目录> <本地文件>… |
等效 scp |
| 权限要求 | 644 | 否则 nginx 返回 403 |
⚠️ 历史文档里的别名
GPTX-zs+ 路径/home/Arnold/publish/auto是别的用户环境(Arnold 的 ~/.ssh/config),本机不适用,直接用上表的gptac-zs+/home/mobius/...。
3. 完整流程¶
3.1 从数据源取出媒体文件(示例:思源笔记)¶
- 在思源 SQL 中按
content LIKE '%assets/%'找到目标文档的媒体块,得到assets/xxx.png|mp4文件名。 - 下载:
GET {siyuan}/assets/{filename},请求头带Authorization: Token <token>(文件名含中文时对路径段做 urlencode)。 - 或直接从任意本地路径取文件。
3.2 上传到静态目录¶
FOLDER="mobius-article" # 建议短、语义化
REMOTE="/home/mobius/publish/auto/$FOLDER"
# 建目录
ssh gptac-zs "mkdir -p '$REMOTE' && chmod 755 '$REMOTE'"
# 上传(可一次多个文件)
aimux send_files gptac-zs "$REMOTE" file1.jpg file2.mp4 ...
# 修权限(否则 403)
ssh gptac-zs "chmod 644 '$REMOTE'/*"
3.3 校验(必须)¶
# 远端与本地 md5 一致
ssh gptac-zs "cd '$REMOTE' && md5sum *" # 对比本地 md5sum
# 公网 URL HEAD 200 + Content-Type + Content-Length 与本地一致
curl -sI --max-time 20 "https://serve.nutshellai.cn/publish/auto/$FOLDER/$filename"
3.4(可选)替换正文引用¶
把源文档里的 assets/xxx 引用批量替换为上面公网 URL(图片/视频,注意保留原有布局样式)。
4. 文件名规则(重要教训,务必遵守)¶
- 文件名必须短、纯 ASCII、无中文、无空格、无
% # &等特殊字符。 - 原因:含中文的长文件名在部分工具/上下文里会被二次百分号转义(
%E5...→%25E5...),导致 URL 打不开。 - 推荐:小写字母 + 数字 +
-+ 扩展名,例如mobius-group.jpg、mobius-research.mp4。
5. 本次实例(6 个媒体,已发布)¶
文件夹 publish/auto/mobius-article,公网前缀 https://serve.nutshellai.cn/publish/auto/mobius-article/
| 资源 | CDN 文件名 | URL |
|---|---|---|
| 智能体群示意图(jpg) | mobius-group.jpg |
…/mobius-article/mobius-group.jpg |
| 多 Harness 协作图(png) | mobius-harness.png |
…/mobius-article/mobius-harness.png |
| 系统总览/双通道图(png) | mobius-channel.png |
…/mobius-article/mobius-channel.png |
| 只读协作演示(mp4) | mobius-readonly.mp4 |
…/mobius-article/mobius-readonly.mp4 |
| 双向交流演示(mp4) | mobius-twoway.mp4 |
…/mobius-article/mobius-twoway.mp4 |
| 研究系统演示(mp4) | mobius-research.mp4 |
…/mobius-article/mobius-research.mp4 |