Völlig leere Upgrade-Seite

Meine Upgrade-Seite ist komplett leer.

Ich habe ./launcher rebuild app ausgeführt und es geschafft, auf v2.6.0beta4 zu aktualisieren, aber selbst danach ist die Upgrade-Seite weiterhin leer. Das <body>-Tag für die Seite lautet:

<body class="highlighter-context">


</body>

Hast du irgendeinen Vorschlag?

Können Sie einen Link zu Ihrer Website teilen?

1 „Gefällt mir“

Es ist ein geschlossenes Forum. Ich teile es gerne, aber ich denke, das macht einen Unterschied, oder?

Ich empfehle, alle Plugins von Drittanbietern zu entfernen und das System neu aufzubauen. Versuchen Sie außerdem den abgesicherten Modus. Siehe:

1 „Gefällt mir“

Danke. Ich hatte etwas Zeit, dies auszuprobieren. Verschiedene Optionen im abgesicherten Modus haben nicht geholfen. Das Deaktivieren aller Plugins von Drittanbietern und das Hinzufügen von nur docker_manager hat ebenfalls nichts geändert. Nach wie vor ist der Bildschirm weiß und leer.

Ich habe einen Beitrag mit demselben Problem von Anfang dieses Jahres gesehen, aber der ursprüngliche Poster hat nicht mehr geantwortet, sodass es keine offensichtliche Ursache oder Lösung gibt.

Ich empfehle, eine bereinigte Version deiner app.yml zu veröffentlichen … das wird uns helfen herauszufinden, was falsch läuft.

Okay, hier ist es:

## Dies ist die All-in-One, eigenständige Discourse Docker-Container-Vorlage
##
## Nach Änderungen an dieser Datei MUSST du neu erstellen
## /var/discourse/launcher rebuild app
##
## SEHR VORSICHTIG BEI DER BEARBEITUNG!
## YAML-DATEIEN SIND SUPER SUPER EMPFINDLICH GEGENÜBER FEHLERN IN LEERZEICHEN ODER AUSRICHTUNG!
## Besuche http://www.yamllint.com/, um diese Datei bei Bedarf zu validieren

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Kommentiere diese beiden Zeilen aus, wenn du Lets Encrypt (https) hinzufügen möchtest
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## Welche TCP/IP-Ports soll dieser Container freigeben?
## Wenn du möchtest, dass Discourse einen Port mit einem anderen Webserver wie Apache oder nginx teilt,
## siehe https://meta.discourse.org/t/17247 für Details
expose:
#  - "80:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Setze db_shared_buffers auf maximal 25 % des gesamten Arbeitsspeichers.
  ## wird automatisch vom Bootstrap basierend auf dem erkannten RAM gesetzt, oder du kannst es überschreiben
  db_shared_buffers: "128MB"

  ## Kann die Sortierleistung verbessern, erhöht aber den Speicherverbrauch pro Verbindung
  #db_work_mem: "40MB"

  ## Welche Git-Revision soll dieser Container verwenden? (Standard: tests-passed)
  #version: tests-passed

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Wie viele gleichzeitige Webanfragen werden unterstützt? Hängt vom Arbeitsspeicher und den CPU-Kernen ab.
  ## wird automatisch vom Bootstrap basierend auf den erkannten CPUs gesetzt, oder du kannst es überschreiben
  UNICORN_WORKERS: 2

  ## TODO: Der Domainname, auf den diese Discourse-Instanz reagieren wird
  ## Erforderlich. Discourse funktioniert nicht mit einer bloßen IP-Nummer.
  DISCOURSE_HOSTNAME: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>

  ## Kommentiere aus, wenn du möchtest, dass der Container mit demselben
  ## Hostnamen (-h-Option) wie oben angegeben gestartet wird (Standard "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Liste der durch Komma getrennten E-Mails, die bei der ersten Registrierung als Administrator und Entwickler hinzugefügt werden
  ## Beispiel 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>

  ## TODO: Der SMTP-Mailserver, der zur Validierung neuer Konten und zum Senden von Benachrichtigungen verwendet wird
  ## SMTP-Adresse, Benutzername und Passwort sind erforderlich
  ## WARNUNG: Das Zeichen '#' im SMTP-Passwort kann Probleme verursachen!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_SMTP_PASSWORD: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard true)

  ## Wenn du die Lets Encrypt-Vorlage hinzugefügt hast, kommentiere unten aus, um ein kostenloses SSL-Zertifikat zu erhalten
  LETSENCRYPT_ACCOUNT_EMAIL: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>

  ## Die http- oder https-CDN-Adresse für diese Discourse-Instanz (konfiguriert zum Abrufen)
  ## siehe https://meta.discourse.org/t/14857 für Details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  # S3-Einrichtung
  DISCOURSE_CDN_URL: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: "us-west-002"
  DISCOURSE_S3_ENDPOINT: https://s3.us-west-002.backblazeb2.com
  DISCOURSE_S3_ACCESS_KEY_ID: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_S3_SECRET_ACCESS_KEY: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_S3_CDN_URL: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_S3_BUCKET: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_S3_BACKUP_BUCKET: <FÜR DIE ÖFFENTLICHE VERÖFFENTLICHUNG ENTFERNT>
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

