Настройка пользовательского IP не работает?

Всем привет,
недавно я пытался установить Discourse на свой сервер Debian. Всё шло нормально, за исключением того, что я не мог получить доступ к сайту, так как попытался изменить порт для доступа к нему, но отображался только nginx. Я разобрался с этой проблемой, затем попробовал настроить собственный IP-адрес с собственной сетью, которая должна указывать на мою сеть, но не смог получить доступ — постоянно выдавались ошибки. Вот ошибка, которую я получаю:

 ./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
x86_64 arch detected.
docker: Error response from daemon: network -i not found.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

Раньше я также пробовал запускать hello-world, и это работало:

docker run -it --network discourse_back --ip 192.168.1.4 hello-world

Hello from Docker!

. . .

У кого-нибудь есть идея, как это исправить? Заранее спасибо!

Попробуйте, возможно, это:

 ./launcher start app --docker-args '--network discourse_back --ip 192.168.1.4'

Итак, я наконец запустил его, но теперь появляется «Welcome to nginx», хотя я ввёл свой hostname «discourse.simonz.local» (он также указан в app.yml:

DISCOURSE_HOSTNAME: discourse.simonz.local

Неужели я что-то сделал не так?

Работа продакшн-дискурса невозможна без HTTPS.

Возможно, у вас есть другой nginx, который показывает это сообщение?

Прежде чем пробовать что-то более сложное, убедитесь, что стандартная установка работает корректно.

Если вы планируете сделать этот экземпляр доступным в интернете, использование домена .local в файле app.yml приведёт к ошибкам. Возможно, вы собираетесь использовать его только дома или исключительно для тестирования, но я просто хотел об этом упомянуть.

При условии, что сетевая конфигурация Docker работает корректно и контейнер доступен по указанному IP-адресу извне хост-машины, вам также потребуется настроить DNS так, чтобы домен discourse.simonz.local указывал на этот IP-адрес.

Похоже, что происходит следующее: домен разрешается в адрес хост-машины, а вы не указываете порт (например, discourse.simonz.local:1234) при попытке доступа к нему. В результате запрос попадает в nginx, а не в контейнер Docker.

Если вы хотите, чтобы Discourse был доступен на другом порту, скорее всего, вам не нужен отдельный IP-адрес. Если же вы хотите, чтобы он был доступен на стандартном порту одновременно с nginx на стандартном порту, вам потребуется либо настроить DNS так, чтобы он направлял запросы на правильный IP-адрес, либо использовать nginx в качестве прокси для Discourse.

Домены .local обычно объявляются системой на основе настроенного имени хоста. У Discourse обычно нет необходимости делать это самостоятельно, поэтому в контейнере может не быть соответствующей функциональности.

Если вы хотите использовать стандартный порт, отдельный IP-адрес и маршрутизацию через DNS, это выходит за рамки поддержки Discourse, и настройка будет зависеть от различных факторов вашей сети.

Если ваша цель — просто иметь доступ к чему-либо через nginx, а также к Discourse на одном хосте, я рекомендую использовать описанный выше подход с прокси. Хотя это также технически не поддерживаемый способ установки, это более распространённая конфигурация, и больше людей смогут помочь с её настройкой.

Это будет работать только со стандартными портами.

к нему не следует обращаться через интернет; для проверки его следует запускать в локальной среде. Порты настроены верно, IP-адрес также указан правильно.

Разве у меня уже может что-то работать на порту 80? Я не видел варианта изменить IP-адрес, который следует использовать при обычной установке.

Я уже отменил это изменение, теперь оно работает на обычных портах 80 и 443

Если вы знаете, как настроить обратный прокси, вы можете запустить его на другом имени хоста. Требуется HTTPS и стандартные порты.

Если вы настраиваете это локально только временно для тестирования, лучше запустить виртуальную машину, чем пытаться настроить её параллельно с nginx.

Виртуальной машине можно назначить собственный IP-адрес; она, скорее всего, автоматически получит адрес в домене .local, и вы сможете выполнить стандартную установку Discourse внутри неё.

После завершения работы просто удалите виртуальную машину, и вам не придётся беспокоиться о возврате изменений в nginx или в чём-либо ещё.

Я использую версию Docker Compose, похоже, что в ней уже есть Nginx, и она работает внутри виртуальной машины. Однако я пытаюсь запустить её на той же виртуальной машине, но одна из них отображается как ..1.3 (мой другой сайт), а другая — как ..1.4 (Discourse).

Я только что понял, да, я уже выполнил стандартную установку. Я просто хочу изменить IP-адрес, на который он реагирует. Мой текущий IP-адрес по умолчанию — 192.168.1.3, но я хочу изменить его на 192.168.1.4. Оба этих IP-адреса уже настроены на устройстве.

Если у виртуальной машины (ВМ) два IP-адреса, вам не нужно ничего делать с IP-адресом контейнера Docker; вам просто нужна маршрутизация через брандмауэр, чтобы …1.3:80/443 направлялся на хост, а …1.4:80/443 — в контейнер Docker.

Если это Linux, то, насколько мне известно, наиболее распространённым программным обеспечением являются iptables и ufw. Скорее всего, вам потребуется обратиться к документации или задать вопрос в их сообществах, чтобы узнать, как настроить такую маршрутизацию.

Однако, если вам не нужно тестировать подобную конфигурацию для того места, где вы в конечном итоге планируете установить Discourse, я всё же рекомендую запустить для этого теста вторую ВМ. Все сложности запуска Discourse вместе с другим ПО, работающим по протоколам HTTP/HTTPS, исчезнут, если он будет работать в собственной ВМ.

Спасибо в любом случае. Я смог запустить, но ответа не получаю. Наверное, я что-то напутал. Но спасибо за помощь. Попробую в другой раз, может, тогда получится. Всем спасибо за поддержку и хорошего дня! ^^