597457.xyz

Back

云海天宫云海天宫

写文章要配图,图多了就要图床。Cloudflare R2 是我用过最省心的方案:免费额度 10GB 存储 + 每月百万次读写,S3 兼容、自定义域名、全球 CDN 缓存,个人博客完全够用。

为什么选 R2#

  • 便宜:10GB 存储、100 万次读/月、100 万次写/月全免费,个人用量基本不超;
  • 兼容:S3 API 协议,PicGo、rclone、各种工具开箱即用;
  • 稳定:Cloudflare 全球节点,配合 Cache Rules 图片走边缘缓存,国内访问也快;
  • 省心:不用维护服务器,不担心防盗链,对象存储天然抗流量攻击。

整体架构#

Obsidian 粘贴图片
  → 图片自动上传插件 → PicGo 本地服务(127.0.0.1:36677)
  → S3 上传器 → Cloudflare R2 Bucket
  → 返回 https://r2.你的域名/2026/08/<md5>.webp 写回笔记
plaintext

图片链接格式:https://r2.你的域名/YYYY/MM/<md5>.<扩展名>(按年月归档,md5 命名天然去重)。

配置步骤#

  1. 注册 Cloudflare 并开通 R2:dash.cloudflare.com → R2 → 创建 Bucket(如 my-images)。
  2. 绑定自定义域名:Bucket → Settings → Custom Domains → 添加 r2.你的域名,Cloudflare 自动建 CNAME 并签发证书,状态 Active 即可用。
  3. 创建 API Token:R2 → Manage R2 API Tokens → 权限选 Object Read & Write,范围限定该 Bucket。记下 Access Key ID 和 Secret(只显示一次,丢失可重建)。
  4. 配置 PicGo(桌面端图床工具):
    • 安装插件 picgo-plugin-s3,图床设置选 Amazon S3;
    • 填:accessKeyID / secretAccessKey / bucketName / endpoint(https://<account-id>.r2.cloudflarestorage.com)/ 上传路径 {year}/{month}/{md5}.{extName} / urlPrefix https://r2.你的域名;
    • 开启服务器模式(端口 36677)+ 开机自启。
  5. 配置 Obsidian:装 Image auto upload 插件,上传器选 PicGo,粘贴图片即自动上传写回链接。

密钥只在你自己的电脑上,网站代码和仓库里永远只放公开链接。

缓存加速(可选但推荐)#

R2 自定义域名默认不缓存,每次访问都回源。在 Cloudflare → 缓存 → Cache Rules 加一条规则:URI 匹配 https://r2.你的域名/*.{png,jpg,jpeg,webp,gif,svg},边缘 TTL 30 天。之后图片首次访问回源,后续全部命中边缘缓存。

常见问题#

  • 图片上传失败:检查 PicGo 是否运行、端口 36677、Token 是否过期(重建即可)、网络能否访问 Cloudflare;
  • 换了图还是旧图:边缘缓存 30 天未过期,控制台清除缓存或 URL 加 ?v=时间戳 绕过;
  • 测试链接 403:用浏览器 UA 的请求测试(curl 带 UA 头),不要用无 UA 的脚本直连判断,会被 Cloudflare 当 bot 拦;
  • 图片丢失:R2 对象永久保留,域名失效只换前缀(r2.dev 兜底域名保持开启)。

小结#

R2 图床 + PicGo + Obsidian 自动上传,一套下来半小时搞定,之后写文章贴图完全无感。如果以后流量大了,R2 按量计费也很便宜,随时可以平滑升级。

自建 Cloudflare R2 图床:免费、S3 兼容、全球加速
https://v3.597457.xyz/blog/cloudflare-r2-guide
Author HJP
Published at 2026年8月21日