文章 /
Cloudflare R2 + PicGo 搭建图床
低成本、可控域名 R2 + PicGo 个人图床
个人图床不需要单独维护服务端。Cloudflare R2 + PicGo 在 Cloudflare 免费计划下能长期保留。

一、适用范围
R2 适合个人博客、文档站和低频资源上传。不适合要求复杂图片处理、细粒度访问控制或多人协作审批的场景。
免费计划每月有 10GB,对个人图床通常够用。而且核心诉求只是稳定托管静态图片,应先选这类低维护方案。
二、存储桶和访问域名
- 进入 Cloudflare 控制台,打开
R2 -> 创建存储桶 - 输入存储桶名称并创建
- 进入该存储桶,打开
设置 -> 添加自定义域 - 输入自定义域名并确认,让 Cloudflare 自动生成对应 DNS 记录
- 先手动上传一个文件做测试,确认桶可正常读写
只有在“桶可写 + 域名可读”都成立时,PicGo 接入才有意义。否则后续所有上传测试都会变成伪成功。
三、API 权限
路径:R2 -> Account Details -> Manage API Tokens -> 创建令牌
- 令牌权限选择
对象读和写 - 作用范围选择
仅应用于特定存储桶 - 创建后保存好以下信息
访问密钥 ID机密访问密钥
图床场景需要权限限制,令牌只绑定目标桶,后续排查和迁移都会方便清晰。
四、PicGo 接入 R2
- 下载并安装 PicGo
- 在 PicGo 插件市场安装
S3插件 - 打开
PicGo -> 图床设置 -> Amazon S3,新建一个配置
参数对应关系:
| PicGo 字段 | 填写内容 |
|---|---|
| 应用密钥 ID | R2 的 访问密钥 ID |
| 应用秘钥 | R2 的 机密访问密钥 |
| 桶名 | R2 页面中的存储桶名称 |
| 文件路径 | {year}/{month}/{fileName}.{extName} |
| 自定义节点 | R2 页面提供的 S3 终结点(Endpoint) |
| 拒绝无效 TLS 证书链接 | yes |
| ACL 访问控制列表 | public-read |
PicGo 只是上传器,不负责修正 R2 侧配置。如果 桶名、Endpoint 或自定义域名任一项不一致,应检查 Cloudflare 配置并校正。
五、最小验收
- PicGo 上传区选择图片并上传
- 确认 Cloudflare R2 对应存储桶文件已生成
- PicGo 中复制上传后的链接并直接访问
- 从文章或页面里引用一次图片,确认外链可正常加载
这套方案追求的是低成本、少维护、可迁移,充分利用 Cloudflare R2 免费计划的优势适合个人博客使用。