Semelhante a Uploaded avatars and Gravatar not working with subfolder installation…
Todos os uploads estão quebrados na minha instalação em subpasta. Os uploads chegam ao diretório de uploads real, mas ao renderizar as postagens, todas as imagens recebem src="".
Fazendo uma postagem…
https://i.imgur.com/ofOUY4e.png
Após postar…
https://i.imgur.com/EBmnD6e.png
Surpreendentemente, se eu mudar para um navegador diferente (agora Chrome), abrir o tópico (onde a imagem ainda está quebrada), mas clicar em editar, a imagem é renderizada na prévia de edição novamente!
https://i.imgur.com/3rQirhc.png
Isso confirma que o upload está sendo feito com sucesso para o servidor, o que verifiquei:
root@cs6991:/var/discourse# ./launcher enter app
x86_64 arch detected.
root@cs6991-app:/var/www/discourse# ls 'public/~cs6991/forum'
backups uploads
root@cs6991-app:/var/www/discourse# ls 'public/~cs6991/forum/uploads'
default
root@cs6991-app:/var/www/discourse# ls 'public/~cs6991/forum/uploads/default/original/1X/'
08335563eac3a393e60a902d4d38cffdfa6d967d.png 3eee67e6460792667bab4f2248ad4643be4feae3.png
29e403dabcfee32379629fb6d844354193e278ba.png 42ecfcb27b534acc9f3436fa7d291c2fca106e57.png
Mas simplesmente não parece estar renderizando na página real.
O mesmo problema ocorre com outros uploads, como avatares.
Algumas informações:
Subpasta: /~cs6991/forum
app.yml
## este é o modelo de contêiner Docker Discourse autônomo e tudo-em-um
##
## 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 desejar adicionar o Let's Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.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,
## veja 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 um máximo de 25% da memória total.
## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
db_shared_buffers: "128MB"
## pode melhorar o desempenho da classificação, mas aumenta o uso de memória por conexão
#db_work_mem: "40MB"
## Qual revisão Git este contêiner deve usar? (padrão: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Quantas requisições web concorrentes 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 substituir
UNICORN_WORKERS: 2
## TODO: O nome de domínio que esta instância do Discourse responderá
## Obrigatório. O Discourse não funcionará com um número IP simples.
DISCOURSE_HOSTNAME: 'cgi.cse.unsw.edu.au'
## Descomente se você quiser que o contêiner seja iniciado com o mesmo
## nome de host (-h option) que o especificado acima (padrão "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de e-mails separados por vírgula que serão administradores e desenvolvedores
## na inscrição inicial, exemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: '<<REDACTED>>'
## 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: email-smtp.ap-southeast-2.amazonaws.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: <<REDACTED>>
DISCOURSE_SMTP_PASSWORD: <<REDACTED>>
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, padrão true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (obrigatório por alguns provedores)
DISCOURSE_NOTIFICATION_EMAIL: discourse@cs6991.email # (endereço para enviar notificações)
## Se você adicionou o modelo Let's Encrypt, descomente abaixo para obter um certificado SSL gratuito
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## O endereço CDN http ou https para esta instância do Discourse (configurado para puxar)
## veja https://meta.discourse.org/t/14857 para detalhes
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## A chave de licença do MaxMind para consulta de endereço IP
## veja https://meta.discourse.org/t/-/137387/23 para detalhes
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
DISCOURSE_RELATIVE_URL_ROOT: '/~cs6991/forum'
## 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
## veja 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
## Quaisquer comandos personalizados para executar após a construção
run:
- exec: echo "Início dos comandos personalizados"
## Se você quiser definir o e-mail 'De' para seu primeiro registro, descomente e altere:
## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec:
cd: $home
cmd:
- mkdir -p public/~cs6991/forum
- cd public/~cs6991/forum && ln -s ../../uploads && ln -s ../../backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /~cs6991/forum/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /~cs6991/forum {
rewrite ^/~cs6991/forum/?(.*)$ /$1;
}
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: $proxy_add_x_forwarded_for
to: $http_your_original_ip_header
global: true
- exec: echo "Fim dos comandos personalizados"
Tudo o mais, pelo que pude apurar, parece estar funcionando corretamente - apenas a renderização de uploads está agindo de forma bastante peculiar.
Verifiquei esse comportamento em uma compilação completamente nova - ou seja, rm -rf /var/discourse, apagando completamente o docker e seguindo as instruções de instalação na nuvem + subpasta.
Se houver mais investigações que eu possa realizar, ficarei feliz em dar esses passos. (desculpe pelos links do imgur - ainda não tenho permissão para mais de 2 incorporações de imagem aqui!)
Obrigado!