指南

MinIO 與自架 S3 檔案管理工具:連接到 Nubbo

如何將你自己的 S3 相容儲存(例如 MinIO、Ceph 或 SeaweedFS)連接到 Nubbo:端點、金鑰、區域、CORS,以及失敗時該怎麼做。

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 使用你現有的,或新建一個你要先自行建立
CORSNubbo 為你新增規則你自行新增規則
何時選擇最快的方式不想授予整個帳戶的存取權時

自動連線

步驟 1:在你的伺服器建立金鑰

  1. 確認你的伺服器在公開的 HTTPS URL 上提供支援 V4 簽章的 S3 API,例如 https://s3.your-domain.com。
  2. 建立一把能建立儲存桶並變更其 CORS 的金鑰。
  3. 記下端點 URL 和區域。如果你的伺服器沒有區域,請使用 us-east-1。

步驟 2:在 Nubbo 連接儲存桶

  1. 在 Nubbo 中開啟 儲存桶,按下 連接儲存桶。選擇 自訂 S3 / 自行架設,然後按下 繼續。

    Nubbo 連線精靈的服務供應商步驟,已選取自訂 S3 / 自行架設 Nubbo 連線精靈的服務供應商步驟,已選取自訂 S3 / 自行架設
  2. 選擇 自動,然後按下 繼續。

    連線方式步驟,含自動和使用受限金鑰兩個選項 連線方式步驟,含自動和使用受限金鑰兩個選項
  3. 在 你的金鑰 步驟中貼上存取金鑰、私密金鑰、端點 URL 和區域。按下 檢查金鑰。Nubbo 會確認金鑰可用,且能存取整個帳戶。

    自訂 S3 / 自行架設的你的金鑰步驟,含快速設定指南和金鑰欄位 自訂 S3 / 自行架設的你的金鑰步驟,含快速設定指南和金鑰欄位
  4. 選擇你的其中一個儲存桶並按下 使用這個儲存桶,或選擇 新建,輸入名稱(如果有要求,再選擇區域),然後按下 建立並準備。Nubbo 會在儲存桶中新增一條 CORS 規則,只允許從應用程式上傳和下載,並保留原有的規則。

    你的儲存桶步驟,含儲存桶清單和新建選項 你的儲存桶步驟,含儲存桶清單和新建選項
  5. 檢查三項確認結果,視需要變更 在 Nubbo 中的名稱,然後按下 完成。儲存桶會出現在 儲存桶 頁面中,你可以在檔案總管中開啟它。

    完成步驟,含連線、儲存桶和 CORS 的確認結果 完成步驟,含連線、儲存桶和 CORS 的確認結果

如果 Nubbo 無法用你的金鑰新增 CORS 規則,連線精靈會帶你到 CORS 步驟。接著請依照 新增 CORS 規則 操作。

使用受限金鑰連線

步驟 1:在你的伺服器準備儲存桶和金鑰

  1. 在你的伺服器上建立儲存桶(例如在 MinIO 上使用 mc mb)。
  2. 建立一把對該儲存桶具有讀寫權限的金鑰。
  3. 記下端點 URL 和區域。

步驟 2:在 Nubbo 連接儲存桶

  1. 在 儲存桶 頁面中按下 連接儲存桶,選擇 自訂 S3 / 自行架設,再選擇 使用受限金鑰。
  2. 貼上存取金鑰、私密金鑰、端點和區域。按下 檢查金鑰。
  3. 輸入儲存桶的確切名稱,然後按下 檢查存取權限。
  4. 連線精靈會進入 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
  }
]
CORS 步驟,含要新增到儲存桶的規則 CORS 步驟,含要新增到儲存桶的規則

規則準備好後回到 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 會檢查這項設定。

資料來源

價格與限制取自以下官方頁面。服務供應商會調整這些內容,決定前請先確認。