Impossibile raggiungere il server Discourse nella VM dall'host

Ciao! Ho installato con successo Discourse su una macchina virtuale Ubuntu 18.04 (usando VMware Workstation 15 Player) seguendo la guida. L’accesso a http://localhost:3000/ dalla VM funziona bene, ma non riesco ad raggiungerlo dal mio sistema host Windows 10. La rete della VM è configurata in modalità bridge e per avviare il server Rails sto eseguendo:

bundle exec rails server --binding=0.0.0.0

Tuttavia, quando provo ad accedere a http://192.168.0.172:3000/ dalla mia macchina host, ottengo un errore di connessione rifiutata. Ho provato a configurare un semplice server HTTP Python all’interno della VM:

python3 -m http.server 3000

E riesco effettivamente ad accedervi dalla macchina host, quindi penso che il problema sia specifico di Discourse. Mi sto perdendo qualcosa?

Grazie in anticipo!

Ciao @Hugo_Lol

Potresti trovare utile rivedere come configurare l’inoltro delle porte tra un host e una VM, ad esempio:

Un altro esempio:

Forse questi esempi possono darti un’idea su come iniziare a risolvere il problema?

Spero che questo ti sia d’aiuto.

Ciao @neounix, grazie per la risposta. Ho già configurato la rete della VM in modalità bridge e riesco a raggiungerla dall’esterno usando un semplice server HTTP Python in ascolto sulla stessa porta (3000) e indirizzo (0.0.0.0), ma per qualche motivo non funziona con il server Discourse… :thinking:

Hai qualche idea?

Ciao @Hugo_Lol,

Di nulla.

Non sono un utente Windows, quindi non posso essere di ulteriore aiuto, mi dispiace!

Il miglior consiglio che posso darti è cercare indizi nei vari file di log di Discourse in /var/log.

Il problema qui è che l’opzione --binding viene completamente ignorata. Ho provato il tuo comando in locale e ho notato questa riga nell’output (l’output è molto rumoroso, quindi è molto facile perdere di vista questa riga):

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

Leggendo il nostro file config/unicorn.conf.rb, per far sì che il server ascolti su 0.0.0.0 è necessario impostare la variabile d’ambiente UNICORN_BIND_ALL=1. Quindi questo dovrebbe funzionare: UNICORN_BIND_ALL=1 bundle exec rails server.

In alternativa, puoi utilizzare lo script bin/unicorn, che accetta un’opzione --host che puoi usare per associare il server a 0.0.0.0.

Ha funzionato! Ora è tutto a posto. Grazie mille a entrambi. :clap:

Grazie, mi ha risparmiato un bel mal di testa.
Mi chiedo se sia possibile aggiornare le guide ufficiali degli utenti per includere questo metodo invece della soluzione non funzionante con bundle exec rails server -b 0.0.0.0.
L’ho vista ovunque su internet e non avrei mai immaginato che non avrebbe funzionato.

Assolutamente, puoi farlo da solo! È una wiki :+1:t3:

Grazie bro! Avevo lo stesso problema, questo l’ha risolto!