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