Discourseで複数のサイトを管理するためにNginx Proxy Managerを使用する

これが私のバージョンです。ほぼ諦めかけたところ、@tophee さんが私が(!?)書いた投稿へのリンクを紹介してくれ、必要な魔法を提供してくれたのです!これで Nginx Proxy Manager を Discourse 用に設定する直感的な方法ができました。これは Run other websites on the same machine as Discourse - #396 と同様のものになると思います。

公式の指示に従って Nginx Proxy Manager をインストール

SSL と Let’s Encrypt テンプレートを削除

yml ファイルの以下の行がコメントアウトされているか、削除されていることを確認してください。

## Uncomment these two lines if you wish to add Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"

Discourse に npm-default ネットワークを使用させる

Nginx Proxy Manager のインストール手順をそのまま実行すると、npm_default という名前の Docker ネットワークが作成されます。

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

2 番目の Discourse サイトを起動する簡単な(必ずしも推奨されるわけではありませんが)方法は以下の通りです。

cd /var/discourse/containers
cp app.yml othersite.yml
# 最低でも othersite.yml のホスト名を編集
./launcher rebuild othersite

その後、上記と同様に NPM に追加し、app の代わりに othersite を使用します。

私は app.yml に加えて 2 つの web_only 型コンテナ、単一の data コンテナ、そして redis テンプレートのみを含む data コンテナのコピーである個別の othersite-redis コンテナでテストしました。(ただし、より簡単な解決策として、追加の redis を web_only コンテナに配置することもできます)。

「いいね!」 2