本文是结合 Cloudflare R2 提供的稳定对象存储服务和 PicGo 提供的便捷上传工具,为您打造一个高性能、免费且支持国内外网络访问的个人图床。我的一个机场网站正在使用这个部署方案,免费为网站图片提供图床。
优势
- 免费额度充足:Cloudflare R2 为个人用户提供了足够使用的免费额度。
- 服务稳定可靠:无需担心服务商“跑路”等问题。
- 网络环境无限制:生成的图片链接支持国内网络和国外网络双向打开,不存在网络环境限制。
第一步:Cloudflare R2 存储桶配置
1. 了解 R2 免费额度与前提条件
| cloudflare R2 存储桶和PicGo软件 |
首先,访问 Cloudflare 网站并找到左侧导航栏的 R2 对象存储。
- 免费额度:R2 每月提供 10 GB 的免费存储空间。对于个人网站来说,这已足够使用。
- 超额费用:即使超出免费额度,续费价格也大约在 一角钱一个 GB,相比其他云存储产品十分划算。
- 请求次数:每月可免费写入 100 万次,免费读取 1 千万次,完全满足个人网站需求。
- 前提条件:如果您是首次使用 Cloudflare,除了注册账号外,还需要添加一个付费计划,可以使用信用卡或国外区的 PayPal 账号。
- 操作:点击“将 R2 订阅添加到我的账户”。
2. 创建存储桶(Bucket)
在 R2 页面,点击 “创建存储筒”。
| 如何创建R2对象存储桶 |
- 存储筒名称:名称可以自定义。
- 位置选择:您可以根据自己网站的主要用户所在地来选择地区。例如,如果博客主要面向亚洲地区,可以选择 亚太地区。
- 完成创建:保持其他选项默认,点击右下角“创建存储筒”。
3. 允许公共访问
创建完成后,存储桶默认无法通过公共 URL 访问,需要进行进一步设置。(如果你的域名托管在cloudflare,就直接绑定一个二级域名,我就使用了一个img.ygjc.cc的二级域名,作为图床的访问地址。关于如何绑定,文章后面有教程。)
| 如何开启公共URL访问 |
- 设置路径:点击存储筒右侧的 “设置”。
- 启用访问:向下滑动,找到
r2.dev子域,点击 “允许访问”。 - 确认:在弹框中输入
allow,然后点击“允许”。 - 生效:等待设置生效后,您就可以通过公共 URL 访问存储筒了。
4. 首次测试及发现问题
返回存储桶的对象页面,拖拽上传一张图片。
- 测试结果:图片上传成功后,点击图片可以复制生成的网址。
- 问题所在:在带有“梯子”(VPN)的网络环境下,该网址可以正常打开。但如果关闭“梯子”,国内网络将无法正常打开 Cloudflare R2 默认生成的网址。
第二步:配置自定义域名(解决国内访问问题)
为了解决国内网络访问受限的问题,并使图片网址更美观,我们需要通过自定义域名来替换 R2 分配的域名。
1. 将域名托管到 Cloudflare
- 准备域名:需要提前准备一个域名(购买或免费域名均可)。
- 添加网站:在 Cloudflare 左侧导航栏点击 “网站”。
- 输入域名:在现有域处填写准备好的域名,点击“继续”。
- 选择计划:在付费计划中选择最下方的 “免费计划”,点击“继续”。
2. 更新名称服务器(DNS)
- 获取名称服务器:在跳转页面,滑到第三项“更新名称服务器”处,Cloudflare 会生成两个名称服务器网址。复制并保存它们。
- 修改 DNS:登录您的域名注册商的平台(例如阿里云控制台)。
- 操作步骤:找到域名管理列表,选择“管理” -> “DNS 修改”,选择修改 DNS 服务器,然后将刚才从 Cloudflare 复制的两个网址填入并确定。
- 等待激活:回到 Cloudflare 网站,等待状态从“待处理的名称服务器更新”变为 “活动” (通常需要等待一段时间)。
3. R2 连接自定义域名
域名托管到 Cloudflare 后,将其连接到 R2 存储桶。
- 进入设置:点击左侧 R2 对象存储,进入您创建的存储筒,继续点击右侧的“设置”。
- 连接域名:向下滑动找到 “自定域” 选项,点击 “连接域”。
- 填写域名:填入您托管到 Cloudflare 的域名,点击“连接域”。
- 生效:自定义域需要几分钟时间进行初始化才能生效。
- 最终测试:刷新页面,在存储桶对象页面打开图片,可以看到除了原网址外,还生成了自定义域名的网址。测试时,无论开启或关闭“梯子”,图片都应能 正常访问。
第三步:使用 PicGo 增强上传体验
Cloudflare R2 自身的上传功能相对简单,不支持批量上传或图片压缩。推荐使用 PicGo,这是一个开源免费的工具,支持批量上传、图片压缩等功能,并通过插件支持 Cloudflare R2 等多个云存储平台。
| PicGo 软件界面 |
1. PicGo 安装与 S3 插件
- 下载安装:根据您的操作系统,在 PicGo 的下载页面下载并安装 PicGo。如果下载速度太慢,建议申请一个免费机场,搭上科学上网,提升下载速度。
- 安装 S3 插件:(PicGo的最新版本,已经集成了s3插件。)
- 打开 PicGo,点击左侧的 “插件设置”。
- 搜索
s3,选择并点击安装 S3 插件。R2 的配置将通过该 Amazon s3 插件实现。
2. Cloudflare 获取 API 令牌
为了让 PicGo 能够访问和写入 R2,需要生成 API 密钥。
- 路径:回到 Cloudflare 网站,点击 R2 对象存储下的 “概述” 选项。
- 创建令牌:点击 “API” -> “管理 API 令牌” -> “创建 API 令牌”。
- 权限设置:自定义令牌名,权限处选择 “读对象和写”。
- 保存密钥:创建成功后,复制生成的 令牌 ID 和 密钥 (M要/密要) 并保存到记事本。
3. PicGo S3 客户端配置
在 PicGo 中,展开左侧的图床设置,找到 Amazon s3,点击编辑默认设置。
| 配置项 | 填写内容 | 来源/说明 |
|---|---|---|
| 设定名称 | 自定义名称 | 方便识别 |
| 应用Key ID | 填入 API 令牌 ID | 从 Cloudflare 复制 |
| 应用Key | 填入 API 密钥 | 从 Cloudflare 复制 |
| 筒(Bucket) | 填入 R2 存储筒的名称 | 例如:blog |
| 文件路径 | 建议填写 pikogo/ + 文件名 |
表示图片统一放在 blog 存储筒中的 pikogo 文件夹内 |
| 权限 | 保持默认 | |
| 地区 | 填写 auto 或创建存储筒时选择的地区 |
|
| 自定义节点 (Custom Endpoint) | 格式为 https://[账户 ID].r2.cloudflarestorage.com |
需要用您的账户 ID 替换方括号部分。 |
| 获取账户 ID | 在 Cloudflare R2 概数 -> API 选项下,选择“通过 API 来使用 R2 存储”即可看到账户 ID。 | |
| 自定义域名 | 填入您托管到 Cloudflare 的域名 | 记得前面要加上 http:// 或 https://。 |
配置完成后,点击确定,并将其设置为 默认图床。
4. PicGo 上传与使用
- 上传:点击 PicGo 左侧的“上传区”,拖拽图片即可批量上传。
- 获取链接:上传成功的图片会在“相册”中显示。点击左下角的复制按钮,即可复制图片网址。
- 格式选择:PicGo 默认会自动转成 Markdown 格式,方便写作。如果不需 Markdown 格式,可通过按钮选择普通 URL 或其他格式。
至此,基于 Cloudflare R2 和 PicGo 的稳定、免费图床方案搭建完毕,适用于博客和个人网站。比如一个机场免费机场推荐网站,就正在使用这个免费图床方案。我使用了一个二级域名img.ygjc.cc。如需了解cloudflare二级域名的相关信息,请查阅:托管到cloudflare的域名,可以支持解析多少个二级域名?
形象比喻:
搭建 Cloudflare R2 图床,就像是您在自家的土地(自定义域名)上盖了一栋带有巨大仓库(R2 存储)的房子。这个仓库不仅免费,容量大,而且通过专业物流系统(PicGo)连接,您可以轻松地批量把货物(图片)放进去,而无论您和您的访客身处国内还是国外,都能直接、快速地访问到您仓库里的图片。