Minha página de atualizações está completamente em branco.
Executei ./launcher rebuild app e consegui atualizar para a v2.6.0beta4, mas mesmo depois disso, a página de atualizações continua em branco. A tag <body> da página é:
Obrigado. Tive um tempo para tentar isso. Várias opções no modo de segurança não ajudaram. Desativar todos os plugins de terceiros e incluir apenas o docker_manager também não mudou nada. Ainda assim, uma tela branca em branco.
Vi um post com o mesmo problema do início deste ano, mas o autor do tópico parou de responder, então não há causa ou resolução óbvia.
## este é o modelo de contêiner Docker Discourse tudo-em-um, autônomo
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA *MUITO* CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se quiser adicionar o Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- "templates/web.socketed.template.yml"
## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## consulte https://meta.discourse.org/t/17247 para detalhes
expose:
# - "80:80" # http
# - "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Defina db_shared_buffers para no máximo 25% da memória total.
## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode sobrescrever
db_shared_buffers: "128MB"
## pode melhorar o desempenho de classificação, mas aumenta o uso de memória por conexão
#db_work_mem: "40MB"
## Qual revisão do Git este contêiner deve usar? (padrão: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Quantas solicitações web simultâneas são suportadas? Depende da memória e dos núcleos da CPU.
## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode sobrescrever
UNICORN_WORKERS: 2
## TODO: O nome de domínio ao qual esta instância do Discourse responderá
## Obrigatório. O Discourse não funcionará com um número IP puro.
DISCOURSE_HOSTNAME: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
## Descomente se quiser que o contêiner seja iniciado com o mesmo
## nome de host (-h option) especificado acima (padrão "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de e-mails delimitados por vírgula que serão definidos como administradores e desenvolvedores
## no cadastro inicial, exemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
# ENDEREÇO SMTP, nome de usuário e senha são obrigatórios
# AVISO: o caractere '#' na senha SMTP pode causar problemas!
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_SMTP_PASSWORD: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, padrão true)
## Se você adicionou o modelo Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
## O endereço CDN http ou https para esta instância do Discourse (configurado para buscar)
## consulte https://meta.discourse.org/t/14857 para detalhes
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
# Configuração S3
DISCOURSE_CDN_URL: <REMOVIDO PARA PUBLICAÇÃO 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: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_S3_SECRET_ACCESS_KEY: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_S3_CDN_URL: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_S3_BUCKET: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_S3_BACKUP_BUCKET: <REMOVIDO PARA PUBLICAÇÃO PÚBLICA>
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false
## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins vão aqui
## consulte https://meta.discourse.org/t/19157 para detalhes
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
# Armazenamento de objetos
after_assets_precompile:
- exec:
cd: $home
cmd:
- su discourse -c 'bundle exec rake s3:upload_assets'
## Quaisquer comandos personalizados para executar após a construção
run:
- exec: echo "Início dos comandos personalizados"
## Se você quiser definir o endereço de e-mail 'De' para seu primeiro registro, descomente e altere:
## Após receber o primeiro e-mail de inscrição, recomente a linha. Ela precisa ser executada apenas uma vez.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fim dos comandos personalizados"
Com a disponibilidade da versão 2.6.0.beta5 (estou na 2.6.0.beta4), ainda estou enfrentando uma página de atualizações em branco. Agradeceria por qualquer orientação adicional, já que tentei desativar os plugins sem sucesso.
Dê uma olhada nas Ferramentas de Desenvolvedor do Chrome. Há algum erro no console quando a página fica branca? Minha suspeita é que isso tenha a ver com sua CSP.
Obrigado, você tem razão — ele está se recusando a carregar um script vindo do meu CDN. Com as URLs sanitizadas:
upgrade:1 Recusa em carregar o script 'https://cdn-to-discourse.b-cdn.net/assets/docker-manager-app-32418f2f7cd50e6f4a0b8d13badc4e59f6a1ad74e7bed270f3a051478fed773d.js' porque viola a seguinte diretiva de Política de Segurança de Conteúdo: "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". Note que 'script-src-elem' não foi definido explicitamente, então 'script-src' é usado como fallback.
A página de configurações de Segurança diz que “O host atual e o CDN estão incluídos por padrão.” Devo adicionar manualmente o CDN à lista de permissões mesmo assim?
Sim, de fato, estávamos. O plugin docker_manager estava carregando dois arquivos JS em um template usando javascript_include_tag, que não reconhece DISCOURSE_S3_CDN_URL, então estava usando o padrão DISCOURSE_CDN_URL e causando problemas no CSP.
@paulrudy, se você atualizar o plugin docker_manager, não deverá mais precisar adicionar manualmente https://cdn-to-discourse.b-cdn.net/assets/ ao seu CSP.