アップロードのためのS3互換のオブジェクトストレージプロバイダーを設定する

@mcwumblyさん、こんにちは。「S3クローン」で検索すれば簡単に見つかりました。今、見つけることができませんでした。そのタイトルに何か問題がありましたか?それを見つける検索はありますか?標準のインストールが(どのような単語を使えばよいか思いつきませんが)行うように、いくつかの単語で自動リンクできるように(何と呼ばれるか思い出せませんが)追加できますか?

「いいね!」 3

週に何度もそのトピックをリンクしている者として、少し同意します :stuck_out_tongue:

OP本文に「s3 クローン」を追加すると、検索がうまくいきませんか?

「いいね!」 2

一般的に「S3互換」の方がよく使われていることに気づいたので、ドキュメントのタイトルを全体的に更新する際に変更しました。例えば、以下のような例があります。AWS S3 Compatible Object Storage | MinIO

OPの本文に他の検索用語を入れるという提案は理にかなっていると思います。(この件についても追加しました)。

「いいね!」 1

問題ないようです。時代に合わせて変更しなければならないでしょうね。:person_shrugging:

はい。それほど難しくありません。あなたならできますよ、@pfaffman

@falco:

「いいね!」 2

こんにちは、Contabo Object Storage を S3 互換アップロードで動作させた方はいらっしゃいますか?アップロード時にリポジトリ名を URL にプレフィックスとして追加しているようです。

例えば、community というバケットがあると、https://community.eu2.contabostorage.com のような URL が作成されます。

Duplicati などでこの動作を見つけましたが、ドメインにバケット名をプレフィックスとして追加しないように除外できます。

非常に良い価格設定なので、この Object Storage を使用できるように解決策をお持ちの方がいらっしゃいましたら、ご協力いただけると幸いです。

Cloudflare から mydomain.com の CNAME としてドメインを設定し、SSL を提供するためにいくつかのテストを行いましたが、community.cdn.midominio.com ではワイルドカードを使用しているため SSL 証明書がカバーされなくなり、Cloudflare のプロキシを無効にすると証明書が正しくないというエラーが発生します。

よろしくお願いします。

「いいね!」 1

S3 CDN 設定を https://community.eu2.contabostorage.com に設定してみましたか? IMO それでうまくいくはずです。

存在しません。contaboのエンドポイントは eu2.contabostorage.com です。

「いいね!」 1

はい、しかしバケット内の例ファイルの最終的なURLは何になりますか?

「いいね!」 2

![](upload://u6BBQfNFGrA4yuaLeqABnVkt87U.png)

それは、あなたが自分でバケットにファイルをアップロードした場合(ファイルをアップロードできるツールは何でも使用して)、そのファイルにアクセスするにはどのURLを使用するか、という意味です。

「いいね!」 2

https://eu2.contabostorage.com/9198f3bf2d6e43dd86fab037ebad3aee:comunidad/castopod-1.png

構造は次のとおりです。

ホスト: https://eu2.contabostorage.com/
ユーザー: 9198f3bf2d6e43dd86fab037ebad3aee
バケット: comunidad
ファイル: castopod-1.png

「いいね!」 2

それは機能するURLではありません。しかし、コロンをスラッシュに置き換えたら機能するかもしれません。

最初の投稿で説明した方法とは違うので、彼が別の提案をするかもしれません。

「いいね!」 1

以下のように設定して、再構築してみてください。

  DISCOURSE_S3_CDN_URL: "https://eu2.contabostorage.com/9198f3bf2d6e43dd86fab037ebad3aee:comunidad"
「いいね!」 2

Cloudflare の R2 がついに一般公開されました(1 年かかったようです)。(元の発表はこちらです: https://blog.cloudflare.com/introducing-r2-object-storage/)

バケットを作成しました。

トークンを作成しました。トークンを作成したところ、以下の権限が含まれていました。「編集: すべてのオブジェクトの編集アクセスと、すべてのバケットのリスト、書き込み、削除操作を許可」

試したことは以下の通りです。

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: auto
  DISCOURSE_S3_ACCESS_KEY_ID: redacted
  DISCOURSE_S3_SECRET_ACCESS_KEY: redacted
  DISCOURSE_S3_CDN_URL: https://pub-72eaa03782c542edbe00598fd1666be1.r2.dev
  DISCOURSE_S3_BUCKET: lc-testing
  DISCOURSE_S3_BACKUP_BUCKET: lc-testing/backups
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_ENDPOINT: https://cb46accbfcc3db1bdbba2bce07f8b509.r2.cloudflarestorage.com
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_CONFIGURE_TOMBSTONE_POLICY: false
  FORCE_S3_UPLOADS: 1

しかし、アセットのアップロードは次のようなエラーで失敗します。

Aws::S3::Errors::NotImplemented: Header 'x-amz-acl' with value 'public-read' not implemented

そして、Public buckets · Cloudflare R2 docs で説明されているように、バケットを公開する必要があることを思い出しました。

しかし、それでも機能しませんでした。

S3 API compatibility · Cloudflare R2 docs を見ると、x-amz-acl が実装されていないことが示されています。

Discourse のコードをざっと見ましたが、コアに変更を加えないと R2 が機能する可能性があるかどうかは明らかではありませんでした。

アップロードを無効にした後、バックアップは機能したので、R2 は S3 バックアップを持つための非常に安価な方法のようです。しかし、そのバケットを公開していたため、バックアップも公開されていました(ファイル名を推測できれば)、したがって、これが解決された場合、バックアップとアップロードには別のバケットを用意したいと思うでしょう。

この行を削除したところ、ファイルがアップロードされ、カスタムドメインを s3_cdn_url として使用してアクセスできることがわかりました。(同様の編集を s3 rake タスクに加えることで、アセットのアップロードが可能になります。)

「いいね!」 5

したがって、オブジェクトレベルのACLが実装されるまで、OPで互換性がないと追加する必要があると思います。試してくれてありがとう!

「いいね!」 2

はい。ACL をスキップできるようにコアに必要な変更は非常に複雑に見えます。バックアップ専用で問題ないと言えるでしょう。バケットを公開するために苦労しない限り、問題ないはずです。

「いいね!」 1

問題はS3エンドポイントです

「いいね!」 1

R2 をテストしましたが、ドキュメントには記載されているにもかかわらず、当社の「Content-Encoding」情報を尊重していないようです。1 年後には使用できるようになるかもしれません。

「いいね!」 3

MinIO または一般セクションに警告文を追加する必要があります。ここに「Discourse は S3 互換ストレージシステムでパスに DNS モードを使用します。バックエンドがバケットパスにパスモードのみをサポートし、DNS モードをサポートしない場合、Discourse と互換性がありません。」という通知を作成する必要があります。これが、MinIO が 元々 リストになかった理由であり、後にリストに追加された理由です。

また、MinIO ストレージサーバーセクションを更新する必要があります。注意点 2 に次のステートメントを含める必要があります。

  1. ドメイン駆動バケットパスのために、MinIO の構成でドメインサポートが有効になっている必要があります。これは 必須 です。Discourse は S3 ストレージメカニズムで、非ドメインパス駆動バケットパスをサポートしていません。

編集: この投稿でメンバー ステータス (信頼レベル 2) を取得できたため、ウィキ投稿を編集できるようになりました。モデレーターに編集を依頼しましたが、アクションは不要です。

「いいね!」 4

素晴らしい!最新の状態に保ってくれてありがとう。それは私が喜んで受け取る警告のようなものですね。

:clinking_glasses: :palms_up_together:

「いいね!」 2