指南

Backblaze B2 文件管理器:将其连接到 Nubbo

如何将 Backblaze B2 存储桶连接到 Nubbo:应用密钥、区域、向导的每一步、用 B2 命令行配置 CORS,以及失败时该怎么办。

Nubbo 通过 Backblaze B2 的 S3 兼容 API 连接,只需一个应用密钥和你账户的区域。几分钟后,你的存储桶就会出现在一个文件浏览器中,支持直接上传、分享链接和相册。本指南按照 Nubbo 向导一步步说明两种方式:自动连接,或使用仅限一个存储桶的密钥。

你将获得什么

  • 像使用网盘一样浏览存储桶:文件夹、视图、搜索、回收站、标签和收藏。
  • 在浏览器和 Backblaze B2 之间直接上传和下载文件。文件从不经过 Nubbo 的服务器。
  • 分享文件和文件夹时可设置密码、到期时间和下载次数限制,还能把文件接收到你的存储桶并创建相册。
  • 你的密钥使用 AES-256-GCM 加密保存,你可以随时断开存储桶的连接。

开始之前

你需要一个 Backblaze B2 账户和一个 Nubbo 账户。你连接的每个存储桶都计入你的套餐限额:免费套餐允许 2 个,Personal 允许 5 个,Pro 不限。在 B2 上,区域在创建账户时选定,并适用于账户下的所有存储桶。你可以在任意存储桶的端点中看到它,格式类似 s3.<region>.backblazeb2.com:这就是要在 Nubbo 中选择的区域。账户的主密钥无法用于 S3 API,因此请始终创建应用密钥。

选择连接方式

Nubbo 向导提供两种方式。两者的结果相同:存储桶已连接,并可从浏览器上传。

自动使用受限密钥
密钥可访问整个账户仅限一个存储桶
存储桶Nubbo 使用你现有的一个,或新建一个你需要先创建
CORSNubbo 为你添加规则你自行添加规则
何时选择最快的方式不想授予整个账户的访问权限时

自动连接

第 1 步:在 Backblaze B2 中创建密钥

  1. 在 backblaze.com 上打开 B2 Cloud Storage、Application Keys,然后点击 Add a New Application Key。不要使用 master application key。
  2. 为其命名,将 Allow Access to Bucket(s) 设为 All,将 Type of Access 设为 Read and Write。点击 Create New Key。
  3. 复制 keyID(访问密钥)和 applicationKey(私有密钥)。Backblaze 只显示一次 applicationKey。
  4. 在 Buckets 中查看任意存储桶的端点,即可找到你的区域。

第 2 步:在 Nubbo 中连接存储桶

  1. 在 Nubbo 中打开 存储桶,点击 连接存储桶。选择 Backblaze B2,然后点击 继续。

    Nubbo 向导的服务商步骤,已选择 Backblaze B2 Nubbo 向导的服务商步骤,已选择 Backblaze B2
  2. 选择 自动,然后点击 继续。

    连接方式步骤,包含自动和使用受限密钥两个选项 连接方式步骤,包含自动和使用受限密钥两个选项
  3. 在 你的密钥 这一步,粘贴 keyID 和 applicationKey,并选择你账户的区域。点击 检查密钥。Nubbo 会检查密钥是否可用,以及是否可访问整个账户。

    Backblaze B2 的你的密钥步骤,包含快速指南和密钥字段 Backblaze B2 的你的密钥步骤,包含快速指南和密钥字段
  4. 选择你的一个存储桶并点击 使用此存储桶,或选择 新建,输入名称(如有要求,再选择区域),然后点击 创建并准备。Nubbo 会为存储桶添加一条 CORS 规则,只允许从应用上传和下载,并保留存储桶已有的规则。

    你的存储桶步骤,包含存储桶列表和新建选项 你的存储桶步骤,包含存储桶列表和新建选项
  5. 查看三项检查结果,如有需要可修改 在 Nubbo 中的名称,然后点击 完成。存储桶会出现在 存储桶 页面中,你可以在文件浏览器中打开它。

    完成步骤,包含连接、存储桶和 CORS 的检查结果 完成步骤,包含连接、存储桶和 CORS 的检查结果

然后在存储桶中打开 Lifecycle Settings,选择 Keep only the last version of the file。否则 B2 会保留每个版本,在 Nubbo 中删除文件也不会释放空间。

如果 Nubbo 无法用你的密钥添加 CORS 规则,向导会带你进入 CORS 步骤。此时请按照 添加 CORS 规则 操作。

使用受限密钥连接

