Не удается подключиться к серверу Discourse в виртуальной машине с хоста

Привет! Я успешно установил Discourse на виртуальную машину с Ubuntu 18.04 (используя VMware Workstation 15 Player), следуя руководству. Доступ к http://localhost:3000/ изнутри виртуальной машины работает отлично, но я не могу получить к нему доступ с моей основной системы Windows 10. Сеть виртуальной машины настроена в режиме моста, и для запуска сервера Rails я использую команду:

bundle exec rails server --binding=0.0.0.0

Однако при попытке открыть http://192.168.0.172:3000/ с основной машины я получаю ошибку «отказано в подключении». Я попробовал запустить простой HTTP-сервер на Python внутри виртуальной машины:

python3 -m http.server 3000

И к нему можно успешно подключиться с основной машины, поэтому, похоже, проблема специфична для Discourse. Не упустил ли я что-то?

Заранее спасибо!

Здравствуйте, @Hugo_Lol

Вам может быть полезно ознакомиться с инструкциями по настройке проброса портов между хостом и виртуальной машиной, например:

Другой пример:

Возможно, эти примеры помогут вам понять, с чего начать решение этой задачи?

Надеемся, это поможет.

Привет, @neounix, спасибо за ответ. Я уже настроил сеть ВМ в режиме моста, и могу получить к ней доступ извне, используя простой HTTP-сервер на Python, который слушает тот же порт (3000) и адрес (0.0.0.0), но по какой-то причине это не работает с сервером Discourse… :thinking:

Есть какие-то идеи?

Привет @Hugo_Lol,

Пожалуйста.

Я не использую Windows, поэтому не смогу помочь дальше, извините!

Лучший совет, который я могу дать, — поищите подсказки в различных файлах журналов Discourse в /var/log.

Проблема в том, что опция --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.

Альтернативно можно использовать скрипт bin/unicorn, который поддерживает опцию --host, позволяющую привязаться к адресу 0.0.0.0.

Это помогло! Теперь всё работает. Большое спасибо вам обоим. :clap:

Спасибо, это избавило меня от головной боли.
Интересно, можно ли обновить официальные руководства пользователя и включить туда это решение вместо неработающего варианта с bundle exec rails server -b 0.0.0.0.
Я видел это повсюду в интернете и не мог представить, что это не сработает.

Безусловно, вы можете сделать это самостоятельно! Это вики :+1:t3:

Спасибо, бро! У меня была та же проблема, это помогло!