ガイド

MinIOとセルフホストS3のファイルマネージャー: Nubboに接続する

MinIO、Ceph、SeaweedFSなど独自のS3互換ストレージをNubboに接続する方法。エンドポイント、キー、リージョン、CORS、失敗したときの対処法を説明します。

NubboはMinIO、Ceph、SeaweedFSなど、Signature V4で署名するあらゆるS3互換ストレージに接続できます。ご自身のサーバーでも、別のプロバイダーでも構いません。必要なのはエンドポイントURL、キー、リージョンだけです。このガイドでは、自動接続と1つのバケットに限定したキーでの接続という2つの方法について、Nubboのウィザードを順を追って説明します。

できること

  • バケットをドライブのように閲覧: フォルダ、表示切り替え、検索、ゴミ箱、ラベル、お気に入り。
  • ブラウザとサーバーの間でファイルを直接アップロード、ダウンロード。ファイルがNubboのサーバーを経由することはありません。
  • パスワード、有効期限、ダウンロード回数制限付きでファイルやフォルダを共有し、バケットにファイルを受け取り、ギャラリーを作成。
  • キーはAES-256-GCMで暗号化して保存され、いつでもバケットの接続を解除できます。

始める前に

S3互換ストレージとNubboのアカウントが必要です。接続する各バケットがプランの上限にカウントされます: 無料プランは2つ、Personalは5つまでで、Proは無制限です。エンドポイントはNubboのサーバーとブラウザの両方からアクセスできる公開URLである必要があります。また、ブラウザは https://nubbo.app からHTTPのコンテンツを読み込まないため、HTTPSが必要です。Nubboはプライベートアドレスやローカルアドレスを指すエンドポイントを受け付けません。サーバーにリージョンがない場合は us-east-1 のままにしてください。

接続方法を選ぶ

Nubboのウィザードには2つの方法があります。どちらも最後は同じで、バケットが接続され、ブラウザからアップロードできる状態になります。

自動限定キーで接続
キーアカウント全体にアクセス1つのバケットに限定
バケットNubboが既存のバケットを使うか新規作成する先にご自身で作成する
CORSNubboがルールを追加するご自身でルールを追加する
選ぶべき場合いちばん早い方法アカウント全体へのアクセスを許可したくない場合

自動接続

ステップ1: サーバーでキーを作成する

  1. サーバーがV4署名のS3 APIを公開HTTPSのURL(例: https://s3.your-domain.com)で提供しているか確認します。
  2. バケットの作成とCORSの変更ができるキーを作成します。
  3. エンドポイントURLとリージョンを控えておきます。サーバーにリージョンがない場合は us-east-1 を使います。

ステップ2: Nubboでバケットを接続する

  1. Nubboで バケット を開き、バケットを接続 を押します。カスタムS3 / セルフホスト を選んで 続行 を押します。

    カスタムS3 / セルフホストを選択したNubboウィザードのプロバイダーのステップ カスタムS3 / セルフホストを選択したNubboウィザードのプロバイダーのステップ
  2. 自動 を選んで 続行 を押します。

    自動と限定キーで接続の選択肢がある接続方法のステップ 自動と限定キーで接続の選択肢がある接続方法のステップ
  3. キー のステップでアクセスキー、シークレットキー、エンドポイントURL、リージョンを貼り付けます。キーを確認 を押します。Nubboはキーが有効で、アカウント全体にアクセスできることを確認します。

    クイックガイドとキーの入力欄があるカスタムS3 / セルフホストのキーのステップ クイックガイドとキーの入力欄があるカスタムS3 / セルフホストのキーのステップ
  4. バケットを1つ選んで このバケットを使用 を押すか、新規作成 を選んで名前を入力し(求められた場合はリージョンも選び)、作成して準備 を押します。Nubboはアプリからのアップロードとダウンロードだけを許可するCORSルールをバケットに追加し、既存のルールはそのまま残します。

    バケットの一覧と新規作成の選択肢があるバケットのステップ バケットの一覧と新規作成の選択肢があるバケットのステップ
  5. 3つのチェックを確認し、必要なら 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 (community edition) はバケットごとの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のメッセージ対処法
「認証情報が無効です。アクセスキーとシークレットアクセスキーを確認してください。」両方のキーを、先頭と末尾に空白が入らないようにもう一度コピーしてください。
「このキーは1つのバケットに限定されているようです。限定キーの手順で続行するか、フルアクセスのキーを作成してください。」限定キーで続行を押すか、アカウント全体にアクセスできるキーを作成して別のキーを試すを押してください。
「バケットが見つかりません。名前とリージョンを確認してください。」バケット名が正確か、選んだリージョンがバケットのリージョンと同じか確認してください。
「このキーにはバケットを作成する権限がありません。」フルアクセスのキーを使うか、管理画面でバケットを作成して管理画面で作成しましたを押してください。
「この名前はこのプロバイダーですでに使用されています。別の名前をお試しください。」バケット名はプロバイダー全体で一意です。別の名前を選んでください。
「このキーには設定する権限がありません。」上記の説明に沿って、CORSルールを手動で追加してください。
「まだ動作していません。ルールを見直して再度確認してください。プロバイダーによっては反映まで1分ほどかかります。」オリジンが末尾のスラッシュなしで正確に https://nubbo.app になっているか確認し、1分待ってから再度確認してください。
「このバケットはすでに使用されています。」そのバケットは、ご自身または別のアカウントですでにNubboに接続されています。
「S3エンドポイントに接続できませんでした。エンドポイントのURLを確認してください。」URLが公開されていてHTTPSを使い、ご自身のネットワーク内だけでなくインターネットから応答するか確認してください。
「エンドポイントのURLが無効です。形式を確認してください。」https:// を含め、バケット名を含まない完全なURLを入力してください。URLがプライベートアドレスやローカルアドレスを指している場合や、名前が解決できない場合にも表示されます。
「接続がタイムアウトしました。もう一度お試しください。」サーバーのファイアウォールを確認し、ポートに外部からアクセスできるか確認してください。

料金

独自のストレージとプロバイダーのどちらにするか検討している場合は、S3、R2、Spaces、Wasabi、Backblaze B2の比較 で料金と制限を比べてみてください。

よくある質問

Nubboで使えるセルフホストストレージは何ですか?

MinIO、Ceph、SeaweedFSなど、V4署名のS3 APIに対応したストレージであれば使えます。一覧にないS3互換プロバイダーにも対応しています。

ローカルネットワーク上のMinIOを接続できますか?

いいえ。エンドポイントは公開URLである必要があります。Nubboはプライベートアドレスやローカルアドレスを受け付けず、ブラウザからもアクセスできる必要があります。

サーバーにリージョンがない場合、どのリージョンを使いますか?

us-east-1です。ほとんどのS3互換サーバーのデフォルトリージョンです。

NubboがMinIOでCORSを設定できないのはなぜですか?

MinIOのコミュニティ版はバケットごとのCORSに対応していないからです。デフォルトですべてのオリジンを許可するグローバル設定を使い、Nubboはそれを確認します。

出典

料金と制限は以下の公式ページに基づいています。プロバイダーは変更することがあるため、契約前にご確認ください。