Nubbo 通过 R2 API 令牌和你账户的 Account ID 连接 Cloudflare R2。几分钟后,你的存储桶就会出现在一个文件浏览器中,支持直接上传、分享链接和相册。本指南按照 Nubbo 向导一步步说明两种方式:自动连接,或使用仅限一个存储桶的密钥。
你将获得什么
- 像使用网盘一样浏览存储桶:文件夹、视图、搜索、回收站、标签和收藏。
- 在浏览器和 Cloudflare R2 之间直接上传和下载文件。文件从不经过 Nubbo 的服务器。
- 分享文件和文件夹时可设置密码、到期时间和下载次数限制,还能把文件接收到你的存储桶并创建相册。
- 你的密钥使用 AES-256-GCM 加密保存,你可以随时断开存储桶的连接。
开始之前
你需要一个 Cloudflare R2 账户和一个 Nubbo 账户。你连接的每个存储桶都计入你的套餐限额:免费套餐允许 2 个,Personal 允许 5 个,Pro 不限。在创建第一个存储桶之前,Cloudflare 会要求你在控制台中激活 R2 订阅。如果你的存储桶设有管辖区(EU、FedRAMP 或 US),在向导中选择它,Nubbo 就会使用该管辖区的端点。
选择连接方式
Nubbo 向导提供两种方式。两者的结果相同:存储桶已连接,并可从浏览器上传。
| 自动 | 使用受限密钥 | |
|---|---|---|
| 密钥 | 可访问整个账户 | 仅限一个存储桶 |
| 存储桶 | Nubbo 使用你现有的一个,或新建一个 | 你需要先创建 |
| CORS | Nubbo 为你添加规则 | 你自行添加规则 |
| 何时选择 | 最快的方式 | 不想授予整个账户的访问权限时 |
受限密钥是 Nubbo 所需的最小权限:对一个存储桶的 Object Read & Write。使用它时 Nubbo 无法列出你的存储桶,也无法新建存储桶,因此你需要输入存储桶名称并自行添加 CORS 规则。
自动连接
第 1 步:在 Cloudflare R2 中创建密钥
- 登录 dash.cloudflare.com 并打开 R2 object storage。控制台可能会以你的语言显示菜单。
- 打开 API Tokens,点击 Create Account API token。也可以从 Overview 的 Account Details、Manage 进入。
- 选择 Admin Read & Write 权限并创建令牌。
- 复制 Access Key ID 和 Secret Access Key。Cloudflare 只显示一次私有密钥。请使用这两个密钥,而不是令牌值。
- 同时复制你的 Account ID,它显示在 R2 的 Overview 页面上。
第 2 步:在 Nubbo 中连接存储桶
在 Nubbo 中打开 存储桶,点击 连接存储桶。选择 Cloudflare R2,然后点击 继续。

选择 自动,然后点击 继续。

