Página de actualizaciones completamente en blanco

Mi página de actualizaciones está completamente en blanco.

Ejecuté ./launcher rebuild app y logré actualizar a v2.6.0beta4, pero incluso después, la página de actualizaciones sigue en blanco. La etiqueta <body> de la página es:

<body class="highlighter-context">


</body>

¿Alguna sugerencia?

¿Puedes compartir un enlace a tu sitio?

1 me gusta

Es un foro cerrado. Me encantaría compartirlo, pero supongo que eso marca la diferencia, ¿verdad?

Recomiendo que elimine todos los complementos de terceros y vuelva a crearlos. También pruebe el modo seguro, consulte:

1 me gusta

Gracias. Tuve tiempo para probar esto. Las varias opciones en modo seguro no ayudaron. Desactivar todos los plugins de terceros e incluir solo docker_manager tampoco cambió nada. Todavía hay una pantalla blanca en blanco.

Vi una publicación con el mismo problema de principios de este año, pero el OP dejó de responder, por lo que no hay causa o resolución obvia.

Recomiendo publicar una versión anonimizada de tu app.yml… eso nos ayudará a averiguar qué está mal.

Aquí lo tienes:

## esta es la plantilla de contenedor Docker independiente todo-en-uno para Discourse
##
## Después de realizar cambios en este archivo, DEBES reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TEN *MUCHO* CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES EN LOS ESPACIOS EN BLANCO O LA ALINEACIÓN!
## visita http://www.yamllint.com/ para validar este archivo según sea necesario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para obtener detalles
expose:
#  - "80:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Establece db_shared_buffers a un máximo del 25% de la memoria total.
  ## se establecerá automáticamente durante el arranque según la RAM detectada, o puedes sobrescribirlo
  db_shared_buffers: "128MB"

  ## puede mejorar el rendimiento de ordenación, pero añade uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (por defecto: tests-passed)
  #version: tests-passed

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

  ## ¿Cuántas solicitudes web simultáneas se admiten? Depende de la memoria y los núcleos de CPU.
  ## se establecerá automáticamente durante el arranque según los CPUs detectados, o puedes sobrescribirlo
  UNICORN_WORKERS: 2

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  ## Obligatorio. Discourse no funcionará con una dirección IP sin nombre.
  DISCOURSE_HOSTNAME: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>

  ## Descomenta si deseas que el contenedor se inicie con el mismo
  ## nombre de host (opción -h) que el especificado anteriormente (por defecto "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que serán administradores y desarrolladores
  ## en el registro inicial, ejemplo 'usuario1@ejemplo.com,usuario2@ejemplo.com'
  DISCOURSE_DEVELOPER_EMAILS: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  ## Se requieren la dirección SMTP, el nombre de usuario y la contraseña
  ## ¡ADVERTENCIA: el carácter '#' en la contraseña SMTP puede causar problemas!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_SMTP_PASSWORD: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, por defecto true)

  ## Si agregaste la plantilla de Lets Encrypt, descomenta a continuación para obtener un certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>

  ## La dirección CDN http o https para esta instancia de Discourse (configurada para extraer)
  ## consulta https://meta.discourse.org/t/14857 para obtener detalles
  #DISCOURSE_CDN_URL: https://discourse-cdn.ejemplo.com

  # Configuración de S3
  DISCOURSE_CDN_URL: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  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: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_S3_SECRET_ACCESS_KEY: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_S3_CDN_URL: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_S3_BUCKET: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_S3_BACKUP_BUCKET: <ELIMINADO PARA PUBLICACIÓN PÚBLICA>
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

## El contenedor Docker es sin estado; todos los datos se almacenan en /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulta https://meta.discourse.org/t/19157 para obtener detalles
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

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

## Cualquier comando personalizado para ejecutar después de la construcción
run:
  - exec: echo "Inicio de comandos personalizados"
  ## Si deseas establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y cambia:
  ## Después de recibir el primer correo de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@sinconfigurar.discourse.org'"
  - exec: echo "Fin de comandos personalizados"

Bueno… lo primero que recomiendo aquí es reconstruir esto sin ningún complemento de terceros. Mantén solo los que son /discourse/discourse.

Si eso funciona, puedes usar el método de búsqueda binaria para identificar qué complemento está causando el problema.

Bueno, el plugin docker_manage no es una ruta de discourse/discourse, pero al deshabilitarlo, la página ...admin/upgrade no existe.

Habilitar solo el plugin docker_manage da como resultado la misma página de actualizaciones en blanco.

1 me gusta

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

Lo siento, tienes razón, debo haber estado alucinando. Olvídalo, está en la ruta discourse/.

Pero de todos modos, sigue apareciendo una pantalla blanca en blanco.

Con la disponibilidad de la versión 2.6.0.beta5 (yo estoy en la 2.6.0.beta4), sigo teniendo una página de actualizaciones en blanco. Agradecería cualquier consejo adicional, ya que he intentado desactivar los complementos sin éxito.

Echa un vistazo a las herramientas de desarrollo de Chrome: ¿hay algún error en la consola cuando la página aparece en blanco? Mi suposición es que esto tiene que ver con tu CSP.

1 me gusta

Gracias, tienes razón: se está negando a cargar un script que proviene de mi CDN. Con las URL sanitizadas:

upgrade:1 Se ha denegado la carga del script 'https://cdn-to-discourse.b-cdn.net/assets/docker-manager-app-32418f2f7cd50e6f4a0b8d13badc4e59f6a1ad74e7bed270f3a051478fed773d.js' porque viola la siguiente directiva de la Política de Seguridad de Contenidos: "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". Ten en cuenta que 'script-src-elem' no se estableció explícitamente, por lo que se utiliza 'script-src' como alternativa.

La página de configuración de Seguridad dice: “El host actual y el CDN se incluyen de forma predeterminada”. ¿Debería añadir manualmente el CDN a la lista blanca de todos modos?

Veo que se planteó un problema idéntico aquí, sin una respuesta definitiva sobre por qué no funcionaba la lista de permitidos predeterminada.

1 me gusta

Hola,

Creo que deberías agregar esta URL a la configuración de CSP del administrador (origen de scripts de la política de seguridad de contenido):

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

Y luego vuelve a verificar los errores en las herramientas de desarrollo de Chrome.

Sí, eso funciona. Me pregunto por qué la lista de permitidos predeterminada no hace esto automáticamente, aunque.

También tengo curiosidad, ¿cómo está configurado tu CDN? Es posible que nos estemos perdiendo algo mágico del plugin docker-manager.

cc @pmusaraj

4 Me gusta

Sí, efectivamente, así era. El plugin docker_manager estaba cargando dos archivos JS en una plantilla usando javascript_include_tag, el cual no reconoce DISCOURSE_S3_CDN_URL, por lo que estaba usando por defecto DISCOURSE_CDN_URL y causando problemas con la CSP.

Ya debería estar solucionado a través de FIX: blank upgrade page when using S3 CDN and CSP · discourse/docker_manager@3d37fd6 · GitHub

@paulrudy, si actualizas el plugin docker_manager, ya no deberás agregar manualmente https://cdn-to-discourse.b-cdn.net/assets/ a tu CSP.

6 Me gusta

¡Eso funcionó! Gracias @sam y @pmusaraj

4 Me gusta