Nubbo 可以连接任何使用 Signature V4 签名的兼容 S3 的存储,例如 MinIO、Ceph 或 SeaweedFS,无论是部署在你自己的服务器上还是由其他服务商提供。你只需要端点 URL、一个密钥和区域。本指南按照 Nubbo 向导一步步说明两种方式:自动连接,或使用仅限一个存储桶的密钥。
你将获得什么
- 像使用网盘一样浏览存储桶:文件夹、视图、搜索、回收站、标签和收藏。
- 在浏览器和你的服务器之间直接上传和下载文件。文件从不经过 Nubbo 的服务器。
- 分享文件和文件夹时可设置密码、到期时间和下载次数限制,还能把文件接收到你的存储桶并创建相册。
- 你的密钥使用 AES-256-GCM 加密保存,你可以随时断开存储桶的连接。
开始之前
你需要一个兼容 S3 的存储和一个 Nubbo 账户。你连接的每个存储桶都计入你的套餐限额:免费套餐允许 2 个,Personal 允许 5 个,Pro 不限。端点必须是一个 Nubbo 服务器和浏览器都能访问的公网 URL,并且需要使用 HTTPS,因为浏览器不会从 https://nubbo.app 加载 HTTP 内容。Nubbo 会拒绝指向私有或本地地址的端点。如果你的服务器没有区域概念,保留 us-east-1 即可。
选择连接方式
Nubbo 向导提供两种方式。两者的结果相同:存储桶已连接,并可从浏览器上传。
| 自动 | 使用受限密钥 | |
|---|---|---|
| 密钥 | 可访问整个账户 | 仅限一个存储桶 |
| 存储桶 | Nubbo 使用你现有的一个,或新建一个 | 你需要先创建 |
| CORS | Nubbo 为你添加规则 | 你自行添加规则 |
| 何时选择 | 最快的方式 | 不想授予整个账户的访问权限时 |
自动连接
第 1 步:在你的服务器上创建密钥
- 确认你的服务器在公网 HTTPS URL 上提供支持 V4 签名的 S3 API,例如
https://s3.your-domain.com。 - 创建一个能够创建存储桶并修改其 CORS 的密钥。
- 记下端点 URL 和区域。如果你的服务器没有区域概念,使用
us-east-1。
第 2 步:在 Nubbo 中连接存储桶
在 Nubbo 中打开 存储桶,点击 连接存储桶。选择 自定义 S3 / 自托管,然后点击 继续。

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

在 你的密钥 这一步,粘贴访问密钥、私有密钥、端点 URL 和区域。点击 检查密钥。Nubbo 会检查密钥是否可用,以及是否可访问整个账户。

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

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

如果 Nubbo 无法用你的密钥添加 CORS 规则,向导会带你进入 CORS 步骤。此时请按照 添加 CORS 规则 操作。
使用受限密钥连接
第 1 步:在你的服务器上准备存储桶和密钥
- 在你的服务器上创建存储桶(例如在 MinIO 上使用
mc mb)。 - 创建一个对该存储桶拥有读写权限的密钥。
- 记下端点 URL 和区域。
第 2 步:在 Nubbo 中连接存储桶
- 在 存储桶 页面中点击 连接存储桶,选择 自定义 S3 / 自托管,然后选择 使用受限密钥。
- 粘贴访问密钥、私有密钥、端点和区域。点击 检查密钥。
- 输入准确的存储桶名称,然后点击 检查访问权限。
- 向导会进入 CORS 步骤,并显示你需要添加的规则。
添加 CORS 规则
CORS 规则让浏览器可以在 https://nubbo.app 上从你的存储桶上传和下载文件。它与向导在 CORS 步骤中显示的规则相同。
CORS 的配置方式取决于所用软件:
- MinIO(社区版) 不支持按存储桶设置 CORS:它使用一个全局设置(
MINIO_API_CORS_ALLOW_ORIGIN),默认允许任何来源。如果你没有修改过它,就无需任何操作:点击 已添加,检查,检查就会通过。如果你修改过,请加入https://nubbo.app。 - Ceph 和 SeaweedFS 支持通过 S3 API 按存储桶设置 CORS。用你常用的工具应用此规则(例如针对你的端点使用
aws s3api put-bucket-cors),或在自动方式下交给 Nubbo 完成。
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedOrigins": ["https://nubbo.app"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]

规则就绪后,回到 Nubbo 并点击 已添加,检查。在 Ceph 和 SeaweedFS 上,如果你的密钥可以修改 CORS,尝试帮我配置 会替你完成。
如果出现问题
| Nubbo 中的提示 | 怎么办 |
|---|---|
| “凭据无效。请检查访问密钥和私有访问密钥。” | 重新复制两个密钥,开头和结尾不要有空格。 |
| “此密钥似乎仅限一个存储桶。你可以继续使用受限方式,或创建一个拥有完全访问权限的密钥。” | 点击继续使用受限密钥,或创建一个可访问整个账户的密钥,然后点击换一个密钥。 |
| “未找到存储桶。请核对名称和区域。” | 核对准确的存储桶名称,并确认所选区域就是存储桶所在的区域。 |
| “你的密钥没有创建存储桶的权限。” | 使用拥有完全访问权限的密钥,或在控制台中创建存储桶后点击我已在控制台中创建。 |
| “该名称在此服务商处已被使用;请换一个。” | 存储桶名称在整个服务商范围内唯一:请换一个。 |
| “你的密钥没有配置它的权限。” | 按上文所述手动添加 CORS 规则。 |
| “仍未生效。请检查规则后再试一次;部分服务商需要约一分钟才能应用。” | 确认来源正好是 https://nubbo.app,末尾没有斜杠,等待一分钟后再检查。 |
| “此存储桶已在使用中。” | 该存储桶已在 Nubbo 中连接,可能在你的账户中,也可能在其他账户中。 |
| “无法连接到 S3 端点。请核对端点 URL。” | 确认该 URL 是公网地址、使用 HTTPS,并且可以从互联网访问,而不仅仅是从你的网络内访问。 |
| “端点 URL 无效。请检查格式。” | 输入以 https:// 开头的完整 URL,不要包含存储桶名称。当 URL 指向私有或本地地址,或者域名无法解析时,也会出现此提示。 |
| “连接超时。请重试。” | 检查服务器防火墙,并确认端口可以从外部访问。 |
费用
如果你在权衡自建存储和服务商,可以在 S3、R2、Spaces、Wasabi 与 Backblaze B2 对比 中比较价格和限制。
常见问题
哪些自托管存储可以与 Nubbo 配合使用?
任何兼容 S3 API 且支持 V4 签名的存储,例如 MinIO、Ceph 或 SeaweedFS,也包括不在列表中的兼容 S3 的服务商。
可以连接局域网中的 MinIO 吗?
不可以。端点必须是公网 URL:Nubbo 会拒绝私有和本地地址,而且浏览器也需要能访问它。
如果我的服务器没有区域概念,应该用哪个区域?
us-east-1。它是大多数兼容 S3 的服务器的默认区域。
为什么 Nubbo 无法在 MinIO 上设置 CORS?
因为 MinIO 社区版不支持按存储桶设置 CORS。它使用一个默认允许任何来源的全局设置,Nubbo 会对其进行检查。
来源
价格和限制来自以下官方页面。服务商可能会调整,请在做决定前核实。