Вот моя версия этого решения. Я почти сдался, но @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 следующим образом:

Простой (но не обязательно рекомендуемый) способ запустить второй сайт 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).