Pagina aggiornamenti completamente vuota

La mia pagina degli aggiornamenti è completamente vuota.

Ho eseguito ./launcher rebuild app e sono riuscito ad aggiornare alla versione v2.6.0beta4, ma anche dopo, la pagina degli aggiornamenti rimane vuota. Il tag <body> per la pagina è:

<body class="highlighter-context">


</body>

Hai qualche suggerimento?

Puoi condividere un link al tuo sito?

1 Mi Piace

È un forum chiuso. Sono felice di condividere, ma immagino che faccia la differenza, vero?

Ti consiglio di rimuovere tutti i plugin di terze parti e ricostruire. Prova anche la modalità sicura, vedi:

1 Mi Piace

Grazie. Ho avuto modo di provare queste soluzioni. Le varie opzioni in modalità sicura non hanno aiutato. Disabilitare tutti i plugin di terze parti e includere solo docker_manager non ha cambiato nulla. Rimane ancora una schermata bianca vuota.

Ho visto un post con lo stesso problema di inizio anno, ma l’autore originale ha smesso di rispondere, quindi non ci sono cause o soluzioni evidenti.

Consiglio di pubblicare una versione anonimizzata del tuo app.yml… ci aiuterà a capire cosa non va.

Ok, ecco a te:

## questo è il modello del contenitore Docker Discourse standalone all-in-one
##
## Dopo aver apportato modifiche a questo file, DEVI eseguire il rebuild
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE DURANTE LA MODIFICA!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI NELLO SPAZIAMENTO O NELL'ALLINEAMENTO!
## visita http://www.yamllint.com/ per validare questo file se necessario

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Scommenta queste due righe se desideri aggiungere Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/web.socketed.template.yml"

## quali porte TCP/IP dovrebbe esporre questo contenitore?
## Se vuoi che Discourse condivida una porta con un altro server web come Apache o nginx,
## consulta https://meta.discourse.org/t/17247 per i dettagli
expose:
#  - "80:80"   # http
#  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Imposta db_shared_buffers a un massimo del 25% della memoria totale.
  ## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascriverlo
  db_shared_buffers: "128MB"

  ## può migliorare le prestazioni di ordinamento, ma aumenta l'utilizzo della memoria per connessione
  #db_work_mem: "40MB"

  ## Quale revisione Git dovrebbe utilizzare questo contenitore? (default: tests-passed)
  #version: tests-passed

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

  ## Quante richieste web concorrenti sono supportate? Dipende dalla memoria e dai core della CPU.
  ## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascriverlo
  UNICORN_WORKERS: 2

  ## TODO: Il nome di dominio a cui risponderà questa istanza di Discourse
  ## Obbligatorio. Discourse non funzionerà con un semplice numero IP.
  DISCOURSE_HOSTNAME: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>

  ## Scommenta se desideri che il contenitore venga avviato con lo stesso
  ## hostname (opzione -h) specificato sopra (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Elenco di email separate da virgola che verranno rese amministratori e sviluppatori
  ## all'iscrizione iniziale, ad esempio 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>

  ## TODO: Il server SMTP utilizzato per validare nuovi account e inviare notifiche
  ## INDIRIZZO SMTP, nome utente e password sono obbligatori
  ## ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_SMTP_PASSWORD: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, default true)

  ## Se hai aggiunto il modello Lets Encrypt, scommenta qui sotto per ottenere un certificato SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>

  ## L'indirizzo CDN http o https per questa istanza di Discourse (configurato per il pull)
  ## consulta https://meta.discourse.org/t/14857 per i dettagli
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  # Configurazione S3
  DISCOURSE_CDN_URL: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  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: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_S3_SECRET_ACCESS_KEY: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_S3_CDN_URL: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_S3_BUCKET: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_S3_BACKUP_BUCKET: <RIMOSSO PER PUBBLICAZIONE PUBBLICA>
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

