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:
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.
## 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.
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.
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.
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.
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.
@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.