Не удалось подключиться к установке Discourse

Пытаюсь выполнить чистую установку Discourse на физическом сервере OVH под управлением Fedora Server 38. Установка прошла успешно, но я не могу подключиться к нему, используя указанное в файле app.yml имя хоста forums.dogsrv.dev.

Межсетевой экран OVH Edge отключен, firewalld отключен, iptables отключен, DNS разрешает имя корректно. Не знаю, что еще проверить в данной ситуации. Буду признателен за любые идеи.

Вы можете посмотреть файл /var/discourse/shared/standalone/log/var-log/nginx/production.log. Я предполагаю, что вы получили ограничение скорости от Let’s Encrypt, потому что DNS или что-то другое помешало выдаче сертификата.

Если это так, вы можете подождать неделю или использовать другое поддоменное имя (например, forum вместо forums).

Вы запускали discourse-setup?

Странно, но в этой папке у меня нет файла production.log, однако есть error.log, который содержит только эту ошибку снова и снова:

2023/06/02 07:27:34 [emerg] 289163#289163: не удалось загрузить сертификат "/shared/ssl/forums.dogsrv.dev.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

Действительно, при проверке этот файл сертификата оказался пустым.

Я изначально запускал discourse-setup, но он всегда завершался ошибкой:

Hostname for your Discourse? [forums.dogsrv.dev]:

Checking your domain name . . .
WARNING: Port 443 of computer does not appear to be accessible using hostname:  forums.dogsrv.dev.
WARNING: Connection to http://forums.dogsrv.dev (port 80) also fails.

Я предположил, что это связано с тем, что домен верхнего уровня .dev по умолчанию включён в список предзагрузки HSTS от Google, поэтому я вручную настроил app.yml и выполнил ./launcher rebuild app, что, казалось, сработало нормально.

Я также пробовал изменить поддомен на forum и снова пересобрал приложение, но проблема осталась, и я получаю ту же ошибку, что и раньше, только вместо forums используется forum.

Открыты ли у вас порты в брандмауэре за пределами Docker?

Да, firewalld полностью отключен, как и iptables. Если я вручную установлю и настрою Apache или Nginx непосредственно на сервере, то смогу убедиться, что трафик на портах 80 и 443 разрешён. Однако из-за HSTS необходимо включить переадресацию HTTPS для всех HTTP-запросов, а также иметь действующий SSL-сертификат, что в данный момент и является проблемой.

Возможно, вам стоит открыть порты 80 и 443?

По-прежнему похоже, что входящий трафик чем-то блокируется. Вы используете Cloudflare для DNS?

Нет, используем Google.

Если тест, который выполняет Discourse-setup, завершается неудачей, необходимо найти объяснение этой ситуации. Очевидно, что проблема заключается в том, что Let’s Encrypt не может выдать сертификат.

Поскольку вы умеете устанавливать Nginx и Apache, попробуйте вручную получить сертификат через Let’s Encrypt. Однако, судя по всему, порт 80 и/или 443 заблокирован.

Итак, проблема заключалась в том, что утилита discourse-setup некорректно работает с новыми версиями netcat, как показано в этом pull-запросе: https://github.com/discourse/discourse_docker/pull/697
Удаление флага -p исправляет работу discourse-setup: она перестает ложно сообщать о невозможности установить соединение на портах, завершает работу и успешно пересобирает приложение. Теперь я могу безупречно подключиться к своей установке.
Спасибо за помощь.

Рад, что у вас получилось! Не совсем понимаю, почему пересборка не могла получить сертификат, так как я думал, что вы выполните пересборку и пропустите этап discourse-setup.