Самостоятельная установка за IP-адресом, не поддерживающим full-stack

Здравствуйте,

В целях тестирования/валидации я устанавливаю Discourse на домашний компьютер под управлением Ubuntu, локальный IP-адрес которого зафиксирован, скажем, как 192.168.1.200.
Компьютер находится за роутером с публичным IP-адресом, скажем, A.B.C.D, который не является статическим (full-stack). :roll_eyes:

По независящим от меня причинам я не могу изменить его на статический. Поэтому я ограничен в настройке NAT на роутере диапазоном портов, входящих в очень высокие значения, то есть ни 443, ни 80.

Для примера, предположим, что я открываю входящий порт 50000 (TCP/UDP) и перенаправляю его на 192.168.1.200:443.

По идее, запрос, приходящий на публичный IP A.B.C.D на порт 50000, должен перенаправляться на 192.168.1.200:443.

У меня есть поддомен, скажем, forum.mondomaine.me, с записями A и AAAA, указывающими на публичный IP A.B.C.D (для IPv4).

Я добавил перенаправление на уровне DNS с https://forum.mondomaine.me на мой публичный IP A.B.C.D:50000.

Если я пытаюсь открыть указанный URL, я вижу изменение на A.B.C.D:50000, и, конечно же, отказ, поскольку (пока) ничего не слушает порт 192.168.1.200:443.

Здесь начинается самое сложное: при установке Discourse (в режиме Docker) на мою машину этап проверки конфигурации домена завершается ошибкой:

/!\ Порт 443 этого компьютера, по-видимому, недоступен по имени хоста: forum.mondomaine.me
/!\ Подключение к http://forum.mondomaine.me (порт 80) также не удалось.

Должно существовать решение или обходной путь, но пока я не вижу его…

Это домашняя сеть? Возможно, ваш провайдер блокирует трафик? Почему бы не использовать VPS?

(РЕДАКТИРОВАНО: Используйте Cloudflare Tunnel, рекомендованный в связанном выше документе)

Спасибо за ответы.

Это домашняя сеть?

Устанавливаю Discourse на машину Ubuntu у себя дома, как я и писал изначально, да, это именно домашняя сеть.

Возможно ли, что ваш провайдер блокирует трафик?

Именно так обстоит дело, когда публичный IP-адрес не является полноценным (full-stack). И на данном этапе я ничего не могу с этим поделать.

Почему бы не использовать вместо этого VPS?

Потому что для этого теста я не планирую покупку VPS. Но я согласен: VPS был бы решением, если бы он уже был у меня под рукой. И я бы не колебался.

Что касается использования туннеля Cloudflare, из того, что я только что обнаружил, это кажется мне слишком громоздким решением ради столь малого… Да и Cloudflare…

Если бы только установка Discourse в изолированной локальной сети (или нет) была бы такой же простой и быстрой…

Я видел, что где-то есть руководство (адрес которого я уже потерял) для интранета, которое тоже показалось мне довольно тяжеловесным, особенно по сравнению со стандартной установкой!

Оставим это, это не жизненно важно, я не хочу тратить на это часы. :laughing:

Еще раз спасибо за ответы.

Можно ли при настройке пропустить этот шаг?

Как объясняется в этом сообщении от Jay, проверку порта можно пропустить, используя:

–skip-connection-test

Вам требуется подключение извне вашей локальной сети для тестирования или в рамках разработки?

Извините, если я неправильно понял суть проблемы.

За то время, которое уйдёт на настройку всего между вашей собственной сетью, правильной пересылкой трафика вашим провайдером и обеспечением того, чтобы вы не оставляли открытых дверей для злоумышленника, желающего захватить вашу домашнюю сеть, использование туннелей Cloudflare кажется довольно простым и понятным решением, на мой взгляд. Особенно в домашней сети.

Discourse требует использования HTTPS. Если вы не знаете, как получить и установить сертификат, как описано в других материалах, лучший вариант — установить Discourse в домашней сети с помощью Cloudflare Tunnel.

Вот как установить собственный сертификат: Разрешить SSL/HTTPS для вашей конфигурации Discourse в Docker.

Спасибо @Andrew_Rowe за подсказку!

Нет, мне не нужно подключение извне моей локальной сети для тестирования.

Поэтому я запустил install-discourse с флагом --skip-connection-test, и, как и ожидалось, установка продолжилась, не застревая на проверке домена.

Не забудьте остановить nginx, если он уже запущен (вне Docker).

Но всё в порядке! Discourse запущен в своём контейнере!

Однако… очевидно, у нас теперь проблема с сертификатом.

nginx: [emerg] cannot load certificate "/shared/ssl/forum.mondomaine.me.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Я, конечно, следовал этой теме и проверил наличие файла /var/discourse/shared/ssl/forum.mondomaine.me.cer — он есть, как и .key, а также два других файла с расширениями .me_ecc.cer и .key.

Я пересобрал контейнер, но результат тот же.

Подтверждаю: установка Discourse на локальный тестовый сервер — это настоящий квест! :joy:

Очевидно, это не поощряется.

И поскольку простого решения нет (нет, я не буду использовать CloudFlare, не стоит идти по этому пути, спасибо), думаю, это будет моё последнее сообщение по этой теме. :grinning_face_with_smiling_eyes:

Вы на самом деле не покупаете его. Вы арендуете его.

Безусловно, @merefield, спасибо за уточнение. Я также уточню, что имел в виду: я не планирую тратить деньги на VPS.

Ещё один момент: я заметил, что в команде docker run было указано DISCOURSE_FORCE_HTTPS=true, поэтому я изменил значение на false и перезапустил контейнер после его пересборки.

Никаких изменений.

Если вы не планируете использовать туннель в стиле Cloudflare и просто хотите ознакомиться с функционалом, используйте dev-install.

Спасибо! Я действительно посмотрю на это.