## Il contenitore Docker è senza stato; tutti i dati sono archiviati in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## I plugin vanno qui
## consulta https://meta.discourse.org/t/19157 per i dettagli
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

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

## Qualsiasi comando personalizzato da eseguire dopo la compilazione
run:
  - exec: echo "Inizio dei comandi personalizzati"
  ## Se desideri impostare l'indirizzo email 'From' per la tua prima registrazione, scommenta e modifica:
  ## Dopo aver ricevuto la prima email di iscrizione, riscommenta la riga. Deve essere eseguita solo una volta.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fine dei comandi personalizzati"

Ok… il primo passo che ti consiglio è ricreare tutto senza plugin di terze parti. Mantieni solo quelli che sono /discourse/discourse

Se funziona, puoi procedere per esclusione per scoprire quale plugin sta causando il problema.

Bene, il plugin docker_manage non è un percorso discourse/discourse, ma con esso disabilitato, la pagina ...admin/upgrade non esiste.

Abilitare solo il plugin docker_manage comporta la stessa pagina di aggiornamenti vuota.

1 Mi Piace

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

Scusa, hai ragione, devo aver avuto un’allucinazione. Facciamo finta di nulla, si trova nel percorso discourse/.

Comunque, ho ancora una schermata bianca vuota.

Con la disponibilità della versione 2.6.0.beta5 (io sono sulla 2.6.0.beta4), continuo ad avere una pagina di aggiornamento vuota. Sarei grato per qualsiasi ulteriore consiglio, dato che ho provato a disabilitare i plugin senza successo.

Dai un’occhiata agli strumenti di sviluppo di Chrome: ci sono errori nella console quando la pagina appare bianca? Il mio sospetto è che si tratti di qualcosa legato alla tua CSP.

1 Mi Piace

Grazie, hai ragione: sta rifiutando il caricamento di uno script proveniente dalla mia CDN. Con gli URL sanificati:

upgrade:1 È stato rifiutato il caricamento dello script 'https://cdn-to-discourse.b-cdn.net/assets/docker-manager-app-32418f2f7cd50e6f4a0b8d13badc4e59f6a1ad74e7bed270f3a051478fed773d.js' perché viola la seguente direttiva della Content Security Policy: "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". Si noti che 'script-src-elem' non è stato impostato esplicitamente, quindi viene utilizzato 'script-src' come fallback.

La pagina delle impostazioni di Sicurezza dice: “L’host corrente e la CDN sono inclusi per impostazione predefinita.” Dovrei aggiungere comunque manualmente la CDN alla whitelist?

Vedo che una questione identica è stata sollevata qui, senza una risposta definitiva sul motivo per cui l’elencamento in bianco predefinito non funzionava.

1 Mi Piace

Ciao,

penso che dovresti aggiungere questo URL all’impostazione CSP dell’amministratore (script src della Content Security Policy):

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

Quindi controlla nuovamente gli errori negli strumenti per sviluppatori di Chrome.

Sì, funziona. Mi chiedo solo perché l’elenco bianco predefinito non lo faccia automaticamente.

Anche io sono curioso, come è configurato il tuo CDN? Potrebbe mancare qualche funzionalità magica dal plugin docker-manager.

cc @pmusaraj

4 Mi Piace

Sì, infatti, era così. Il plugin docker_manager stava caricando due file JS in un template utilizzando javascript_include_tag, che non è consapevole di DISCOURSE_S3_CDN_URL, quindi stava utilizzando come predefinito DISCOURSE_CDN_URL e causando problemi alla CSP.

Dovrebbe essere corretto ora tramite FIX: blank upgrade page when using S3 CDN and CSP · discourse/docker_manager@3d37fd6 · GitHub

@paulrudy se aggiorni il plugin docker_manager, non dovrai più aggiungere manualmente https://cdn-to-discourse.b-cdn.net/assets/ alla tua CSP.

6 Mi Piace

Ha funzionato! Grazie @sam e @pmusaraj

4 Mi Piace