起因是我在别人的博客上看到了 elog 这个工具,可以同步语雀/Notion等笔记到博客上,感觉不错。
这样就有一个问题是需要自定义图床才能更方便的让这个流程自动化起来。然后就了解到可以使用大善人 Cloudflare R2 的服务,提供每月 10 GB 的 Storage,还有大量的读写操作限额。感觉应该是够我用了。
还有个问题是自定义图床是需要自己的域名的,所以就需要先买一个。之前一直都是使用 Github Pages 的域名,所以并没有购买域名。于是乎就有了 2 件可以做的事:
- 购买域名,并绑定到 Github Pages
完成 elog 的自动化配置(包括 Cloudflare R2 图床配置)- 把 Cloudflare R2 图床配置通过 PicList 集成到 Obsidian 中
折腾到一半发现语雀的 token 同步方式需要超级会员😅,以及可能发生的格式不匹配问题,还是决定放弃 elog 的集成方式。准备先把 Cloudflare R2 图床配置集成到 Obsidian 中。
购买域名
随手查了一下,lynkxu.com 目前并没有被注册,于是直接就买了 5 年的域名。这个域名看起来就没什么特别的含义,也就没有人买,于是我果断下手。

绑定 Github Pages
网上是有各种教程的,只是年份久远,说的不清不楚的,搞得我一头雾水。现在又有了 AI 的帮助,信息反倒变得更加混乱了,一时间不知道该听谁的。于是乎就把自己折腾成功之后的经验记录下来,希望能帮到一些人。
正如 github pages使用cloudflare加速自定义域名概要 所说,总体上我们要做三件事:
- 个人域名配置解析到 Cloudflare 的DNS
- Cloudflare 再解析到 Github Pages
- Github Pages 再根据 Repo 配置的自定义域名解析到相应的页面
首先来完成第一步,我们需要在域名购买商那里把域名的 DNS 服务器切换到 Cloudflare 的 DNS(图一)。
那么Cloudflare 的 DNS 怎么获取呢?如图二,只需要在 Cloudflare -> Domains 里添加你的域名,他就会告诉你当前域名的 DNS 以及 Cloudflare 的 DNS 是多少。然后去域名购买商那里修改即可。
然后让我们来完成第二步,Cloudflare 再解析到 Github Pages。只需要在 Cloudflare -> Domains -> DNS 中添加如图所示的几条记录即可。
- 注意替换自定义域名和 Github Pages 域名。
- 代理状态先关闭,等待全部绑定步骤完成后再开启。

然后在 GitHub Repo 的 Setting -> Pages 中完成 custom domain 和 Https 的配置即可。

至此,Github Pages 和 域名的绑定就算完成了。
Cloudflare R2 图床配置
图床配置大家说的就比较清楚了,这里列几个我用到的参考:
- https://zhuanlan.zhihu.com/p/1922747381658653955
- https://blog.tangwudi.com/technology/homedatacenter12452/
也说明一个我配置中遇到的小问题: 我已经在 PicList 中添加了 Cloudflare R2 对应的配置, 如下

测试上传的时候失败了,于是乎我想到我没有配置代理。添加完代理上传果然成功了。但是在「管理」页面中我可以看到图片存在,但却无法预览。想着后面再解决。
在 obsidian 中配置插件后,上传图传也成功了。但是部署之后发现,仍然无法获取图片。于是继续排查。发现 PicList 相册中的图片链接和 Cloudflare 控制台获取的图片链接不同。PicList 缺少一个 blog 前缀。而 blog 是我的存储桶名。
# piclist
https://xxx.lynkxu.com/2026/01/xxx.png
# cloudflare
https://xx.lynkxu.com/blog/2026/01/xxx.png
我就会想起,当我在设置自定义节点的时候,我发现 Cloudflare 控制台的「对象存储页面」有一个 S3 API,在「特定存储桶的设置」里还有一个 S3 API。他们的差异就是是否含有存储桶名称。我在填写 S3 API 的时候多填写了 blog 路径,是https://6b3exxxxx.xxx.xx/blog。导致上传的地址是在 blog 存储桶的 blog 文件夹下,所以 Cloudflare 给出的路径就多了一个 blog 目录。
于是乎替换自定义节点的地址,去掉 blog 路径即可!
我想这就是做为程序员(非常重要)的直觉吧!