Используйте Nginx Proxy Manager для управления несколькими сайтами с Discourse

Вот моя версия этого решения. Я почти сдался, но @tophee дал ссылку на пост, который (!?) написал я сам и который содержал необходимое «магическое» решение! Теперь это простой способ настроить Nginx Proxy Manager для Discourse. Я считаю, что это делает процесс похожим на описанный здесь: Run other websites on the same machine as Discourse - #396.

Установите Nginx Proxy Manager согласно их инструкциям по адресу:

Удалите шаблоны SSL и Let’s Encrypt:

Убедитесь, что следующие строки в вашем файле yml закомментированы или удалены:

## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"

Настройте Discourse для использования сети npm-default.

Если слепо следовать инструкциям по установке Nginx Proxy Manager, будет создана docker-сеть с именем npm_default.

Добавьте этот блок в ваш файл (файлы) yml. Если у вас есть отдельные контейнеры web_only и data, вам нужно добавить это в каждый из них (я не тестировал контейнер mail-receiver). docker_args не должен быть отступом.

docker_args: |
  --network npm_default

Нет необходимости открывать какие-либо порты

Закомментируйте или удалите эти строки из вашего файла yml:

# expose:
#  - "80:80"   # http
#  - "443:443" # https

Затем вы можете пересобрать свой(е) контейнер(ы) и настроить Nginx Proxy Manager следующим образом:

image

Простой (но не обязательно рекомендуемый) способ запустить второй сайт Discourse выглядит так:

cd /var/discourse/containers
cp app.yml othersite.yml
# как-то отредактируйте, как минимум, имя хоста в othersite.yml
./launcher rebuild othersite

Затем добавьте его в NPM, как описано выше, используя othersite вместо app.

Я тестировал это с app.yml плюс двумя контейнерами типа web_only и одним контейнером data, а также отдельным контейнером othersite-redis, который является копией контейнера data, содержащей только шаблоны redis. (Но более простое решение — поместить дополнительный redis в контейнер web_only).

2 лайка