在 你的密钥 这一步,粘贴 Access Key ID、Secret Access Key 和 Account ID。Nubbo 会根据 Account ID 生成你账户的端点。R2 的区域始终是
auto。点击 检查密钥 之前,选择存储桶的 管辖区:大多数存储桶选 默认(无管辖区),也可以选 EU、FedRAMP 或 US。端点会随之改变(欧盟为https://<ACCOUNT_ID>.eu.r2.cloudflarestorage.com),列表也只显示该管辖区的存储桶。点击 检查密钥。Nubbo 会检查密钥是否可用,以及是否可访问整个账户。

选择你的一个存储桶并点击 使用此存储桶,或选择 新建,输入名称(如有要求,再选择区域),然后点击 创建并准备。Nubbo 会为存储桶添加一条 CORS 规则,只允许从应用上传和下载,并保留存储桶已有的规则。

查看三项检查结果,如有需要可修改 在 Nubbo 中的名称,然后点击 完成。存储桶会出现在 存储桶 页面中,你可以在文件浏览器中打开它。

如果 Nubbo 无法用你的密钥添加 CORS 规则,向导会带你进入 CORS 步骤。此时请按照 添加 CORS 规则 操作。
使用受限密钥连接
第 1 步:在 Cloudflare R2 中准备存储桶和密钥
- 在 R2、Overview 中点击 Create bucket 并为其命名(小写字母、数字和连字符)。无需选择区域。如果数据必须留在欧盟,请选择 EU 管辖区:端点会随之改变。
- 打开 API Tokens,点击 Create Account API token。
- 选择 Object Read & Write 权限,并将其限制为你的存储桶。
- 复制 Access Key ID、Secret Access Key 和你的 Account ID。
第 2 步:在 Nubbo 中连接存储桶
- 在 存储桶 页面中点击 连接存储桶,选择 Cloudflare R2,然后选择 使用受限密钥。
- 粘贴 Access Key ID、Secret Access Key 和 Account ID。点击 检查密钥 之前,选择与存储桶相同的 管辖区。点击 检查密钥。
- 输入准确的存储桶名称,然后点击 检查访问权限。
- 向导会进入 CORS 步骤,并显示你需要添加的规则。
添加 CORS 规则
CORS 规则让浏览器可以在 https://nubbo.app 上从你的存储桶上传和下载文件。它与向导在 CORS 步骤中显示的规则相同。
- 在 R2 中打开存储桶,进入 Settings。
- 在 CORS Policy 下点击 Add CORS policy,然后选择 JSON 选项卡。
- 粘贴规则,然后点击 Save。Cloudflare 最多可能需要 30 秒才能应用。
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedOrigins": ["https://nubbo.app"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]

保存后,回到 Nubbo 并点击 已添加,检查。如果你的密钥有权修改 CORS,尝试帮我配置 会替你完成。
如果出现问题
| Nubbo 中的提示 | 怎么办 |
|---|---|
| “此密钥似乎仅限一个存储桶。你可以继续使用受限方式,或创建一个拥有完全访问权限的密钥。” | 点击继续使用受限密钥,或创建一个可访问整个账户的密钥,然后点击换一个密钥。 |
| “你的密钥没有创建存储桶的权限。” | 使用拥有完全访问权限的密钥,或在控制台中创建存储桶后点击我已在控制台中创建。 |
| “该名称在此服务商处已被使用;请换一个。” | 存储桶名称在整个服务商范围内唯一:请换一个。 |
| “你的密钥没有配置它的权限。” | 按上文所述手动添加 CORS 规则。 |
| “仍未生效。请检查规则后再试一次;部分服务商需要约一分钟才能应用。” | 确认来源正好是 https://nubbo.app,末尾没有斜杠,等待一分钟后再检查。 |
| “此存储桶已在使用中。” | 该存储桶已在 Nubbo 中连接,可能在你的账户中,也可能在其他账户中。 |
| “凭据无效。请检查访问密钥和私有访问密钥。” | 确认你粘贴的是令牌的 Access Key ID 和 Secret Access Key,而不是 Cloudflare API 令牌值。 |
| “未找到存储桶。请核对名称和区域。” | 检查名称,并确认 Nubbo 中的管辖区与存储桶一致(R2 在存储桶的 Settings 中显示)。 |
费用
R2 不收取出站流量费,并提供每月免费额度。我们在 Cloudflare R2 免费额度 中进行了说明。
常见问题
在哪里找到我的 Cloudflare Account ID?
在 R2 Overview 页面的 Account Details 下。它是一串 32 个字符的字符串,由数字和字母 a 到 f 组成。
R2 令牌需要什么权限?
Nubbo 所需的最小权限是限于你的存储桶的 Object Read & Write,配合受限密钥方式:你输入存储桶名称并自行添加 CORS 规则。自动方式需要 Admin Read & Write,Nubbo 用它列出你的存储桶、新建存储桶并配置其 CORS。
R2 使用哪个区域?
无需选择:R2 使用 auto 区域,Nubbo 会替你设置。Cloudflare 的位置提示不会影响存储桶的连接方式。
可以连接设有管辖区(例如欧盟)的 R2 存储桶吗?
可以。在“你的密钥”步骤中选择存储桶的管辖区(EU、FedRAMP 或 US)。每个管辖区都有自己的端点,例如 https://<ACCOUNT_ID>.eu.r2.cloudflarestorage.com,并且只显示在其中创建的存储桶。
从 Nubbo 下载会在 R2 上产生出站流量费吗?
不会。R2 不对出站数据传输收费。不过下载会计为读取操作。
来源
价格和限制来自以下官方页面。服务商可能会调整,请在做决定前核实。