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) :
- 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 surhttps://cdn.example.com. -
s3_region: Utilisezus-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.