Kein Zugriff auf Discourse-Server in VM vom Host

Hallo! Ich habe Discourse erfolgreich auf einer Ubuntu 18.04-Virtual Machine (mit VMware Workstation 15 Player) installiert, indem ich die Anleitung befolgt habe. Der Zugriff auf http://localhost:3000/ von innerhalb der VM funktioniert einwandfrei, aber ich kann ihn von meinem Windows 10-Host-System aus nicht erreichen. Das VM-Netzwerk ist im Brückenmodus konfiguriert, und zum Starten des Rails-Servers führe ich folgenden Befehl aus:

bundle exec rails server --binding=0.0.0.0

Wenn ich jedoch von meinem Host-System aus http://192.168.0.172:3000/ aufrufe, erhalte ich einen Fehler „Verbindung verweigert“. Ich habe versucht, einen einfachen Python-HTTP-Server innerhalb der VM einzurichten:

python3 -m http.server 3000

Und ich kann diesen tatsächlich von meinem Host-System aus erreichen, also denke ich, dass das Problem spezifisch für Discourse ist. Habe ich etwas übersehen?

Vielen Dank im Voraus!

Hallo @Hugo_Lol,

vielleicht findest du es hilfreich, dir anzusehen, wie man Port-Weiterleitung zwischen einem Host und einer VM einrichtet, zum Beispiel:

Ein weiteres Beispiel:

Vielleicht können diese Beispiele dir eine Idee geben, wie du mit der Lösung dieses Problems beginnen kannst?

Ich hoffe, das hilft dir weiter.

Hi @neounix, danke für die Rückmeldung. Ich habe das VM-Netzwerk bereits im Brückenmodus konfiguriert und kann es von außen erreichen, indem ich einen einfachen Python-HTTP-Server verwende, der am gleichen Port (3000) und an derselben Adresse (0.0.0.0) lauscht. Aus irgendeinem Grund funktioniert es jedoch nicht mit dem Discourse-Server … :thinking:

Irgendwelche Ideen?

Hey @Hugo_Lol,

Gerne geschehen.

Da ich kein Windows-Benutzer bin, kann ich leider nicht weiterhelfen, tut mir leid!

Der beste Rat, den ich geben kann, ist, in den verschiedenen Discourse-Logdateien unter /var/log nach Hinweisen zu suchen.

Das Problem hier ist, dass die Option --binding komplett ignoriert wird. Ich habe deinen Befehl lokal ausprobiert und habe diese Zeile in der Ausgabe entdeckt (die Ausgabe ist sehr umfangreich, sodass diese Zeile leicht übersehen werden kann):

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

Wenn du unsere config/unicorn.conf.rb durchgehst, musst du zum Hören des Servers auf 0.0.0.0 die Umgebungsvariable UNICORN_BIND_ALL=1 setzen. Das sollte also funktionieren: UNICORN_BIND_ALL=1 bundle exec rails server.

Alternativ kannst du das Skript bin/unicorn verwenden, das eine Option --host akzeptiert, mit der du an 0.0.0.0 binden kannst.

Das hat es gebracht! Es funktioniert jetzt. Vielen Dank an euch beide. :clap:

Danke, das hat mir einige Kopfschmerzen erspart.
Ich frage mich, ob du die offiziellen Benutzerhandbücher aktualisieren könntest, um dies statt der nicht funktionierenden Lösung mit bundle exec rails server -b 0.0.0.0 aufzunehmen.
Ich habe es überall im Internet gesehen und konnte mir nicht vorstellen, dass es nicht funktionieren würde.

Absolut, das kannst du selbst machen! Es ist ein Wiki :+1:t3:

Danke, Bro! Hatte das gleiche Problem, das hat es behoben!