S3アップロードのトラブルシューティング:再構築後にサイトがハングし、R2とGCSの両方でJSアセットがnet::ERR_...でロードに失敗する

こんにちは、Discourseチームおよびコミュニティの皆様、

セルフホスト型のDiscourseインスタンスを外部S3互換オブジェクトストレージを使用するように設定しようとしていますが、非常にしつこく奇妙な問題に遭遇しました。どのようなご支援でも大変感謝いたします。

私の環境:

  • Discourseバージョン: 標準Dockerインストール、最新のtests-passed

  • ホスト: [YOUR VPS PROVIDER and OS] (请在这里填入您的服务商和系统)

  • リバースプロキシ: Caddy

目標: すべてのアップロード(ユーザーアップロードおよびサイトアセット)をローカルストレージから外部プロバイダーに移行すること。

問題の概要: S3(Cloudflare R2またはGoogle Cloud Storageのいずれか)用にapp.ymlを設定し、./launcher rebuild appを実行した後、サイトが初期ロード画面(青いスピナー)でハングします。ブラウザの開発者ツールを見ると、ほとんどのコアJavaScriptアセットが、一般的なネットワークエラー(net::ERR_...)で外部CDN URLからロードに失敗しています。

実施したデバッグ手順:

  1. Cloudflare R2での試行:

    • Cloudflare R2バケットを設定し、APIトークン(Object Read & Write)を作成し、Cloudflare DNS経由でカスタムドメイン(s3.ryzelan.sbs)を接続しました。
    • R2の認証情報、エンドポイント/CDN URLとしてのカスタムドメイン、およびDISCOURSE_FORCE_HTTPS: trueDISCOURSE_S3_FORCE_PATH_STYLE: trueを設定してapp.ymlを設定しました。
  2. 重要なテスト - Google Cloud Storageへの切り替え:

    • Cloudflare固有の問題を排除するために、すべての変更を元に戻し、S3互換性キーを使用してGoogle Cloud Storageで新規セットアップを行いました。
    • GCSの設定で再構築した後、R2を使用した場合と全く同じJavaScriptロード失敗パターンに遭遇しました。

現在の状況:

  • ./launcher rebuild appプロセスは、ターミナルにエラーが表示されることなく完了します。
  • appコンテナは、再構築後に正しく実行されています(docker psで確認済み)。
  • ./launcher logs appコマンドはエラーを示さず、すべての内部サービス(unicorn、redis、postgres)は正常に実行されているようです。
  • 問題は、ブラウザが設定された外部CDN URLからJSアセットを取得しようとしたときのネットワークレベルの障害のようです。これは、プロバイダー(R2またはGCS)に関係なく発生します。

R2で使用した最終的なapp.yml設定ブロック(GCSのものも同様でした):

— Cloudflare R2 S3 Configuration START (Final Version) —

DISCOURSE_FORCE_HTTPS: true
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: “us-east-1”
DISCOURSE_S3_ENDPOINT: “https://s3.ryzelan.sbs
DISCOURSE_S3_CDN_URL: “https://s3.ryzelan.sbs
DISCOURSE_S3_ACCESS_KEY_ID: “REDACTED”
DISCOURSE_S3_SECRET_ACCESS_KEY: “REDACTED”
DISCOURSE_S3_BUCKET: “ryzelan-discourse”
DISCOURSE_S3_FORCE_PATH_STYLE: true

— Cloudflare R2 S3 Configuration END —

私の質問: 新しいDiscourseの再構築が、2つの異なる主要なクラウドプロバイダーから、ネットワークエラーで一貫して自身の資産をロードできない原因は何でしょうか?特定のVPSネットワーク環境、Dockerネットワーク、またはCaddyに起因する既知の問題はありますか?

お時間と洞察をいただければ幸いです。

S3にそれらのアセットをアップロードするビットを含めましたか?

これを実行しないと、アセットはS3に保存されず、サイトは読み込まれません。

@Ryze_Chen 問題は解決できましたか?

このトピックは、最後の返信から7日後に自動的に閉じられました。新しい返信は許可されていません。