VM内のDiscourseサーバーにホストから接続できない

こんにちは!Ubuntu 18.04 の仮想マシン(VMware Workstation 15 Player を使用)に、このガイド に従って正常に Discourse をインストールしました。VM 内からは http://localhost:3000/ へのアクセスは問題ないのですが、Windows 10 のホストシステムからはアクセスできません。VM のネットワークはブリッジモードで設定されており、Rails サーバーを実行する際には以下のコマンドを使用しています:

bundle exec rails server --binding=0.0.0.0

しかし、ホストマシンから http://192.168.0.172:3000/ にアクセスすると、「接続が拒否されました」というエラーが表示されます。VM 内で単純な Python HTTP サーバーを設定してみました:

python3 -m http.server 3000

これならホストマシンから実際にアクセスできるため、Discourse 固有の問題だと考えています。何か見落としていることがあるでしょうか?

よろしくお願いいたします!

こんにちは @Hugo_Lol さん

ホストと仮想マシン(VM)間のポート転送の設定方法を確認すると役立つかもしれません。例えば:

別の例:

これらの例を参考に、この問題の解決策を始めるヒントを得られるかもしれません。

お役に立てれば幸いです。

「いいね!」 1

こんにちは、@neounix さん、返信ありがとうございます。VM のネットワークをブリッジモードで設定済みで、同じポート(3000)とアドレス(0.0.0.0)でリッスンするシンプルな Python HTTP サーバーなら外部からアクセスできますが、Discourse サーバーではなぜか動作しません…:thinking:

何かアイデアはありますか?

「いいね!」 1

@Hugo_Lol さん、こんにちは。

どういたしまして。

私は Windows ユーザーではないので、それ以上のお役に立てず申し訳ありません!

私が提案できる最善のことは、/var/log 内のさまざまな Discourse ログファイルに手がかりを探すことです。

ここでの問題は、--binding オプションが完全に無視されていることです。ローカルでコマンドを実行したところ、出力に以下の行が含まれているのが確認できました(出力が非常に多いため、この行を見逃しやすいです):

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

config/unicorn.conf.rb を確認すると、サーバーが 0.0.0.0 をリッスンするようにするには、UNICORN_BIND_ALL=1 環境変数を設定する必要があります。したがって、以下のコマンドが機能するはずです:UNICORN_BIND_ALL=1 bundle exec rails server

あるいは、--host オプションを受け付ける bin/unicorn スクリプトを使用し、0.0.0.0 にバインドすることもできます。

「いいね!」 9

これで解決しました!もう動いています。二人とも本当にありがとうございます。:clap:

「いいね!」 6

ありがとうございます。これで頭を悩ませる必要がなくなりました。
動作しない bundle exec rails server -b 0.0.0.0 という解決策の代わりに、これを公式ユーザーガイドに追加していただけないでしょうか。
インターネット上でこの情報が至る所に見られ、それが動作しないとは想像もできませんでした。

もちろん、ご自身で編集できます!ウィキですので :+1:t3:

「いいね!」 1

ありがとう!同じ問題を抱えていたので、これで解決しました!

「いいね!」 1