Anexos servindo localmente no servidor, mas não publicamente

Resumo do Problema

Estou encontrando um erro 404 ao acessar o upload de uma imagem através de sua URL no site Discourse ativo (https://techenclave.com), mesmo que a imagem esteja presente no disco e seja servida corretamente internamente. Eu rebakei a postagem, reiniciei o aplicativo e verifiquei que o serviço interno funciona, mas ele ainda retorna 404 externamente.


O Que Está Funcionando

1. Upload Existe no DB

Usando o console Rails, confirmei que o upload existe com todos os metadados corretos:

Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')

A saída inclui:

  • url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"
  • Nome do arquivo: IMG202506252257011.jpg
  • ID: 170265
  • Usado na Postagem ID: 3125774

2. Arquivo Existe no Disco

Verifiquei que o arquivo está presente dentro do contêiner:

ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

:check_mark: Arquivo existe com propriedade e permissões corretas:
discourse:www-data, -rw-r--r--.


3. Symlink da Pasta Public Funciona

O symlink public/uploads está intacto:

ls -l /var/www/discourse/public/uploads
# => /shared/uploads

4. Discourse Consegue Servir Internamente

Testado com:

curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

Resultado: HTTP/1.1 200 OK


5. Postagem Rebakeada

Rebakeei a postagem com:

Post.find(3125774).rebake!

6. Aplicativo Reiniciado

Executei:

./launcher restart app

Também tentei:

sudo ./launcher rebuild app

(O daemon Docker ficou indisponível temporariamente, mas foi corrigido depois.)


O Que Não Está Funcionando

Acesso Externo à Imagem

Acessar:

https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

Retorna:

404 Not Found

Isso acontece em navegadores e em modo anônimo.


Com o Que Preciso de Ajuda

Alguém pode ajudar a identificar o que pode causar:

  • Um upload que funciona e é servido via localhost:3000,
  • mas retorna 404 externamente no domínio público?

O que mais devo verificar? Alguma configuração ou log relacionado para inspecionar?

Agradeço antecipadamente!

Mesmo imagens recém-carregadas não estão carregando. Recebendo 404

Acho que esta não é uma instalação padrão? É basicamente tudo o que é suportado aqui. Como você instalou o discourse?

1 curtida

Da próxima vez, talvez mencione que você migrou muito recentemente?

Você seguiu este guia ao mudar de temp.techenclave.com para techenclave.com?

2 curtidas

Obrigado.

A instalação foi um guia padrão de instalação do discourse no GitHub.

Sim, fiz uma migração local no meu laptop, fiz um backup e restaurei o backup no servidor fazendo o upload do arquivo e restaurando o backup pelo painel de administração. Não deveria ter feito isso, pois nem todos os arquivos de anexo foram restaurados, apesar de ter mostrado sucesso. De qualquer forma, fiz um rsync dos arquivos da instalação local no laptop para o servidor para atualizá-los.

Em seguida, foi uma migração de domínio, como você bem apontou, de temporário para raiz após testar a configuração por um dia.

A razão pela qual não mencionei o acima foi porque mesmo os arquivos mais recentes que estavam sendo carregados após toda a atividade acima também não estão aparecendo. Apesar de uma reconstrução. Então, eu não achei essa informação relevante.

Não segui esse guia. Mas quando olho para ele, posso ver que apenas um passo foi

  1. O domínio antigo aparece na lista de iframes permitidos junto com o novo domínio nas configurações.
  2. Remapeamento do domínio em posts, o que eu ia fazer mais tarde de qualquer forma, incluindo um rebake assim que este problema fosse resolvido. O post em questão foi refeito e não tem o domínio antigo na URL da imagem.

Estes dois pontos são relevantes?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.