Vista previa no funciona al usar object store - URL incorrecta de markdown-it

Al configurar Object Store, las vistas previas de temas/publicaciones no funcionan.

Discourse está configurado con un Object Store
La instalación está en docker, siguiendo la documentación.
Versión de Discourse: 2.8.0.beta11

Aquí están mis variables de entorno para las configuraciones de 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

Cuando reviso el inspector del navegador, la URL de markdown-it-bundle apunta a https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js

No debería anteponer https: a la DISCOURSE_S3_CDN_URL ya que ya está ahí.

En la consola tengo el siguiente error:

Loading failed for the <script> with source “https://discourse.liiib.re/https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js”.

Supongo que mi navegador está redirigiendo la URL https:https://... a esta.

He estado intentando encontrar, sin éxito, dónde se establece esta URL.

Si alguien puede indicarme la dirección correcta :slight_smile:

Gracias por tu ayuda.

2 Me gusta

Creo que está ahí discourse/app/helpers/application_helper.rb at 70af45055ae24dc7eb1a20678a52ed3ec69421c3 · discourse/discourse · GitHub

Esa también fue mi suposición, olvidé mencionarlo.

Bueno, no estoy 100% seguro ya que realmente no tengo un entorno de desarrollo adecuado para probar todo a fondo, pero no parece venir de ahí.

Por lo que vi, script_asset_path('markdown-it-bundle') está devolviendo la URL correcta. Y creo que se usa para construir esta metaetiqueta HTML que parece estar bien.

<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">

Parece que es el js el que está poniendo la URL incorrecta con el prefijo https:. Sin embargo, no pude encontrar de dónde viene.

Solo cuando abro el editor aparece un <script src="https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js"></script>.

2 Me gusta

No creo que funcione con S3 CDN URL, que es un subdominio del punto final de S3. ¿Puedes intentar usar subdominios distintos del mismo nivel para ambos?

2 Me gusta

Ok, de vuelta en ello. Parece que tienes razón.

Intenté configurar DISCOURSE_S3_CDN_URL como una subruta de bucket https://hot-objects.liiib.re/forum-beta-liiib-re y ahora está funcionando.

¿Crees que sería razonable permitir que el CDN de S3 sea un subdominio del endpoint de S3?

En mi caso, que podría ser similar a otras configuraciones autoalojadas, no estoy utilizando un CDN externo (nginx sobre minio puede considerarse como el CDN), por lo que no necesito configurarlo en otro dominio.
De hecho, configuré el subdominio del bucket porque, creo, es necesario para que discourse gestione las cargas.

De todos modos, lo solucionó y me está funcionando. ¡Gracias por la ayuda!

1 me gusta