Cloudflare R2:セットアップと設定エラーの対応方法

皆さん、こんにちは。

Discourseフォーラムのアップロードとバックアップの両方でCloudflare R2を正常に設定した手順と経験を共有したいと思います。DiscourseでCloudflare R2を使用しようとしている他の皆さんの参考になれば幸いです。

セットアップ概要:

  • プラットフォーム: Discourse (Bitnamiインストール)
  • バケット: Cloudflare R2
  • カスタムドメイン: ファイルを公開提供するために設定済み
  • 設定: すべてDiscourseのサイト設定で行いました(環境変数は一切変更していません)

ステップバイステップガイド:

  1. Cloudflare R2バケットの作成:
    • Cloudflareアカウントにログインし、R2ストレージに移動します。
    • Discourseのアップロード用の新しいバケットを作成します(例:forum-uploads)。
    • バケットS3 API URLアクセスキーIDシークレットアクセスキーをメモしておきます。
  2. CDN用のカスタムドメインの設定:
    • R2バケットのコンテンツを公開提供するには、Cloudflareでカスタムドメインを作成します。
    • 例として、forumfiles.example.inを使用しました。
    • DNS設定がCloudflare提供のCNAMEを指すように設定されていることを確認してください。Cloudflareでドメインを管理しているため、これは自動で行われました。
  3. Discourseサイト設定の設定:
    • s3_bucket: R2バケット名(例:forum-uploads)。
    • s3_region: US East (N. Virginia) に設定します。「自動」のオプションはありませんでした。
    • s3_endpoint: Cloudflareから提供されたバケットS3 API URLを使用します(例:https://<your-bucket-unique-id>.r2.cloudflarestorage.com)。
    • s3_access_key_id: R2のアクセスキーID
    • s3_secret_access_key: R2のシークレットアクセスキー
    • s3_cdn_url: CDN用のカスタムドメイン(例:https://forumfiles.example.in)。
    • enable s3 backupsenable s3 uploads の両方にチェックが入っていることを確認してください。
  4. 権限とCORSの調整:
    • R2バケットをプライベートに設定し、CORSポリシーを設定します。
[
  {
      "AllowedHeaders": ["*"],
      "AllowedMethods": ["GET", "POST", "PUT", "HEAD"],
      "AllowedOrigins": ["*"],
      "ExposeHeaders": ["ETag"],
      "MaxAgeSeconds": 3000
  }
]
  • これにより、CORSの問題なくアップロードが正しく機能するようになります。
  1. セットアップのテスト:
    • Discourseフォーラムでテストファイルまたは画像をアップロードして、アップロードが正しく機能しているか確認します。
    • カスタムドメイン(例:https://forumfiles.example.in/original/1X/...)からファイルにアクセスできるか確認します。
    • バックアップを確認します。バックアップは正常に実行され、R2バケットで確認でき、サイト設定にもリストされていました。

結論:

これらの手順に従うことで、Cloudflare R2をDiscourseとシームレスに統合し、アップロードとバックアップの両方を効率的に処理することができました。ご質問がある場合や問題が発生した場合は、お気軽にお尋ねください!

「いいね!」 6