Impossible de télécharger la pièce jointe js

Même problème ici. Nous avons des fichiers js qui s’exécutent dans notre propre logiciel, rien qui ne ferait quoi que ce soit dans un navigateur.

Nous avons réussi à résoudre le problème de téléchargement de Discourse en déplaçant tous les téléchargements vers un bucket S3 et en définissant s3_use_cdn_url_for_all_uploads à true. Cela contourne essentiellement le contrôleur de courte URL qui semble être l’obstacle majeur pour les fichiers js.

En détail (de mon IA qui m’a guidé à travers cela) :

  1. Configurer un stockage compatible S3 (par exemple, Cloudflare R2)

Discourse ne peut pas servir en toute sécurité des fichiers .js depuis le disque local. Déplacez-les vers un bucket.

  • Bucket : Créez un bucket privé (par exemple, my-discourse-bucket).

  • Clés API : Générez une clé d’accès et une clé secrète.

2. Configurer un domaine CDN personnalisé

Dans Cloudflare (ou votre fournisseur), connectez un domaine personnalisé à votre bucket (par exemple, cdn.example.com). Cela garantit que les fichiers sont servis en tant qu’actifs statiques via une URL directe, contournant le « gardien de sécurité » de Discourse.

3. Mettre à jour les paramètres de Discourse

Dans Admin → Paramètres, configurez vos détails S3. Crucialement, activez les éléments suivants pour garantir que Discourse ne tente pas de « signer » les URLs avec des en-têtes temporaires qui peuvent causer des dysfonctionnements :

  • s3_use_cdn_url_for_all_uploads : Cochez cette case (C’est l’étape la plus importante).

  • s3_cdn_url : Définissez sur https://cdn.example.com.

  • s3_region : Utilisez us-east-1 (pour la compatibilité R2).

4. Migrer les téléchargements existants (facultatif)

Note : Cela n’a PAS fonctionné pour nous pour des raisons inconnues.

Pour corriger les anciens liens dans les messages existants, entrez dans votre conteneur et exécutez :

Bash

# À l'intérieur de /var/discourse
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake

J’espère que cela aidera quelqu’un.