Я новичок в Discourse и застрял на этапе установки. Я создал виртуальную машину на базе Ubuntu Server 18.04 и примерно следовал инструкциям по установке.
Когда я говорю «примерно», имею в виду, что вместо облачного сервера я использую Ubuntu Server. Я не устанавливал Docker вручную, а позволил discourse-setup сделать это за меня. Кроме того, у меня пока не настроен почтовый сервер, хотя я указал разумные ответы в процессе настройки. Не уверен, является ли это критической проблемой. DNS полностью настроен, и сервер имеет статический IP-адрес.
После этапа начальной настройки, когда я перехожу по FQDN сервера, вижу страницу «Welcome to nginx!» вместо «Congratulations, you installed Discourse!».
Эта установка предназначена для лабораторной среды и не будет доступна публично.
Единственный способ увидеть эту страницу — если вы указали DNS на неправильный сервер или NGINX находится вне контейнера, занимая порт 80 и не давая контейнеру отвечать.
Если я открою веб-браузер и введу IP-адрес сервера напрямую, я также увижу приветственную страницу Nginx.
При подключении по SSH к серверу Ubuntu: marc@community:~$ locate nginx /var/discourse/image/base/install-nginx marc@community:~$
Кроме того, находясь на сервере Ubuntu: sudo find / -iname "*nginx*"
…множество файлов в директории /var/lib/docker/overlay2… /var/discourse/image/base/install-nginx /var/discourse/shared/standalone/letsencrypt/deploy/nginx.sh /var/discourse/shared/standalone/log/var-log/nginx
Если Docker слушал бы порт :80, что происходит при любой успешной установке (и необходимо для того, чтобы nginx внутри контейнера мог видеть что-либо), вы бы увидели:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 890 root 4u IPv6 961922 0t0 TCP *:http (LISTEN)
Если nginx не установлен вне контейнера, а Docker не слушает этот порт, то единственная причина, по которой вы видите приветственную страницу nginx, — это ошибка в конфигурации сети.
Помните, что проблема с сетью может включать (но не ограничивается) следующее:
Политика на виртуальной машине, блокирующая доступ (ufw или аналогичное)
Политика на виртуальном сервере, блокирующая доступ (неправильно настроен режим сети)
Политика в сети настроена неправильно (ACL между подсетями)
Неправильная конфигурация DNS
Это проблема Discourse только в том случае, если ни одно из вышеперечисленного не имеет места. Вы следуете стандартной инструкции по установке, но, как вы сами признали, устанавливаете в среде, которая ничем не похожа на стандартную.
Если ваша организация может потратить 5 долларов в месяц, возможно, будет дешевле с точки зрения затраченного времени разместить это в облаке и ограничить брандмауэр облачного VPS, чтобы он отдавал страницы только в вашу среду.
В данный момент меня интересует в основном процесс обучения и настройки этой системы. Как только я разберусь с этим, мы обязательно рассмотрим варианты хостинга.
Что касается перечисленных вами аспектов сети:
ufw неактивен, а iptables работает: я не вносил никаких изменений в установку Ubuntu Server по умолчанию.
** При просмотре конфигурации iptables видно, что политика цепочки input разрешает все пакеты, то же самое касается и цепочки output. В цепочке forward есть некоторые ссылки, связанные с Docker (см. ниже).
Единственный vNIC виртуальной машины настроен в режиме мостового подключения (Bridged mode), что обеспечивает прямое соединение с физической сетью.
Ноутбук, с которого я работаю, и виртуальная машина находятся в одной подсети.
Я не уверен в точных требованиях к DNS. Я пытался найти эти спецификации, но не смог найти окончательный документ. Что касается DNS, то я могу выполнить ping-запрос к серверу по имени, FQDN и IP-адресу. Не уверен, нужно ли что-то еще настроить в отношении DNS.
Виртуальная машина может подключаться к интернету, и у неё нет ограничений на доступ к GitHub. При запуске discourse-setup я оставил пустым опцию Email учётной записи Let’s Encrypt? (нажмите ENTER, чтобы пропустить) [me@example.com]:.
Оставление этого поля пустым означает, что вы не будете получать уведомления о проблемах с сертификатами; это не препятствует контейнеру пытаться включить Let’s Encrypt.
Хорошо, мы выделили некоторые более серьёзные проблемы, но они не относятся к автору оригинального поста. Где-то в вашей сети работает nginx, который выводит эту страницу, но, судя по вашим тестам на виртуальной машине, nginx не установлен, и docker не прослушивает порты.
Как только вы выясните, как это происходит, вторым шагом будет правильная настройка YAML-файла. Пока что вам нужно найти источник этой страницы.
Вот что я выяснил. Если я выключу сервер, я не смогу выполнить пинг его (IP-адрес, имя и FQDN). При попытке перейти по IP-адресу в браузере Firefox отображается стандартная страница «Не удалось установить соединение».
Таким образом, я делаю вывод, что конфликта IP-адресов нет.
После включения ВМ теперь также невозможно подключиться через браузер — снова появляется стандартная страница «Не удалось установить соединение». Теперь поведение соответствует тому, что мы ожидали на основе вывода команды lsof -i:80.