バックアップはダウンロードできます。これまでに問題はありませんでした。
S3アップロードも含まれていますか?
画像のURLを見ましたか?どのようなものですか?
つまり、app.ymlからr2を設定することはまだできませんか?ウェブサイトの設定、つまりDB_S3_CONFIGからのみですか?
このメソッドを使用すれば、rake uploads : migrate to s3 を使って、古いローカルアップロードをR2にアップロードできますか?
ありがとうございます。
私の理解が正しければ、“DISCOURSE_CDN_URL” は “DISCOURSE_S3_CDN_URL” と同じで、Cloudflare のバケットにリンクされたカスタム公開ドメインということでしょうか?それとも、他に何か設定が必要でしょうか?
はい、同じドメイン名をdiscourseコンテナのymlに追加する必要があります。使用例を以下に示します。
## このDiscourseインスタンスのHTTPまたはHTTPS CDNアドレス(プルするように設定されています)
## 詳細については、https://meta.discourse.org/t/14857を参照してください
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
#DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: 'auto'
DISCOURSE_S3_ENDPOINT: 'https://45dv544v56x****************************564564.eu.r2.cloudflarestorage.com'
DISCOURSE_S3_ACCESS_KEY_ID: '564dfds4f54sdfs********65564545'
DISCOURSE_S3_SECRET_ACCESS_KEY: 'sddfsdf564564**********6545sd4f54sd56f4s6d5'
DISCOURSE_S3_CDN_URL: 'https://cdn.discourse.com.br'
##DISCOURSE_CDN_URL: 'https://cdn.discourse.com.br'
#DISCOURSE_S3_BUCKET: 'cloudflarebucketname'
#DISCOURSE_S3_BACKUP_BUCKET: 'cloudflarebackupbucketname/backups'
#DISCOURSE_BACKUP_LOCATION: 's3'
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_S3_INSTALL_CORS_RULE: false
この文字で無効になっている設定は、管理者パネルから設定する必要があります。コード内に例が示されています。必要に応じて、構成セクション内でこれらの設定を有効にすることもできます。それはあなた次第です。
このオプションを app.yml に設定すると、何らかの理由で JavaScript のようなすべての静的ファイルが R2 でホストされているわけではないため、サイトが破損します。
素晴らしいです。投稿 #39 のガイドに従ったところ、すべてうまくいきました。提案が1つと質問が2つあります。
提案:
読んだ限りでは、CDN ファイルのバケットを公開し、バックアップ バケットを非公開にするべきです。そのため、2 つのバケットを作成し、バックアップ バケットを非公開のままにし、ファイル バケットをカスタム ドメインで公開しました。これは、管理下の 2 つのボックスに 2 つの異なるパスを入力する必要があることを意味します。
多くの人がバックアップをトップレベル バケットのパスに入れているのを見かけましたが、私の考えは間違っていますか?それとも、これは CF R2 の特異な点なのでしょうか?
質問1:
app.yml に ‘DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true’ を追加して再構築しましたが、バックアップに移動してバックアップ ボタンをクリックすると、アップロードが含まれないというポップアップが引き続き表示されます。これは、ポップアップにロジックがないためですか、それとも何かが間違っていますか?
質問2:
現在のアップロードを R2 に移動したい場合、簡潔なコマンドは何ですか?
いくつか調べて試してみました:
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts
しかし、最初の rake コマンドは、app.yml ファイルで S3 オプションを設定した場合にのみ機能するように思えます。それは正しいですか?
それを実行した場合、R2 は引き続き機能しますか?
承知しました。テストしたところ、不十分であることがわかりました。
最初の rake コマンドは AWS 用にしか機能しないようです。
rake aborted!
Seahorse::Client::NetworkingError: Failed to open TCP connection to exotics-unlimited.s3.auto.amazonaws.com:443 (getaddrinfo: Name or service not known) (Seahorse::Client::NetworkingError)
他の S3 ベンダーで同じことを行う別のコマンドはありますか?
R2を完全に機能するソリューションとして利用できるように、フォローアップは行いましたか?
R2は正常に動作します。このオプションを使用しない、または設定しないだけです: DISCOURSE_CDN_URL
R2は正常に動作します。このオプションを使用しないか設定しないだけです:
DISCOURSE_CDN_URL
そうです、一部の静的ファイルが正しくプッシュ/ホストされていないため、完全に機能しているわけではないということです。
一部だけ機能するのではなく、すべてが機能するようにしたいだけです。
DCがAWSだと勘違いするのを止められません。実際はCF R2なのに、バックアップがアップロードされません。AWSの代わりにバックアップ用のzipファイルにのみ使用したいのです。すべての設定と、この特定のバケットにスコープされた「オブジェクトの読み取りと書き込み」権限を持つアクセストークンを正しく入力したと信じています。スレッドにあったCORSポリシーも追加しました。
[2025-09-06 13:56:44] アーカイブをGzip圧縮しています。しばらく時間がかかる場合があります...
[2025-09-06 13:56:49] アーカイブをアップロードしています...
[2025-09-06 13:56:49] 例外: Aws::S3::Errors::Forbidden
[2025-09-06 13:56:49] /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:559:in `rescue in exists?'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/object.rb:554:in `exists?'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:46:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2025-09-06 13:56:49] 古いバックアップを削除しています...
[2025-09-06 13:56:49] クリーンアップを実行しています...
[2025-09-06 13:56:49] ローカルストレージからアーカイブを削除しています...
[2025-09-06 13:56:49] '.tar' の残骸を削除しています...
[2025-09-06 13:56:49] バックアップ完了をマークしています...
[2025-09-06 13:56:49] バックアップ終了を'Firsh'に通知しています...
[2025-09-06 13:56:54] 完了しました!
これも私にはうまく機能しているようです!(CDN URLを設定することを忘れないでください。そうしないと、アップロードは機能しますが、取得は機能しません)

