Page de mises à niveau totalement vierge

Ma page de mises à jour est complètement vide.

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 :

<body class="highlighter-context">


</body>

Des suggestions ?

Peux-tu partager un lien vers ton site ?

1 « J'aime »

C’est un forum fermé. Je suis ravi de partager, mais je suppose que cela fait une différence, non ?

Je vous recommande de supprimer tous les plugins tiers et de reconstruire. Essayez également le mode sans échec, voir :

1 « J'aime »

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.

Je recommande de publier une version anonymisée de votre app.yml … cela nous aidera à identifier ce qui ne va pas.

D’accord, voici :

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

Eh bien, le plugin docker_manage n’est pas un chemin discourse/discourse, mais une fois désactivé, la page ...admin/upgrade n’existe pas.

L’activation uniquement du plugin docker_manage entraîne la même page de mises à jour vide.

1 « J'aime »

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

Désolé, vous avez raison, j’ai dû halluciner. Oubliez ça, c’est bien dans le chemin discourse/.

Mais bon, toujours un écran blanc.

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.

1 « J'aime »

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.

1 « J'aime »

Bonjour,

Je pense que vous devriez ajouter cette URL aux paramètres CSP de l’administrateur (script src de la politique de sécurité du contenu) :

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

Ensuite, vérifiez à nouveau les erreurs dans les outils de développement de Chrome.

Oui, cela fonctionne. Je me demande pourquoi la liste blanche par défaut ne fait pas cela automatiquement, cependant.

Je suis curieux aussi, comment votre CDN est-il configuré ? Il se peut que nous manquions d’une fonctionnalité magique du plugin docker-manager.

cc @pmusaraj

4 « J'aime »

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.

Cela devrait être corrigé maintenant via FIX: blank upgrade page when using S3 CDN and CSP · discourse/docker_manager@3d37fd6 · GitHub

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

6 « J'aime »

Ça a fonctionné ! Merci à @sam et @pmusaraj

4 « J'aime »