Não é possível acessar o servidor Discourse na VM a partir do host

Olá! Instalei o Discourse com sucesso em uma máquina virtual Ubuntu 18.04 (usando o VMware Workstation 15 Player) seguindo o guia. O acesso a http://localhost:3000/ dentro da VM funciona bem, mas não consigo acessá-lo a partir do meu sistema host Windows 10. A rede da VM está configurada no modo bridge, e para executar o servidor Rails, estou rodando:

bundle exec rails server --binding=0.0.0.0

No entanto, quando tento acessar http://192.168.0.172:3000/ a partir da minha máquina host, recebo um erro de conexão recusada. Tentei configurar um servidor HTTP simples em Python dentro da VM:

python3 -m http.server 3000

E consigo acessá-lo efetivamente a partir da máquina host, então acho que isso é específico do Discourse. Estou esquecendo de algo?

Obrigado desde já!

Olá @Hugo_Lol

Pode ser útil revisar como configurar o encaminhamento de portas entre o host e uma VM, por exemplo:

Outro exemplo:

Talvez você possa usar esses exemplos para ter uma ideia de como começar a resolver isso?

Espero que isso ajude.

Olá @neounix, obrigado pela resposta. Já configurei a rede da VM no modo bridge e consigo acessá-la externamente usando um simples servidor HTTP Python que escuta na mesma porta (3000) e endereço (0.0.0.0), mas, por algum motivo, não funciona com o servidor Discourse… :thinking:

Alguma ideia?

Olá @Hugo_Lol,

De nada.

Como não sou usuário do Windows, não posso ajudar muito mais, desculpe!

A melhor sugestão que tenho é procurar por pistas nos vários arquivos de log do Discourse em /var/log.

O problema aqui é que a opção --binding é completamente ignorada. Testei seu comando localmente e notei esta linha na saída (a saída é muito barulhenta, então é muito fácil perder essa linha):

I, [2020-06-08T17:26:55.938086 #21001]  INFO -- : listening on addr=127.0.0.1:3000 fd=15

Lendo nosso config/unicorn.conf.rb, para fazer o servidor ouvir em 0.0.0.0, você precisará definir a variável de ambiente UNICORN_BIND_ALL=1. Então, isso deve funcionar: UNICORN_BIND_ALL=1 bundle exec rails server.

Alternativamente, você pode usar o script bin/unicorn, que aceita a opção --host que pode ser usada para vincular a 0.0.0.0.

Isso resolveu! Está funcionando agora. Muito obrigado a vocês dois. :clap:

Obrigado, isso me poupou de uma dor de cabeça.
Será que você pode atualizar os guias oficiais do usuário para incluir isso, em vez da solução que não funciona com bundle exec rails server -b 0.0.0.0?
Vi isso em toda a internet e não conseguia imaginar que não funcionaria.

Com certeza, você pode fazer isso sozinho! É uma wiki :+1:t3:

Valeu, mano! Tive o mesmo problema, isso resolveu!