Vorschau funktioniert nicht bei Verwendung des Objektspeichers - falsche markdown-it URL

Beim Konfigurieren des Object Store funktionieren Vorschauen für Themen/Beiträge nicht.

Discourse ist mit einem Object Store konfiguriert
Die Installation erfolgt über Docker, gemäß der Dokumentation.
Discourse-Version: 2.8.0.beta11

Hier sind meine Umgebungsvariablen für S3-Konfigurationen:

  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

Wenn ich den Browser-Inspektor überprüfe, verweist die URL für markdown-it-bundle auf https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js

Es sollte nicht https: vor der DISCOURSE_S3_CDN_URL präfixieren, da es bereits vorhanden ist.

In der Konsole habe ich folgende Fehlermeldung:

Das Laden des Skripts mit der Quelle „https://discourse.liiib.re/https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js“ ist fehlgeschlagen.

Ich vermute, mein Browser leitet die URL https:https://... zu dieser weiter.

Ich habe erfolglos versucht herauszufinden, wo diese URL festgelegt wird.

Wenn mir jemand in die richtige Richtung weisen kann :slight_smile:

Vielen Dank für Ihre Hilfe

2 „Gefällt mir“

Ich glaube, sie ist hier discourse/app/helpers/application_helper.rb at 70af45055ae24dc7eb1a20678a52ed3ec69421c3 · discourse/discourse · GitHub

Das war auch meine Vermutung, habe ich vergessen zu erwähnen.

Ich bin mir nicht 100% sicher, da ich keine richtige Entwicklungsumgebung habe, um alles gründlich zu testen, aber es scheint nicht daher zu kommen.

Nach allem, was ich gesehen habe, gibt script_asset_path('markdown-it-bundle') die richtige URL zurück. Und ich glaube, es wird verwendet, um diesen Meta-HTML-Tag zu erstellen, der in Ordnung aussieht.

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

Es scheint, dass das JS die falsche URL mit dem https: Präfix setzt. Ich konnte jedoch nicht herausfinden, woher es kommt.

Es ist nur, wenn ich den Editor öffne, dass ein <script src="https:https://forum-beta-liiib-re.hot-objects.liiib.re/assets/markdown-it-bundle-9d939740bdeca330e5984bed41d12eab63736c1f720ab68e0c2a2d672c01adc2.br.js"></script> auftaucht.

2 „Gefällt mir“

Ich glaube nicht, dass es mit der S3 CDN URL als Subdomain des S3-Endpunkts funktionieren wird. Können Sie versuchen, unterschiedliche Subdomains auf derselben Ebene für beide zu verwenden?

2 „Gefällt mir“

Ok, wieder dran. Sie scheinen Recht zu haben.

Ich habe versucht, DISCOURSE_S3_CDN_URL als Bucket-Unterpfad https://hot-objects.liiib.re/forum-beta-liiib-re festzulegen, und es funktioniert jetzt.

Halten Sie es für vertretbar, S3 CDN als Subdomain des S3-Endpunkts zuzulassen?

In meinem Fall, der für andere Self-Hosted-Setups ähnlich sein könnte, verwende ich kein externes CDN (nginx über minio kann als CDN betrachtet werden), daher muss ich es nicht auf einer anderen Domain einrichten.
Ich habe die Subdomain-Bucket tatsächlich eingerichtet, weil sie meiner Meinung nach für Discourse zur Verwaltung von Uploads erforderlich ist.

Auf jeden Fall hat es das Problem gelöst und funktioniert für mich. Danke für die Hilfe!

1 „Gefällt mir“