封面图来源:https://blog.cloudflare.com/content/images/2021/09/Cloudflare-R2-Storage-OG.png

新建 R2 存储桶

添加订阅

和其他 CF 免费服务不同,R2 超出免费额度后不是自动停用等待下个月额度恢复,而是扣钱按量付费,因此需要绑定一个支付手段。因为我之前在 CF 购买域名添加了 paypal (绑定招行的人民币借记卡),因此可以直接使用 paypal。(实际上给的免费额度也十分充裕,对于个人乃至一大坨人使用的图床已经足够了)

Cloudflare R2 不收取进出流量费用。

创建桶

上传文件

CF R2 管理页面就能上传文件。

备注

目前,通过网页一次最多只能上传 100 个文件。如想要一次上传超过100个文件,请考虑使用调用了 S3 API 的程序,如下文的 Cloudreve。

也可以选择要被删除的文件。

配置公开访问

R2 默认不允许公开访问,只能通过 API 访问。若想搭建图床之类的并能直接访问,需要配置有域名。

方法一:添加自定义域

此方法需要购买了域名并且托管在了 CF 上(如我的 eterance.com)。由于自己持有的域名可以享受 CF 的诸如免费 CDN 、Zero Trust 等服务,使用自己的域名绑在 R2 上也能享受到。

提示

此方法需要购买域名,所以有成本。最便宜的是使用优惠券购买 Namesilo 上的 .top.xyz 域名(叠加优惠码后第一年仅 1 美元),但是需要年抛(续费没有优惠);长期持有推荐在 CF 上购买,虽然首年没有优惠但是次年比 Namesilo 便宜,购买后开箱即用不需要转移解析。

CF 购买域名见:Cloudflare 购买与解析域名

  1. 点开存储桶的设置;
  2. 填入自己的域名,可以是三级域名;
  3. 保存。

之后就能浏览器 https://<自定义域名>/<文件名> 访问存储桶里的文件了。

方法二:使用 R2.dev 子域

提示

此方法没有任何成本,但是不能使用 CF 提供的其他服务,并且速度受到限制(虽然不知道限速多少,但是几个人访问图片似乎没问题)。

下面蓝框就是分配给这个存储桶的域名。点击允许访问,在弹出来的窗口输入 allow 并确定。

之后就能浏览器 https://<分配给你的域名>/<文件名> 访问存储桶里的文件了。

R2 创建访问密钥(非必需)

只有你有需求在第三方程序中访问 R2 才需要建立 API 令牌。

  1. 去个自己能区分的名称。
  2. 选择权限:读写或者只读。某些第三方程序会需要管理员读写,比如下文的 Cloudreve。
  3. 选择本密钥可访问的存储桶。
  4. 选择不过期。

设置 CORS 策略(可选)

一般也不需要设置(出于安全考虑这里也不建议设置)。如果遇到 R2 作为博客图床,但是图片打不开的情况,F12 发现遇到 CORS 问题,则需要配置。

官方文档:Configure CORS · Cloudflare R2 docs

进入你想设置 CORS 的存储桶的设置,拉到下面:

配置为允许特定源

比如要设置为允许两个域名:

[
  {
    "AllowedOrigins": [
      "https://blog.eterance.com",
      "https://blog.baldcoder.top"
    ],
    "AllowedMethods": [
      "GET"
    ]
  }
]

配置为允许所有源

如果上面配置为特定源后仍然不能修复问题,或者作为随机图片 API 的图床提供服务需要设置为所有源可访问,那么需要如下设置:

[
  {
    "AllowedOrigins": [
      "*"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "PUT",
      "DELETE",
      "HEAD"
    ],
    "AllowedHeaders": [
      "*"
    ]
  }
]

使用 CloudReve 连接 R2

官方文档:S3 兼容 - Cloudreve

首先到官网下载最新版的 Windows AMD64 版,解压打开里面的 cloudreve.exe

第一次启动会给出随机的管理员邮箱、密码和端口号(默认5212).

浏览器打开 localhost:5212,管理员登录后打开管理面板,添加 S3 存储策略。

添加 R2

Cloudreve 需要的 API 密钥权限是管理员可读可写

Bucket 名称和 Endpoint 可以在 R2 网页面板查看

下一步。存储目录写 / ,不开启重命名。

之后 3、4 直接下一步,直到 5 跨域策略点击自动设置,然后完成。

新建用户

由于 Cloudreve 一个用户在同一时间只能绑定一个存储策略,并且即使切换多个存储策略,所有存储策略的文件都是混在一起,非常不便于管理,因此最好一个用户组的用户单独使用一个存储策略。

首先创建一个用户组,用户组名随意,存储策略选刚才建好的那个,打开“允许高级文件删除选项”,其他保留默认(你可以改大你的初始容量),保存。

然后新建用户:

email、昵称和密码随便写,用户组选择刚才建好的用户组,然后保存就建好了。

导入 R2 中已有的文件(可选)

如果你之前在 R2 中网页上传了文件,可以手动导入到 Cloudreve中。

存储策略和目标用户选刚才建的,原始目录路径和目的目录路径都写 / ,导入。

管理文件

现在右上角退出登录,登录到你刚才建好的帐户,即可管理这个 R2 存储桶的文件。

使用 AList 连接 R2(废弃)

绑上之后发现不能通过 Alist 上传文件。以下废弃,仅留做存档。

安装

官网文档:https://alist.nn.ci/zh/guide/install/manual.html

首先下载 Windows 程序(v3.27.0):https://github.com/alist-org/alist/releases/download/v3.27.0/alist-windows-amd64.zip,并解压。

然后打开一个 CMD 窗口,cd 到 Alist 程序的文件夹,输入 .\alist.exe server

保持这个 CMD 不要关闭,新打开一个 CMD,cd 到 Alist 程序的文件夹,输入 .\alist.exe admin random ,会给出 admin 帐户的随机密码:

浏览器打开 http://localhost:5244, 输入账户密码登录。

绑定 R2

顺利登录后,点击下方的管理

  1. 驱动:选择对象存储
  2. 挂载路径:随便写。
  1. 根文件夹路径:默认。
  2. 存储桶:填之前建立的桶名
  3. Endpoint:填 CF 面板给的 S3 API
  4. 地区:auto
  5. 访问密钥 ID:填之前建立的 API 密钥的访问密钥 ID
  6. 安全访问密钥:填之前建立的 API 密钥的机密访问密钥

保存创建后,回到主页,就能访问 R2 了。