js添付ファイルのダウンロードに失敗しました

同じ問題が発生しています。当社のソフトウェア内で実行される JS ファイルがあり、ブラウザで動作するものではありません。

Discourse のダウンロード問題を解決するために、すべてのアップロードを S3 バケットに移動し、s3_use_cdn_url_for_all_uploads を true に設定しました。これにより、JS ファイルの致命的な障害となっている短縮 URL コントローラーが事実上回避されました。

詳細(このプロセスを案内してくれた AI による説明):

  1. S3 互換ストレージの設定(例:Cloudflare R2)

Discourse はローカルディスクから .js ファイルを安全に提供できません。これらをバケットに移動します。

  • バケット: 非公開バケットを作成します(例:my-discourse-bucket)。

  • API キー: アクセスキーとシークレットキーを生成します。

2. カスタム CDN ドメインの設定

Cloudflare(または提供元)で、カスタムドメインをバケットに接続します(例:cdn.example.com)。これにより、ファイルが直接 URL を介して静的アセットとして提供され、Discourse の「セキュリティガード」を回避できます。

3. Discourse 設定の更新

管理画面 → 設定 で、S3 の詳細を設定します。重要なのは、Discourse が URL を一時的なヘッダーで「署名」しようとして破損するのを防ぐために、以下の設定を有効にすることです。

  • s3_use_cdn_url_for_all_uploads: このチェックボックスをオンにしてください(これが最も重要なステップです)。

  • s3_cdn_url: https://cdn.example.com に設定します。

  • s3_region: R2 互換性のために us-east-1 を使用します。

4. 既存のアップロードの移行(オプション)

注:当社の環境では、不明な理由によりこれは機能しませんでした。

既存の投稿内の古いリンクを修正するには、コンテナに入り、以下を実行します。

Bash

# /var/discourse 内
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake

誰かの役に立てれば幸いです。