第 1 步:在 Backblaze B2 中准备存储桶和密钥

  1. 在 Buckets 中点击 Create a Bucket,为其命名并保持 Private。
  2. 在存储桶中打开 Lifecycle Settings,选择 Keep only the last version of the file。
  3. 查看存储桶的端点,找到区域。
  4. 在 Application Keys 中点击 Add a New Application Key,将访问权限限制为你的存储桶并设为 Read and Write,然后勾选 Allow List All Bucket Names。点击 Create New Key。
  5. 复制 keyID 和 applicationKey。

第 2 步:在 Nubbo 中连接存储桶

  1. 在 存储桶 页面中点击 连接存储桶,选择 Backblaze B2,然后选择 使用受限密钥。
  2. 粘贴 keyID 和 applicationKey,并选择区域。点击 检查密钥。
  3. 输入准确的存储桶名称,然后点击 检查访问权限。
  4. 向导会进入 CORS 步骤,并显示你需要添加的规则。

添加 CORS 规则

CORS 规则让浏览器可以在 https://nubbo.app 上从你的存储桶上传和下载文件。它与向导在 CORS 步骤中显示的规则相同。

B2 控制台中的 CORS 规则是预设的,无法选择具体操作,因此 Nubbo 的规则需要用 B2 命令行工具(b2)添加,并使用一个能修改存储桶设置的密钥。

  1. 安装命令行工具,例如运行 pip install b2。
  2. 用你的 keyID 和 applicationKey 登录:b2 account authorize。
  3. 应用规则,将 your-bucket 替换为存储桶名称。allPrivate 会让存储桶保持私有。
b2 bucket update --cors-rules '[{"corsRuleName":"nubbo","allowedOrigins":["https://nubbo.app"],"allowedOperations":["s3_get","s3_head","s3_put","s3_post","s3_delete"],"allowedHeaders":["*"],"exposeHeaders":["etag"],"maxAgeSeconds":3600}]' your-bucket allPrivate
CORS 步骤,显示要添加到存储桶的规则 CORS 步骤,显示要添加到存储桶的规则

应用后,回到 Nubbo 并点击 已添加,检查。如果你的密钥有权修改 CORS,尝试帮我配置 会替你完成。

如果出现问题

Nubbo 中的提示怎么办
“此密钥似乎仅限一个存储桶。你可以继续使用受限方式,或创建一个拥有完全访问权限的密钥。”点击继续使用受限密钥,或创建一个可访问整个账户的密钥,然后点击换一个密钥。
“未找到存储桶。请核对名称和区域。”核对准确的存储桶名称,并确认所选区域就是存储桶所在的区域。
“你的密钥没有创建存储桶的权限。”使用拥有完全访问权限的密钥,或在控制台中创建存储桶后点击我已在控制台中创建。
“该名称在此服务商处已被使用;请换一个。”存储桶名称在整个服务商范围内唯一:请换一个。
“你的密钥没有配置它的权限。”按上文所述手动添加 CORS 规则。
“仍未生效。请检查规则后再试一次;部分服务商需要约一分钟才能应用。”确认来源正好是 https://nubbo.app,末尾没有斜杠,等待一分钟后再检查。
“此存储桶已在使用中。”该存储桶已在 Nubbo 中连接,可能在你的账户中,也可能在其他账户中。
“凭据无效。请检查访问密钥和私有访问密钥。”确认你没有使用 master application key,它无法用于 S3 API。
“存储桶位于不同的区域。请核对配置的区域。”在 Nubbo 中选择存储桶端点中显示的区域。

费用

Backblaze B2 按 TB 收费,提供 10 GB 免费空间,出站流量在存储量的三倍以内免费。我们在 Backblaze B2 价格 中进行了说明。

常见问题

可以使用 Backblaze 的 master application key 吗?

不可以。Backblaze 的 S3 兼容 API 不支持主密钥。请在 Application Keys 下创建一个应用密钥。

在 Nubbo 中应为 B2 选择哪个区域?

你的存储桶端点中的区域,格式类似 s3.<region>.backblazeb2.com。在 B2 上,一个账户的所有存储桶都位于同一区域。

为什么要用 B2 命令行工具配置 CORS?

因为控制台中的规则是预设的,无法选择 Nubbo 所需的操作。命令行工具是应用这条规则最简单的方式;任何能对 B2 端点执行 PutBucketCors 的 S3 工具也都可以。

为什么在 Nubbo 中删除文件后 B2 上的空间没有释放?

因为 B2 默认会保留之前的版本。在存储桶的 Lifecycle Settings 中选择 Keep only the last version of the file。

来源

价格和限制来自以下官方页面。服务商可能会调整,请在做决定前核实。