No se puede acceder al servidor Discourse en la VM desde el host

¡Hola! He instalado Discourse con éxito en una máquina virtual Ubuntu 18.04 (usando VMware Workstation 15 Player) siguiendo la guía. El acceso a http://localhost:3000/ desde dentro de la VM funciona bien, pero no puedo acceder desde mi sistema anfitrión Windows 10. La red de la VM está configurada en modo puente, y para ejecutar el servidor de Rails estoy usando:

bundle exec rails server --binding=0.0.0.0

Sin embargo, cuando intento acceder a http://192.168.0.172:3000/ desde mi máquina anfitriona, obtengo un error de conexión rechazada. He intentado configurar un servidor HTTP simple de Python dentro de la VM:

python3 -m http.server 3000

Y sí puedo acceder a él desde la máquina anfitriona, así que creo que el problema es específico de Discourse. ¿Estoy pasando por alto algo?

¡Gracias de antemano!

Hola @Hugo_Lol

Quizás te resulte útil repasar cómo configurar el reenvío de puertos entre un host y una máquina virtual, por ejemplo:

Otro ejemplo:

Quizás puedas usar estos ejemplos para tener una idea de cómo empezar a resolver esto.

Espero que esto te ayude.

1 me gusta

Hola @neounix, gracias por la respuesta. Ya he configurado la red de la VM en modo puente y puedo acceder a ella desde el exterior usando un servidor HTTP simple de Python que escucha en el mismo puerto (3000) y dirección (0.0.0.0), pero por alguna razón no funciona con el servidor de Discourse… :thinking:

¿Alguna idea?

1 me gusta

Hola @Hugo_Lol,

De nada.

No soy usuario de Windows, así que no puedo ayudarte mucho más, ¡lo siento!

La mejor sugerencia que tengo es buscar pistas en los diversos archivos de registro de Discourse en /var/log.

El problema aquí es que la opción --binding se ignora por completo. Probé tu comando localmente y noté esta línea en la salida (la salida es muy ruidosa, por lo que es muy fácil pasar por alto esta línea):

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

Al revisar nuestro config/unicorn.conf.rb, para que el servidor escuche en 0.0.0.0 necesitas establecer la variable de entorno UNICORN_BIND_ALL=1. Entonces, esto debería funcionar: UNICORN_BIND_ALL=1 bundle exec rails server.

Alternativamente, puedes usar el script bin/unicorn, que sí acepta una opción --host que puedes utilizar para vincularlo a 0.0.0.0.

9 Me gusta

¡Eso funcionó! Ahora está funcionando. Muchas gracias a ambos. :clap:

6 Me gusta

Gracias, esto me ahorró algunos dolores de cabeza.
Me pregunto si pueden actualizar las guías oficiales de usuario para incluir esto en lugar de la solución no funcional con bundle exec rails server -b 0.0.0.0.
Lo he visto por toda internet y no podía imaginar que no funcionaría.

¡Por supuesto, puedes hacerlo tú mismo! Es un wiki :+1:t3:

1 me gusta

¡Gracias, hermano! Tuve el mismo problema, ¡esto lo solucionó!

1 me gusta