## Der Docker-Container ist zustandslos; alle Daten werden in /shared gespeichert
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins gehen hier
## siehe https://meta.discourse.org/t/19157 für Details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-user-notes
          - git clone https://github.com/discourse/discourse-assign
          - git clone https://github.com/discourse/discourse-policy
          - git clone https://github.com/discourse/discourse-tooltips
          - git clone https://github.com/discourse/discourse-saved-searches
          - git clone https://github.com/discourse/discourse-knowledge-explorer
          - git clone https://github.com/discourse/discourse-voting
          - git clone https://github.com/discourse/discourse-translator
          - git clone https://github.com/angusmcleod/discourse-elections
          - git clone https://github.com/discourse/discourse-styleguide
          - git clone https://github.com/Ahmedgagan/discourse-custom-trust-level
          - git clone https://github.com/paviliondev/discourse-quick-messages
          - git clone https://github.com/paviliondev/discourse-locations
          - git clone https://github.com/discourse/discourse-calendar

  # Objektspeicher
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - su discourse -c 'bundle exec rake s3:upload_assets'

## Beliebige benutzerdefinierte Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
  - exec: echo "Beginn der benutzerdefinierten Befehle"
  ## Wenn du die 'Von'-E-Mail-Adresse für deine erste Registrierung festlegen möchtest, kommentiere aus und ändere:
  ## Nach Erhalt der ersten Anmeldemail den Kommentar zurücksetzen. Dies muss nur einmal ausgeführt werden.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Ende der benutzerdefinierten Befehle"

Okay… Schritt eins, den ich hier empfehle, ist der Neuaufbau dieser Sache ohne jegliche Plugins von Drittanbietern. Behalte nur diejenigen bei, die unter /discourse/discourse liegen.

Wenn das funktioniert, kannst du dann mittels Binärsuche herausfinden, welches Plugin die Probleme verursacht.

Nun, das docker_manage-Plugin ist kein Pfad von discourse/discourse, aber wenn es deaktiviert ist, existiert die Seite ...admin/upgrade nicht.

Das Aktivieren nur des docker_manage-Plugins führt ebenfalls zu derselben leeren Upgrade-Seite.

1 „Gefällt mir“

GitHub - discourse/docker_manager: Plugin for use with discourse docker image · GitHub ?

Entschuldigung, du hast recht, ich muss mir das wohl eingebildet haben. Streich das, es befindet sich im Pfad discourse/.

Aber egal, immer noch ein weißer leerer Bildschirm.

Da 2.6.0.beta5 verfügbar ist (ich bin noch bei 2.6.0.beta4), bekomme ich weiterhin eine leere Seite für Updates angezeigt. Ich wäre für weitere Ratschläge dankbar, da ich bereits versucht habe, Plugins zu deaktivieren, ohne Erfolg.

Schau dir die Chrome-Entwicklertools an: Gibt es Fehler in der Konsole, wenn die Seite weiß ist? Meine Vermutung ist, dass dies mit deiner CSP zu tun hat.

1 „Gefällt mir“

Vielen Dank, du hast recht – es weigert sich, ein Skript von meinem CDN zu laden. Mit bereinigten URLs:

upgrade:1 Das Laden des Skripts 'https://cdn-to-discourse.b-cdn.net/assets/docker-manager-app-32418f2f7cd50e6f4a0b8d13badc4e59f6a1ad74e7bed270f3a051478fed773d.js' wurde verweigert, da es gegen die folgende Content-Security-Policy-Richtlinie verstößt: "script-src https://forum.example.com/logs/ https://forum.example.com/sidekiq/ https://forum.example.com/mini-profiler-resources/ https://cdn-to-s3.b-cdn.net/assets/ https://cdn-to-s3.b-cdn.net/brotli_asset/ https://forum.example.com/extra-locales/ https://cdn-to-discourse.b-cdn.net/highlight-js/ https://cdn-to-discourse.b-cdn.net/javascripts/ https://cdn-to-discourse.b-cdn.net/plugins/ https://cdn-to-discourse.b-cdn.net/theme-javascripts/ https://cdn-to-discourse.b-cdn.net/svg-sprite/ https://matomo.example.com". Beachte, dass 'script-src-elem' nicht explizit festgelegt wurde, daher wird 'script-src' als Fallback verwendet.

Auf der Seite „Sicherheitseinstellungen

Ich sehe, dass ein identisches Problem hier angesprochen wurde, ohne dass eine endgültige Antwort darauf gegeben wurde, warum die Standard-Whitelisting-Funktion nicht funktionierte.

1 „Gefällt mir“

Hallo,

ich denke, Sie sollten diese URL in die CSP-Einstellung des Admin-Bereichs (Content Security Policy script-src) aufnehmen:

https://cdn-to-discourse.b-cdn.net/assets/

Überprüfen Sie danach erneut die Fehler in den Chrome DevTools.

Ja, das funktioniert. Mich wundert nur, warum die Standard-Whitelisting-Funktion das nicht automatisch erledigt.

Ich bin auch neugierig, wie euer CDN konfiguriert ist. Möglicherweise fehlt uns etwas Magie vom docker-manager-Plugin.

cc @pmusaraj

4 „Gefällt mir“

Ja, das war tatsächlich der Fall. Das docker_manager-Plugin lud zwei JS-Dateien in einer Vorlage über javascript_include_tag. Diese Funktion kennt DISCOURSE_S3_CDN_URL nicht und greift daher standardmäßig auf DISCOURSE_CDN_URL zurück, was zu Problemen mit der CSP führte.

Das sollte jetzt über folgenden Commit behoben sein: FIX: blank upgrade page when using S3 CDN and CSP · discourse/docker_manager@3d37fd6 · GitHub

@paulrudy Wenn du das docker_manager-Plugin aktualisierst, musst du https://cdn-to-discourse.b-cdn.net/assets/ nicht mehr manuell zu deiner CSP hinzufügen.

6 „Gefällt mir“

Das hat geklappt! Danke an @sam und @pmusaraj

4 „Gefällt mir“