Picgo对接Cloudflare R2的方法

687次阅读
没有评论

前言:

新浪图床彻底挂了 … 准备转投自建存储。

Picgo 对接 Cloudflare R2 的方法

存储:Cloudflare R2

R2 提供了相对低廉的价格和 0 流量费用,如图。

(完整版请见Pricing · Cloudflare R2 docs

Picgo 对接 Cloudflare R2 的方法

前端:Picgo

(毕竟不能手搓 S3 API 吧

Picgo 是 Github 上热门的图床软件,项目地址可见:

PicGo

流程:

1. 安装 Picgo 及 Node.js

请参阅 Picgo 项目地址

2. 启用 CF-R2,不再赘述

(可能需要准备一张信用卡 /Visa Master 借记卡亦可)

3. 新建一个储存桶

Picgo 对接 Cloudflare R2 的方法

4. 创建完成后,回到 Overview,点击“Manage R2 API Token”,Create API Token

Picgo 对接 Cloudflare R2 的方法

Picgo 对接 Cloudflare R2 的方法

注意,API 需要 Edit 权限

Picgo 对接 Cloudflare R2 的方法

会生成一个

Access Key ID

Secret Access Key

请保留备用

5. 为 CFR2 绑定自定义域名:

进入你创建的存储桶(Bucket), 点击设置(Setting)

在 PublicAccess 里面,选择 Connect

Picgo 对接 Cloudflare R2 的方法

输入一个子域名即可,需要注意的是,你的域名必须托管在 Cloudflare 上。Cloudflare 会自动添加解析。(你也可以使用 R2.dev 域名,但是 R2.dev 域名具有请求速率限制,也不适用于缓存和安全性,不建议生产环境使用)。

注意,请设置 CORS Policy,以允许外部调用。(CF 的意思是直接启用 Public Access 亦可实现目的)在我初次撰稿时,cf 尚未提供此选项,我需要调整存储桶的对应域的改写规则,利用 Cloudflare 的规则修改 HTTP 相应头,加入一个

Access-Control-Allow-Origin * header 来允许任意源的加载

现在 R2 存储桶好像支持直接修改 CORS 了, 点击 edit 即可

[
{
"AllowedOrigins": ["*"],
"AllowedMethods": ["GET"]
}
]

注意,配置成 * 会允许任意来源的加载,这是不安全的,在生产环境中,你还应该加入鉴权等。

但是个人存个图片而已,问题不大。

请参考:配置 CORS ·Cloudflare R2 文档

随后进入 Picgo 软件,安装 S3 插件

Picgo 对接 Cloudflare R2 的方法

进入 Amazon S3,进行设置

Picgo 对接 Cloudflare R2 的方法

把上面生成的 Access Key ID 填入 应用密钥 IDSecret Access Key  填入 应用密钥

桶就是 bucket 名,直接填写即可

文件路径实际上也包含重命名规则,可按如下格式填写

payload 描述
{year} 当前日期 – 年
{month} 当前日期 – 月
{day} 当前日期 – 日
{fullName} 完整文件名(含扩展名)
{fileName} 文件名(不含扩展名)
{extName} 扩展名(不含.
{md5} 图片 MD5 计算值
{sha1} 图片 SHA1 计算值
{sha256} 图片 SHA256 计算值

 

地区填写   us-east-1  切记,必填

(2023.5.23 更新,cf 好像增加了存储桶的地域选择,这个请参照实际文档吧)

Picgo 对接 Cloudflare R2 的方法

“自定义节点”填写 框内的一串链接,你可以轻易的在 R2 页面找到,也被描述为“S3 API”。

建议绑定自定义域名。

 

自定义域名填写你在 cloudflare R2 里面设置的自定义域名,也可填写 CF 提供的 Public Bucket URL,不要忘记开头的 https://(末尾无需“/”)

开启“BucketEndpoint”功能

意为针对 Bucket 的 Endpoint,而非针对 API 的 Endpoint。

 

R2 桶本质上和 S3 是相似的,还有很多操作(比如设置鉴权等)也可以一并完成。

完整请见:wayjam/picgo-plugin-s3: PicGo S3 插件 (github.com)

正文完
 
评论(没有评论)