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.

2 curtidas

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

2 curtidas

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?

2 curtidas

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!

1 curtida