Impossible de joindre le serveur Discourse dans la VM depuis l'hôte

Bonjour ! J’ai installé Discourse avec succès dans une machine virtuelle Ubuntu 18.04 (en utilisant VMware Workstation 15 Player) en suivant le guide. L’accès à http://localhost:3000/ depuis l’intérieur de la VM fonctionne bien, mais je ne peux pas y accéder depuis mon hôte Windows 10. Le réseau de la VM est configuré en mode ponté, et pour exécuter le serveur Rails, je lance :

bundle exec rails server --binding=0.0.0.0

Cependant, lorsque j’essaie d’accéder à http://192.168.0.172:3000/ depuis mon hôte, j’obtiens une erreur de refus de connexion. J’ai essayé de configurer un simple serveur HTTP Python dans la VM :

python3 -m http.server 3000

Et je peux effectivement y accéder depuis mon hôte, donc je pense que le problème est spécifique à Discourse. Est-ce que je manque quelque chose ?

Merci d’avance !

Bonjour @Hugo_Lol,

Il pourrait vous être utile de consulter la façon de configurer la redirection de ports entre un hôte et une machine virtuelle, par exemple :

Un autre exemple :

Ces exemples peuvent peut-être vous donner une idée de la manière de commencer à résoudre ce problème.

J’espère que cela vous aidera.

Bonjour @neounix, merci pour ta réponse. J’ai déjà configuré le réseau de la VM en mode ponté, et je peux y accéder depuis l’extérieur en utilisant un simple serveur HTTP Python qui écoute sur le même port (3000) et la même adresse (0.0.0.0), mais pour une raison inconnue, cela ne fonctionne pas avec le serveur Discourse… :thinking:

Des idées ?

Salut @Hugo_Lol,

De rien.

Je n’utilise pas Windows, donc je ne peux pas t’aider davantage, désolé pour ça !

Le meilleur conseil que je puisse te donner est de chercher des indices dans les divers fichiers journaux de Discourse situés dans /var/log.

Le problème ici est que l’option --binding est totalement ignorée. J’ai essayé votre commande localement et j’ai repéré cette ligne dans la sortie (la sortie est très bruyante, il est donc très facile de manquer cette ligne) :

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

En parcourant notre config/unicorn.conf.rb, pour que le serveur écoute sur 0.0.0.0, vous devez définir la variable d’environnement UNICORN_BIND_ALL=1. Cela devrait donc fonctionner : UNICORN_BIND_ALL=1 bundle exec rails server.

Sinon, vous pouvez utiliser le script bin/unicorn qui accepte une option --host que vous pouvez utiliser pour vous lier à 0.0.0.0.

Ça a marché ! Tout fonctionne maintenant. Merci beaucoup à vous deux. :clap:

Merci, cela m’a évité bien des maux de tête.
Je me demande si vous pourriez mettre à jour les guides officiels pour inclure cela plutôt que la solution non fonctionnelle avec bundle exec rails server -b 0.0.0.0.
Je l’ai vu partout sur internet et je n’aurais jamais imaginé que cela ne fonctionnerait pas.

Absolument, vous pouvez le faire vous-même ! C’est un wiki :+1:t3:

Merci frangin ! J’avais le même problème, ça l’a résolu !