皆さん、こんにちは。
Discourseフォーラムのアップロードとバックアップの両方でCloudflare R2を正常に設定した手順と経験を共有したいと思います。DiscourseでCloudflare R2を使用しようとしている他の皆さんの参考になれば幸いです。
セットアップ概要:
- プラットフォーム: Discourse (Bitnamiインストール)
- バケット: Cloudflare R2
- カスタムドメイン: ファイルを公開提供するために設定済み
- 設定: すべてDiscourseのサイト設定で行いました(環境変数は一切変更していません)
ステップバイステップガイド:
- Cloudflare R2バケットの作成:
- Cloudflareアカウントにログインし、R2ストレージに移動します。
- Discourseのアップロード用の新しいバケットを作成します(例:
forum-uploads)。 - バケットS3 API URL、アクセスキーID、シークレットアクセスキーをメモしておきます。
- CDN用のカスタムドメインの設定:
- R2バケットのコンテンツを公開提供するには、Cloudflareでカスタムドメインを作成します。
- 例として、
forumfiles.example.inを使用しました。 - DNS設定がCloudflare提供のCNAMEを指すように設定されていることを確認してください。Cloudflareでドメインを管理しているため、これは自動で行われました。
- 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 backups と enable s3 uploads の両方にチェックが入っていることを確認してください。
- s3_bucket: R2バケット名(例:
- 権限とCORSの調整:
- R2バケットをプライベートに設定し、CORSポリシーを設定します。
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "POST", "PUT", "HEAD"],
"AllowedOrigins": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3000
}
]
- これにより、CORSの問題なくアップロードが正しく機能するようになります。
- セットアップのテスト:
- Discourseフォーラムでテストファイルまたは画像をアップロードして、アップロードが正しく機能しているか確認します。
- カスタムドメイン(例:
https://forumfiles.example.in/original/1X/...)からファイルにアクセスできるか確認します。 - バックアップを確認します。バックアップは正常に実行され、R2バケットで確認でき、サイト設定にもリストされていました。
結論:
これらの手順に従うことで、Cloudflare R2をDiscourseとシームレスに統合し、アップロードとバックアップの両方を効率的に処理することができました。ご質問がある場合や問題が発生した場合は、お気軽にお尋ねください!