Cloudflare Tunnels — Настройка Discourse не распознает имя хоста (порт недоступен)

У меня корректно запущен демон cloudflared, и я использовал его для множества задач (то есть туннель правильно установлен на сервере), но у меня возникают проблемы с тем, чтобы скрипт настройки Discourse (./discourse-setup) распознал мое доменное имя для экземпляра Discourse.

  • Я использую biohacking.forum в качестве доменного имени для моего экземпляра.
  • Вот моя конфигурация Cloudflare Tunnel для biohacking.forum:
  • Я также пробовал установить тип сервиса как HTTPS.
  • Я настраиваю Discourse на сервере Ubuntu LTS.
  • Я выполнил следующие команды в указанном порядке:
  1. sudo mkdir /var/discourse
  2. sudo git clone GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub /var/discourse
  3. cd /var/discourse
  4. sudo ./discourse-setup
  5. Появляется запрос на ввод доменного имени, я ввожу biohacking.forum
  6. Отображается следующее сообщение:
Hostname for your Discourse? [discourse.example.com]: biohacking.forum

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

This suggests that biohacking.forum resolves to some IP address that does not reach this 
machine where you are installing discourse.

The first thing to do is confirm that biohacking.forum resolves to the IP address of this server.
You usually do this at the same place you purchased the domain.

If you are sure that the IP address resolves correctly, it could be a firewall issue.
A web search for "open ports YOUR CLOUD SERVICE" might help.

This tool is designed only for the most standard installations. If you cannot resolve
the issue above, you will need to edit containers/app.yml yourself and then type

./launcher rebuild app

Что мне нужно сделать, чтобы этот этап заработал? Пожалуйста, дайте знать, если потребуется дополнительная информация. Спасибо!

Эй, у тебя стоит серое облако (только DNS) для записи «A» перед запуском ./discourse-setup?

Я не использую стандартную A-запись, я использую Cloudflare Tunnels. Вот пример сервиса, который работает идеально на моём сервере (с Cloudflare Tunnels), и соответствующая конфигурация:

Сервис: Ghost CMS
ПОРТ: 8085:2368 (8085 — хост, 2368 — сервис)
ИМЯ ХОСТА: joshuahabka.com
Настройка Cloudflare Tunnel:

Оранжевая иконка Cloudflare включена, так как используется Cloudflare Tunnels, но для Discourse доступ должен выглядеть как через обычный порт. У меня развернуто более 40 сервисов, доступных через веб, и Discourse — первый, с которым у меня возникли ошибки.

Пожалуйста, дайте знать, если потребуется дополнительная информация!

Так что для Discourse, я предполагаю, порт будет:
443:443 (хост:сервис), поэтому у меня была первоначальная настройка туннеля Cloudflare, как показано выше

Привет, @joshhabka :waving_hand:
Возможно, эта тема поможет вам, если вы ещё не видели её:

Привет, Лилли, приведённое выше руководство мне не помогло, я всё ещё получаю ту же ошибку, хотя конфигурация моего туннеля Cloudflare указана как http://localhost:80, как и сказано. Я всё ещё застрял на:

starserver@Starserver:/var/discourse$ sudo ./discourse-setup 
Ports 80 and 443 are free for use
'samples/standalone.yml' -> 'containers/app.yml'
./discourse-setup: line 261: 4
scaling*                 2: syntax error in expression (error token is "scaling*                 2")

Hostname for your Discourse? [discourse.example.com]: biohacking.forum

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

This suggests that biohacking.forum resolves to some IP address that does not reach this 
machine where you are installing discourse.

The first thing to do is confirm that biohacking.forum resolves to the IP address of this server.
You usually do this at the same place you purchased the domain.

If you are sure that the IP address resolves correctly, it could be a firewall issue.
A web search for "open ports YOUR CLOUD SERVICE" might help.

This tool is designed only for the most standard installations. If you cannot resolve
the issue above, you will need to edit containers/app.yml yourself and then type

./launcher rebuild app

Пожалуйста, подскажите, как это исправить.

Отключение «Всегда использовать HTTPS» — перенаправление всех запросов со схемой «http» на «https». Это применяется ко всем http-запросам к зоне — приводит к тому, что порт 80 работает успешно, а порт 443 — нет.

Включение правила страницы для перенаправления на HTTPS также приводит к сбою как порта 80, так и 443, но если я его не использую, то порт 443 не работает, а порт 80 работает.

Вы не следуете инструкциям.

Использовать discourse-setup можно только для создания файла yml.

Спасибо, теперь я застрял здесь:

FAILED
--------------------
Pups::ExecError: /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end' failed with return #<Process::Status: pid 134 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"tag"=>"precompile", "cmd"=>["/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_SMTP_ADDRESS\"] == \"smtp.example.com\"; puts \"Aborting! Mail is not configured!\"; exit 1; end'", "/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_HOSTNAME\"] == \"discourse.example.com\"; puts \"Aborting! Domain is not configured!\"; exit 1; end'", "/usr/local/bin/ruby -e 'if (ENV[\"DISCOURSE_CDN_URL\"] || \"\")[0..1] == \"//\"; puts \"Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts.\"; exit 1; end'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** пожалуйста, прокрутите вверх и найдите более ранние сообщения об ошибках — их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.

Вам нужно отредактировать файл YML и ввести учётные данные SMTP

Всё завершено, сейчас всё в норме. Я бы добавил примечание в инструкцию по самостоятельной установке Cloudflare Tunnel, указав, что пользователям необходимо отредактировать YAML-файл, чтобы добавить свои настройки SMTP, имя хоста, адреса электронной почты и т. д.

Спасибо!