Настройка Discourse на AWS EC2 не работает с IPv4 DNS по умолчанию

Привет, сообщество Discourse,

Я новичок в Discourse и только что тестирую установку на экземпляре AWS EC2, следуя инструкции discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. Однако мне не удалось запустить его. Вот проблема, с которой я столкнулся:

Прежде чем покупать все ресурсы, я хотел протестировать сайт без доменного имени, поэтому использовал публичный DNS IPv4 этого экземпляра в качестве имени хоста Discourse и для доступа к сайту, например: https://ec2_ip_address.us-west-1.compute.amazonaws.com/.
Я открыл порты 80 и 443 на экземпляре через группу безопасности и проверил, что эти порты доступны из публичной сети (тестировал с помощью простого сервера на Python).
Но после запуска сервера Discourse с помощью команд ./discourse-setup или ./launcher rebuild app в браузере появляется сообщение «Этот сайт недоступен».

Я запустил утилиту discourse doctor, и она вернула:

Версия Discourse на ec2-ip_address.us-west-1.compute.amazonaws.com: НЕ НАЙДЕНА
Версия Discourse на localhost: НЕ НАЙДЕНА

Я не на 100% уверен, что настройка почты работает, но предполагаю, что доступность сайта — это отдельная проблема, не связанная с почтой.

Может ли кто-нибудь подсказать, чего не хватает, или как отладить эту проблему?

Огромное спасибо!

Добро пожаловать в сообщество Meta Discourse :slightly_smiling_face:

Возможно, это не связано, но я заметил несоответствие здесь:

Привет, Джонатан,

Спасибо за проверку. Я пропустил здесь IP-адрес, но URL должен быть верным.

Статус «Not found» для вашего имени хоста, скорее всего, связан с тем, что сайт ещё не запущен. Пожалуйста, предоставьте больше информации из лога discourse-doctor.

Завершается ли процесс rebuild/bootstrap успешно?

Если экземпляр EC2 недостаточно мощный, то Discourse может работать дольше обычного (в некоторых случаях около 3–5 минут).

Вам следует проверить, завершается ли сборка успешно, а затем с помощью команды docker ps убедиться, что контейнер запущен и прослушивает порты 80 и 443. После подтверждения этого проблема, скорее всего, заключается в группе безопасности AWS, а не в самой установке.

Можете ли вы проверить, что у вас есть доступ к серверу через имя хоста?

Статус Not found для вашего хоста, скорее всего, связан с тем, что сайт ещё не запущен. Вам нужно предоставить больше информации из лога discourse-doctor.

Согласен. Я внимательно изучу лог сборки и проверю, нет ли там ошибок. Как можно отладить ситуацию, если в логе есть ошибка?

Можете ли вы проверить, что доступ к серверу по хосту возможен?

Да, я проверил хост, и порты 80 и 443 доступны через браузер. Я создал простой HTTP-сервер на Python, который отдаёт некоторые файлы, и вижу ответ в браузере.

Вы видите что-нибудь в логах? Что-то вроде

/var/discourse/shared/standalone/logs/var-log/nginx/error.log

Проблема, скорее всего, связана с Let’s Encrypt и AWS. Даже если это ваш собственный домен, при множественных повторных сборках вы могли исчерпать квоту.

Забавно, что вы об этом упомянули. :slightly_smiling_face: Именно это изначально привлекло меня к этой теме. Я помогаю многим людям на https://community.letsencrypt.org и подумал, что эта тема может быть в моей зоне компетенции для помощи. Чтобы применить какие-либо из моих инструментов, мне нужно было бы знать реальные доменные имена.

@ys2843

  • Можешь обновить, что произошло позже? У меня та же самая проблема, я застрял.

Пытаетесь ли вы использовать доменное имя AWS? Не делайте этого. Используйте своё собственное.

Вы смотрели логи?

Если вы выполнили множество сборок, вы также достигнете лимитов Let’s Encrypt.

@pfaffman

Фон: Настройка минимального форума Discourse в качестве доказательства концепции на AWS с целью минимизации затрат.

Вы можете зарегистрировать доменное имя за 3 доллара в Godaddy. Если ваше время стоит больше 3 долларов в час, вам стоит зарегистрировать домен. А если у вас нет 3 долларов на регистрацию домена, значит, вы не можете позволить себе и EC2.

@pfaffman

  • Согласен с вами по поводу ценового вопроса.
  • С технической точки зрения есть ли какие-либо обходные пути???

Конечно! Посмотрите, кто ещё использует доменное имя .amazonaws.com с Let’s Encrypt, и подождите неделю. Если вы не хотите регистрировать домен, следующим шагом, который я бы порекомендовал, будет именно это.