Я немного запутался в том, когда новая установка Discourse на базе Docker открывает порт 80. Позвольте пояснить…
Когда я запускаю ./discourse-setup, я предполагаю, что все начальные вопросы (имя хоста, адрес электронной почты и т. д.) задаются ДО создания контейнера и, следовательно, до того, как Discourse начнёт использовать порт 80. Это верно?
Если да, то не создаёт ли это некоторый замкнутый круг при вводе имени хоста?
Я уже создал A-запись (и она доступна через имя хоста, пингуется). Но порт 80 не открыт. Я думаю, что понимаю почему: контейнер ещё не создан.
Но если это так, то как тогда может работать начальная проверка имени хоста, если она выполняется до создания контейнера?
Очевидно, у меня есть ошибочное предположение, поэтому, пожалуйста, кто-нибудь, избавьте меня от сомнений!
discourse-setup запускает nc, который открывает порт для тестирования.
Если вы используете ОС, в которой nc не установлен, этот тест не пройдет из-за этого. Вы можете либо убедиться, что проблема именно в отсутствии nc, либо просто предположить, что вы знаете, что делаете, и всё заработает.
Предположение, что я знаю, что делаю, обычно оказывается плохим выбором! Но я сейчас игнорирую предупреждение и продолжаю.
Боюсь, я всё равно столкнусь с проблемой, так как полагаю, что nc должен разрешить открытие порта 80 (у меня пока нет брандмауэра), но я разберусь с этим позже.
Что ж, именно поэтому проводятся эти тесты. Но они работают для большинства людей в большинстве случаев.
Если вы вводите nc в командной строке и получаете сообщение command not found, можно предположить, что тест сломан (что не означает, что ваше доменное имя разрешается на ваш сервер и что порт доступен).
У меня возникла эта проблема при настройке первого сервера, и, что раздражает, она сама разрешилась через несколько часов. Подобные проблемы часто указывают на проблему репликации DNS, но я использую DNS CloudFlare (с низким TTL) и могу успешно пинговать по имени хоста.
Установка Docker прошла успешно, и nc доступен.
Команда docker ps показывает, что порты 80 и 443 перенаправлены на контейнер.
Команда sof -i -P -n сообщает, что docker-pr также слушает оба порта.
Мне так и не удалось выяснить, почему эта проблема возникла при первой установке, но теперь, когда она повторилась, я проведу более глубокую диагностику и устранение неполадок. Пока я ещё не разобрался, но подозреваю, что дело в какой-то базовой настройке сети.
Включено ли оранжевое облако? Если CloudFlare используется только как DNS, всё в порядке, но если он находится посередине, вы не сможете заставить Let’s Encrypt работать, что и является целью теста.
Облако Orange отключено. Не хочу больше беспокоить тебя этим, Джей. Это интересная небольшая задача по устранению неполадок, и я разберусь с ней сам.
Почти уверен, что проблема не в репликации DNS, так как я могу получить доступ к сайту с множества устройств по имени хоста (через Wi-Fi, сотовую связь и т. д.). Вернусь сюда с отчетом, если/когда это будет решено.