Pré-visualização não funciona ao usar object store - URL incorreta do markdown-it

Ao configurar o Object Store, a visualização de tópicos/posts não está funcionando.

O Discourse está configurado com um Object Store
A instalação é feita em docker, seguindo a documentação.
Versão do Discourse: 2.8.0.beta11

Aqui estão minhas variáveis de ambiente para as configurações do 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

Quando verifico o inspetor do navegador, o URL para markdown-it-bundle aponta para https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js

Não deveria prefixar o DISCOURSE_S3_CDN_URL com https: pois já está lá.

No console, tenho o seguinte erro:

Falha ao carregar o <script> com origem “https://discourse.liiib.re/https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js”.

Eu acho que meu navegador está redirecionando o URL https:https://... para este.

Eu tenho tentado encontrar, sem sucesso, onde este URL é definido.

Se alguém puder me indicar a direção certa :slight_smile:

Obrigado pela sua ajuda.

Eu acho que está lá discourse/app/helpers/application_helper.rb at 70af45055ae24dc7eb1a20678a52ed3ec69421c3 · discourse/discourse · GitHub

Essa também foi minha suposição, esqueci de mencionar isso.

Bem, não tenho 100% de certeza, pois não tenho um ambiente de desenvolvimento adequado para testar tudo completamente, mas não parece vir de lá.

Pelo que vi, script_asset_path('markdown-it-bundle') está retornando a URL correta. E acho que é usado para construir essa meta tag HTML que parece estar correta.

<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 ser o JS que está colocando a URL errada com o prefixo https:. Não consegui descobrir de onde está vindo.

Só acontece quando abro o editor que aparece um <script src="https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js"></script>.

Não acho que vá funcionar com o S3 CDN URL sendo um subdomínio do S3 endpoint. Você pode tentar usar subdomínios distintos no mesmo nível para ambos?

Ok, de volta ao trabalho. Parece que você está certo.

Então, tentei definir DISCOURSE_S3_CDN_URL como um subcaminho de bucket https://hot-objects.liiib.re/forum-beta-liiib-re e agora está funcionando.

Você acha que seria razoável permitir o CDN S3 como um subdomínio do endpoint S3?

No meu caso, que pode ser semelhante a outras configurações auto-hospedadas, não estou usando um CDN externo (nginx no topo do minio pode ser considerado o CDN), então não preciso configurá-lo em outro domínio.
Na verdade, configurei o subdomínio do bucket porque, acho, é necessário para o discourse gerenciar uploads.

De qualquer forma, isso resolveu o problema e está funcionando para mim. Obrigado pela ajuda!