J’ai exécuté ./launcher rebuild app et réussi à passer à la version v2.6.0beta4, mais même après cela, la page de mises à jour reste vide. La balise <body> de la page est :
Merci. J’ai eu un peu de temps pour essayer ces solutions. Les différentes options en mode sans échec n’ont pas aidé. Désactiver tous les plugins tiers et n’inclure que docker_manager n’a également rien changé. Toujours un écran blanc vide.
J’ai vu un post avec le même problème plus tôt cette année, mais l’auteur a cessé de répondre, donc aucune cause ou résolution évidente.
## Ceci est le modèle de conteneur Docker Discourse autonome tout-en-un
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ *TRÈS* PRUDENT EN MODIFIANT !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACE OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- "templates/web.socketed.template.yml"
## Quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
expose:
# - "80:80" # http
# - "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Définir db_shared_buffers à un maximum de 25 % de la mémoire totale.
## Sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
db_shared_buffers: "128MB"
## Peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
#db_work_mem: "40MB"
## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
## Sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
UNICORN_WORKERS: 2
## TODO : Le nom de domaine auquel cette instance Discourse répondra
## Requis. Discourse ne fonctionnera pas avec une adresse IP brute.
DISCOURSE_HOSTNAME: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
## nom d'hôte (option -h) que spécifié ci-dessus (par défaut "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO : Liste d'e-mails délimités par des virgules qui seront administrateurs et développeurs
## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
# L'adresse SMTP, le nom d'utilisateur et le mot de passe sont requis
# ATTENTION : le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_SMTP_PASSWORD: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_SMTP_ENABLE_START_TLS: true # (facultatif, par défaut true)
## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
LETSENCRYPT_ACCOUNT_EMAIL: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
## L'adresse CDN http ou https pour cette instance Discourse (configurée pour récupérer)
## voir https://meta.discourse.org/t/14857 pour plus de détails
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
# Configuration S3
DISCOURSE_CDN_URL: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
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: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_S3_SECRET_ACCESS_KEY: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_S3_CDN_URL: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_S3_BUCKET: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_S3_BACKUP_BUCKET: <SUPPRIMÉ POUR UNE PUBLICATION PUBLIQUE>
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
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
# Stockage objet
after_assets_precompile:
- exec:
cd: $home
cmd:
- su discourse -c 'bundle exec rake s3:upload_assets'
## Toutes les commandes personnalisées à exécuter après la construction
run:
- exec: echo "Début des commandes personnalisées"
## Si vous souhaitez définir l'adresse e-mail 'From' pour votre première inscription, décommentez et modifiez :
## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit être exécutée qu'une seule fois.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fin des commandes personnalisées"
Ok… La première étape que je recommande ici est de reconstruire ce système sans aucun plugin tiers. Gardez uniquement ceux qui sont /discourse/discourse.
Ensuite, si cela fonctionne, vous pouvez procéder par dichotomie pour identifier quel plugin cause le problème.
Avec la disponibilité de la version 2.6.0.beta5 (je suis actuellement sur la 2.6.0.beta4), je rencontre toujours une page de mise à jour vide. Je serais reconnaissant pour tout conseil supplémentaire, car j’ai essayé de désactiver les extensions sans succès.
Jetez un coup d’œil aux outils de développement de Chrome : y a-t-il des erreurs dans la console lorsque la page est blanche ? Je parie que cela a un lien avec votre CSP.
Merci, vous avez raison : cela refuse de charger un script provenant de mon CDN. Avec les URL anonymisées :
upgrade:1 Le chargement du script « https://cdn-to-discourse.b-cdn.net/assets/docker-manager-app-32418f2f7cd50e6f4a0b8d13badc4e59f6a1ad74e7bed270f3a051478fed773d.js » a été refusé car il viole la directive suivante de la Politique de sécurité du contenu (CSP) : « 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 ». Notez que « script-src-elem » n'étant pas explicitement défini, « script-src » est utilisé comme solution de repli.
La page des paramètres de sécurité indique que « l’hôte actuel et le CDN sont inclus par défaut ». Dois-je malgré tout ajouter manuellement le CDN à la liste blanche ?
Je constate qu’un problème identique a été soulevé ici, sans réponse définitive sur la raison pour laquelle la liste blanche par défaut ne fonctionnait pas.
Oui, en effet, c’était le cas. Le plugin docker_manager chargeait deux fichiers JS dans un modèle en utilisant javascript_include_tag, qui n’est pas conscient de DISCOURSE_S3_CDN_URL et utilisait donc par défaut DISCOURSE_CDN_URL, ce qui perturbait la CSP.
@paulrudy si vous mettez à jour le plugin docker_manager, vous ne devriez plus avoir besoin d’ajouter manuellement https://cdn-to-discourse.b-cdn.net/assets/ à votre CSP.