Permissões para a pasta uploads?

Primeiro, tentei executar o Discourse com configurações semi-padrão e funcionou muito bem, pude fazer upload de arquivos e outras coisas.

Então percebi que o caminho em app.yml era /var/discourse e o atualizei para /var/www/discourse, parei e destruí o contêiner, removi completamente a pasta anterior. E o coloquei para funcionar novamente… mas notei que agora não consigo mais fazer upload de arquivos.

Que tipo de permissões a pasta uploads precisa? Posso fazer algumas alterações manualmente, mas gostaria de saber exatamente o quê e se está tudo bem em geral (o lançador não deveria cuidar de definir as permissões corretas, especialmente quando iniciado do zero?)

Nos logs, tenho erros do nginx como

2024/07/12 19:11:23 [crit] 76#76: *160552 stat() “/var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png” failed (13: Permission denied), client: 172.17.0.1, server: _, request: “GET /phorum/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png HTTP/1.0”, host: “myhost.com”, referrer: “https://myhost.com/phorum/admin/site_settings/category/branding

Permissões em uploads são como:

drwxr--r--+ 3 discourse www-data 21 Jul 12 11:47 uploads

É isso que é recomendado.

O caminho /var/www/discourse é o caminho para o discourse dentro do contêiner. /var/discourse é o caminho normal para o Discourse_docker fora do contêiner.

Como você acabou de começar, eu recomendaria que você apenas recomeçasse e não renomeasse nada desta vez.

Minha suposição é que você não atualizou o caminho em seu app.yml e, portanto, ele está tentando acessar algo que não existe.

Tenho muitos outros projetos neste servidor e todos eles estão bem localizados na minha pasta /var/www, então prefiro mantê-lo assim :slight_smile: E não me importo como é dentro do contêiner.

Mas eu atualizei? Em mounts, ou onde mais deveria ir?

Desculpe, não posso ajudar. Mas tenho certeza de que você não tem o Nginx lá :wink: A situação é a mesma com o contêiner docker.

Desculpe, não entendi, qual nginx? Os logs são do nginx do Discourse, meu nginx que termina SSL está acima dele.

Exatamente o meu ponto. Como seu proxy reverso nginx não está nesse caminho, por que o contêiner docker deveria estar.

Mas um contêiner vive sua própria vida e o caminho para o contêiner não deve afetar o que seu Nginx faz. Você mudou mais alguma coisa também?

Verifiquei o que tenho:

lrwxrwxrwx 1 root root 15 Jul 12 10:10 uploads -> /shared/uploads

E como exemplo, uma imagem em /var/www/discourse/public/uploads/default/original/1X se parece com isso:

-rw-r--r-- 1 discourse www-data 7100 May 19 2022 08335563eac3a393e60a902d4d38cffdfa6d967d

Isso é o que eu sei. Porque, caso contrário, o Docker é um mistério muito grande para mim :rofl:

Então, basicamente gravável por qualquer um no mundo? Isso não é considerado ruim para a segurança?

Você realmente não quer correr o risco de expor seus segredos no seu app.yml para o mundo.

1 curtida

Dentro do Docker? Acho que não. E… não me importo porque tudo isso é planejado e feito pela CDCK e confio que eles sabem o que fazem :smirking_face:

Claro, mas não estou expondo nada :slight_smile:

As permissões são as mesmas, independentemente de estar dentro ou fora. E a pasta de uploads está montada.

Ok, nada funcionou, então acabei mudando as permissões para a pasta uploads para 755 e agora está tudo bem. Após a reconstrução, parece que os uploads em si estavam ok (do lado do engine), no entanto, o nginx não conseguiu lê-los.

Eu não entendo totalmente por que você está fazendo tudo isso. É sua escolha colocar o contêiner em um caminho que será visível mundialmente se você cometer um pequeno erro, mas essa é sua escolha. Mas todo o resto… por quê?

Ter um proxy reverso na frente do Discourse é realmente trivial e, de outra forma, sua configuração seria uma instalação padrão sem toda essa confusão. Claro, se você quer brincar e esse é o seu hobby, mas em breve alguém aparecerá e dirá que você só pode obter suporte para a instalação padrão e o maior problema é que ninguém realmente sabe o que você fez. Ou por quê.

O que é “isso”? Eu tenho uma configuração relativamente padrão :slight_smile: E estou tentando corrigir o problema.

Se quiser, você pode carregar um arquivo e ver quais são suas permissões e copiá-las.

Talvez carregue alguns e depois faça

 find uploads -ls |less

Você está corrigindo um problema que surgiu ao tentar fazer outra coisa, algo que um padrão exigiria. Mesmo com um proxy reverso.

É por isso que você está bem longe do padrão :smirking_face: Porque existem duas opções:

  • você tem um bug em mãos que ninguém mais tem
  • você fez algo engraçado

Talvez seja um bug. E você confirmou isso fazendo uma instalação padrão usando um caminho seguro (de muitas maneiras) e, ao mesmo tempo, conectando seu proxy reverso da maneira correta. Porque se ainda estiver quebrado, aposto que o problema está no host virtual e/ou nas portas. Mas se funcionar… então voltamos à opção “engraçada” — onde ninguém sabe o que você fez.

Você vê o problema aqui?

De qualquer forma — usar um proxy reverso leva a nenhum suporte… essa é a política aqui. Mas outros usuários podem e, com bastante frequência, ajudar.

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