¡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?
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…
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.
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.