Sleepstars 的记录室

Sleepstars 的记录室

Cloudflare R2 搭配 Picgo 快速建立免费图床

2024-08-26

你是否还在为论坛无法发图而烦恼吗?你还在担心第三方图床无故删图吗?你还在害怕使用的图床突然倒闭吗?

别担心,本篇博文教你怎么搞定自己的简易图床,个人数据就应该掌握在自己的手里!

Cloudflare R2 是什么?

https://www.cloudflare.com/zh-cn/developer-platform/r2/

Cloudflare R2 是由 Cloudflare 推出的对象存储服务,提供有 10GB 免费存储空间和 1 百万的 A 类操作、1 千万的 B 类操作。同时 R2 支持 S3 兼容 API,不需要担心其各类程序的兼容性。

R2 计费标准

Cloudflare R2 收费项由三个部分组成:

A 类操作费 + B 类操作费 + 存储费

存储费

$0.015 / GB-month

A 类操作费

$4.50 / million requests

B 类操作费

$0.36 / million requests

出口(数据传输到互联网)

Free

注意到了吗?R2 的最大优势在于其免除了出站流量费,如果你的存储中有大文件被人刷流了,不用担心使用传统大厂的对象存储第二天巨额账单被寄到家里最后卖房解决了。

如果需要超过 10G 的部分的,费用也非常低,每个月 100G 存储仅需要 0.015*100=1.5$ 。作为图床,A类操作(大多为改变文件状态)是非常少的,B类操作 100w 次免费额度,几乎也不会碰到。就算碰到了成本也非常的低。

Picgo 是什么?

https://github.com/Molunerfinn/PicGo

PicGo 是一款开源的图片上传工具,主要用于将本地图片快速上传到各类图床(图片托管服务)并生成可供分享的图片链接。PicGo 支持多种图床,包括但不限于 GitHub、腾讯云、阿里云、七牛云、又拍云、SM.MS 等,用户可以根据需求选择或配置图床。

除了默认的几种工具之外,Picgo 还有插件生态,可以通过插件支持更多的内容。例如通用的 S3 接口就可以使用 Picgo 的插件部分支持。

Cloudflare R2 配置流程

1. 注册一个 CF 账号

进入 https://dash.cloudflare.com/ 进行注册。

此处略。

2. 开通 Cloudflare R2 服务

进入 CF 仪表盘,找到侧边栏的 R2 并进入。

R2 是一项带有免费额度的付费服务,因此需要进行绑定支付方式。CF 支持绑定 信用/储蓄卡 或者 Paypal。如果你有渠道找到可用的 Visa/Mastercard 可以直接验证,若没有可以注册一个 Paypal 绑定银联卡进行验证(亲测 Paypal 国区【非贝宝】可以绑定)。

绑定完后就可以看到如下界面:

账户面板图

3. 创建存储桶

R2 新建存储桶

点击即可新建一个存储桶。

R2 选择存储位置

在创建页面中,你可以选择储存桶位置并选择存储类型:

对于位置你可以指定一个距离你源站或者常链接的 CDN 位置进行选择,理论上,距离越短访问延迟越低,默认跟据你当前链接 CF 的 IP 地址进行选择。但是 CF 似乎会将数据同步到全球数据中心。

如果你需要遵守欧盟的 GDPR或者 FedRAMP 的时候,可以选择指定管辖权第,确保数据会留在指定区域内不违反相关法律。

对于图床的应用场景,我们应该选择“标准”类型。因为图床会频繁的请求某张图片,而“不频繁访问”的 A/B 类操作价格都是相当昂贵的。

4. 开启公开访问

默认情况下,R2 存储桶是不支持通过域名直接外部访问的,仅可通过 R2 API 或者 S3 兼容 API 进行访问。而我们建立图床则需要公开通过域名访问。因此在创建完存储桶后,我们可以在存储同内打开相关选项。

点击我们刚刚创建完的存储桶:

进入 R2 设置界面

进入设置界面后,打开公开访问选项:

R2 打开公开访问

在公开访问开启。请注意,如果你想要配置自己的域名,必须先将自己的域名先接入 CF 中。CF 提供的 R2.dev 子域具有访问速率限制(虽然我没有测试出来),非常强烈建议你绑定自己的域名!

在这里我假设你绑定的域名为 img.abc.com,请记住这个域名,下方会使用到

5. 配置 API 访问权限

回到 R2 界面,点击“管理 R2 API 令牌”

R2 API 令牌申请处

创建一个新令牌,仅适用于你希望配置的存储桶或者全部存储桶上(取决于你的具体需要),令牌名称随意,权限选择读和写。

API 权限选择

接下来会弹出你配置的相关 API 参数,请不要关闭这个页面,后续无法通过面板找回密钥(这里的密钥我会随即删除)

R2 API 生成的 Token

从这里开始,CF 中的配置就已经完成了。

Picgo 配置流程

1. 下载并安装

略,请自行解决。

GitHub 链接请参考上文:

https://github.com/Molunerfinn/PicGo

另附官网 Wiki:

https://picgo.github.io/PicGo-Doc/zh/guide/getting-started.html#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B

2. 安装 S3 插件

打开 Picgo,进入插件设置:

Picgo 插件设置

在上方直接搜索 s3 (请确保你的网络状况)并安装

PicGo 安装 S3 插件

3. 配置 S3 API

打开图床设置,选择 S3,点击加号新建配置文件,按照以下来填写

PicGo S3 配置

其中需要注意的几个点:

  1. 应用密钥就是 CF API 中的机密访问密钥;

  2. 权限必须填写 private

  3. 地区选择 auto(必须为全小写),或者 R2 文档中提及的具体位置;

  4. ACL 访问控制列表会默认为权限中的配置。

文件路径的配置方法则可参见官方文档:
这里给出一个参考方案(可以解决同名文件问题):{year}{month}/{md5}.{fileName}.{extName}

https://github.com/wayjam/picgo-plugin-s3

接着确定,并把默认存储位置改为你刚刚建立的图床:

Picgo 设置默认图床

4. Picgo 使用方法

接着你就可以在上传区选择图片上传或者直接通过剪贴板进行上传

Picgo 上传图片

如果你的自定义域名填写正确了,那么相册中就可以看到你上传的图片了:

PicGo 查看上传过的图片

更多功能欢迎参考 PicGO 的官方文档!

下次带来 PicGO + Pixpin 截图工具的超爽使用方法!