Aperçu ne fonctionne pas lors de l'utilisation de l'Object Store - mauvaise URL markdown-it

Lors de la configuration d’Object Store, les aperçus des sujets/posts ne fonctionnent pas.

Discourse est configuré avec un Object Store
L’installation est sur docker, en suivant la documentation.
Version de Discourse : 2.8.0.beta11

Voici mes variables d’environnement pour les configurations S3 :

  DISCOURSE_CDN_URL: https://discourse.liiib.re
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: default
  DISCOURSE_S3_ENDPOINT: https://hot-objects.liiib.re
  DISCOURSE_S3_ACCESS_KEY_ID: ACCESS_KEY_ID
  DISCOURSE_S3_SECRET_ACCESS_KEY: SUPER_SECRET_KEY
  DISCOURSE_S3_CDN_URL: https://forum-beta-liiib-re.hot-objects.liiib.re
  DISCOURSE_S3_BUCKET: forum-beta-liiib-re
  DISCOURSE_S3_INSTALL_CORS_RULE: false

Lorsque je vérifie l’inspecteur du navigateur, l’URL pour markdown-it-bundle pointe vers https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js

Il ne devrait pas préfixer le DISCOURSE_S3_CDN_URL avec https: car il est déjà présent.

Dans la console, j’ai l’erreur suivante :

Le chargement a échoué pour la balise <script> avec la source « https://discourse.liiib.re/https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js ».

Je suppose que mon navigateur redirige l’URL https:https://... vers celle-ci.

J’ai essayé de trouver, sans succès, où cette URL est définie.

Si quelqu’un peut m’orienter :slight_smile:

Merci pour votre aide

2 « J'aime »

Je pense que c’est là discourse/app/helpers/application_helper.rb at 70af45055ae24dc7eb1a20678a52ed3ec69421c3 · discourse/discourse · GitHub

C’était aussi ma supposition, j’ai oublié de le mentionner.

Eh bien, je ne suis pas sûr à 100 % car je n’ai pas vraiment d’environnement de développement adéquat pour tout tester en profondeur, mais cela ne semble pas venir de là.

D’après ce que j’ai vu, script_asset_path('markdown-it-bundle') renvoie la bonne URL. Et je pense qu’elle est utilisée pour construire cette balise meta HTML qui semble correcte.

<meta id="data-discourse-setup" data-cdn="https://discourse.liiib.re" data-base-url="https://discourse.liiib.re" data-base-uri="" data-environment="production" data-letter-avatar-version="5_c12935382690395be92856801563c2b7" data-markdown-it-url="https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js" data-service-worker-url="service-worker.js" data-default-locale="en" data-asset-version="be5bda1657984e9e27d7d3c27ab24add" data-disable-custom-css="false" data-highlight-js-path="/highlight-js/discourse.liiib.re/084d101d62e4ceb91462fa1464b341511141973f.js" data-svg-sprite-path="/svg-sprite/discourse.liiib.re/svg-1-c105fc3106297bc864bbadbd418cf380c71e3a4b.js" data-enable-js-error-reporting="true" data-color-scheme-is-dark="false" data-user-color-scheme-id="4" data-user-dark-scheme-id="1" data-s3-cdn="https://forum-beta-liiib-re.hot-objects.liiib.re" data-s3-base-url="//forum-beta-liiib-re.hot-objects.liiib.re">

Il semble que ce soit le JS qui ajoute le mauvais préfixe https: à l’URL. Je n’ai pas pu trouver d’où cela vient cependant.

C’est seulement lorsque j’ouvre l’éditeur qu’une balise <script src="https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js"></script> apparaît.

2 « J'aime »

Je ne pense pas que cela fonctionnera si l’URL du CDN S3 est un sous-domaine du point de terminaison S3. Pouvez-vous essayer d’utiliser des sous-domaines distincts de même niveau pour les deux ?

2 « J'aime »

Ok, je m’y remets. Il semble que vous ayez raison.

J’ai essayé de définir DISCOURSE_S3_CDN_URL comme sous-chemin de bucket https://hot-objects.liiib.re/forum-beta-liiib-re et cela fonctionne maintenant.

Pensez-vous qu’il serait raisonnable d’autoriser le CDN S3 comme sous-domaine du point de terminaison S3 ?

Dans mon cas, ce qui pourrait être similaire à d’autres configurations auto-hébergées, je n’utilise pas de CDN externe (nginx au-dessus de minio peut être considéré comme le CDN) donc je n’ai pas besoin de le définir sur un autre domaine.
J’ai en fait configuré le sous-domaine du bucket car, je pense, il est requis pour que discourse gère les téléchargements.

Quoi qu’il en soit, cela a résolu le problème et cela fonctionne pour moi. Merci pour votre aide !

1 « J'aime »