1つのVPSで複数のDiscourseフォーラムをホストするにはどうすればよいですか?

こんにちは!1台のVPSで複数のDiscourseをホストできるか知りたいのですが。初心者ですので、明確な手順を教えてください。よろしくお願いいたします。

はい、可能です!

ただし、これは上級者向けのトピックですので、以下の基本概念を理解している必要があります:

  • リバースプロキシとは何ですか?
  • どのリバースプロキシを使用すべきですか?
  • リバースプロキシ上で仮想ホストをどのように設定しますか?
  • ウェブアプリへのリバースプロキシとして仮想ホストをどのように設定しますか?
  • リバースプロキシと連携するようにウェブアプリをどのように設定しますか?
  • リバースプロキシを使用する際に SSL をどのように設定しますか?

@Aiden12114 さん、これらの概念に精通していますか?

もしそうであれば、問題なく進められます!

残念ながら、そのすべてが何を意味するのかさっぱりわかりません :rofl:

2 つのオプションがあります:

  • マルチサイト – より複雑 Multisite configuration with Docker
  • 複数のコンテナ – やや複雑(上記のようにリバースプロキシなどが必要)、コストがかかります。
    ./discourse-setup スクリプトを使用せずに Discourse をセットアップする手順に従ってください(cp samples/standalone.yml containers/app2.yml)。
    また、volumes の名前を standalone 以外のものに変更してください。

この件に興味がある方、または意思決定をされている方に向けて、いくつかの技術的な事実を共有することが重要だと考えます。

  • 1 つの Discourse コンテナ内で複数の「サイト」を運用する、あるいは
  • 各 Discourse「サイト」に対して複数のコンテナを用意する。

「単一コンテナ・マルチサイト」アプローチを採用し、5 つ(あるいは 10 つ)の Discourse サイトを稼働させている場合、コンテナを再構築したり、何らかの原因でコンテナに問題が発生したりすると、5 つ(あるいは 10 つ)の Discourse サイトが同時に停止(ダウン)してしまいます。これは、すべての「サイト」を 1 つのコンテナが支えているためです。

一方、「複数コンテナ」アプローチを採用し、5 つ(あるいは 10 つ)の Discourse サイトを稼働させている場合、特定のサイトのコンテナを再構築したり、何らかの原因でそのサイトのコンテナに問題が発生したりしても、影響を受けるのは 1 つの Discourse サイトのみです。これは、1 つの「サイト」(当社の場合はデータコンテナとアプリコンテナをサイトごとに別々に運用しているため、厳密には 2 つ)を 1 つのコンテナが支えているためです。

さらに、Discourse が推奨する Docker ストレージドライバ(overlay2)を使用している場合、Docker は各コンテナの読み取り専用レイヤをオーバーレイして共有します。そのため、各コンテナに固有なのはログファイルやキャッシュなどのための薄い読み書き用オーバーレイレイヤのみとなり、OverlayFS の仕組みにより、複数のコンテナを使用してもディスク容量の増加はごくわずかです。

Docker のオーバーレイドライバの仕組み(コンテナ間でのライブラリ共有など)について詳しく知りたい場合は、以下のリンクをご参照ください。

もちろん、どちらのアプローチを採用するかは、各システム管理者の判断に委ねられます。上記の理由(および今後議論される予定の理由)に基づき、当社は常にマルチコンテナアプローチを選択しています。

参考になれば幸いです。