NPMリバースプロキシの背後にあるUNRAID Ubuntu Server VMにインストールされたDiscourseがホスト名を解決しない

皆さん、こんにちは!色々な投稿を読みましたが解決しなかったので、問題解決のために私の現在のセットアップを詳しく説明することにしました。誰かフィードバックをくれる人がいるかもしれません。

現在、Unraidサーバーを使用しています。UnraidはDockerコンテナとVMをホストしています。Dockerコンテナで実行されているNginx Reverse Proxy Manager (NPM) があり、私が実行している他のすべてのDockerコンテナのリバースプロキシを処理しています。ファイアウォールは、ポート80/443のすべてのWANトラフィックをNPMに送信するように設定されており、NPM内でトラフィックをコンテナにリダイレクトしています。

以下のガイドに従いました: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

これはクラウドサーバーへのインストールのためのものですが、私の場合はセルフホストのベアメタルマシンです。

System information as of Sun Jan 28 07:35:54 AM UTC 2024

  System load:              0.5126953125
  Usage of /:               45.9% of 13.16GB
  Memory usage:             6%
  Swap usage:               0%
  Processes:                125
  Users logged in:          0
  IPv4 address for docker0: 172.17.0.1
  IPv4 address for enp1s0:  10.30.20.150

UnraidでVMを起動し、Ubuntu Serverをインストールし、静的IPアドレスを設定し、Dockerをインストールし、Discourseをダウンロードしました。セットアップを実行すると、次のエラーが発生します。

Hostname for your Discourse? [discourse.example.com]: forum.mydomain.net

Checking your domain name . . .
WARNING: Port 443 of computer does not appear to be accessible using hostname:
WARNING: Connection to  (port 80) also fails.

This suggests that forum.mydomain.net resolves to some IP address that does not reach this
machine where you are installing discourse.

The first thing to do is confirm that forum.mydomain.net resolves to the IP address of this server.
You usually do this at the same place you purchased the domain.

If you are sure that the IP address resolves correctly, it could be a firewall issue.
A web search for "open ports YOUR CLOUD SERVICE" might help.

This tool is designed only for the most standard installations. If you cannot resolve
the issue above, you will need to edit containers/app.yml yourself and then type

./launcher rebuild app

NPMコンテナから、静的IPアドレス10.30.20.150のUbuntu VMにpingを送信できます。NPMの設定も、HTTPS 10.30.20.150ポート443およびHTTPポート80をターゲットするように設定しましたが、うまくいきません。セットアップが失敗すると、VM内のDiscourseコンテナが閉じられるようです。

これに対する回避策はありますか?
ファイアウォールのポートを編集してリバースプロキシをバイパスし、VMに直接ターゲットして証明書を取得してコンテナを実行できるようにし、その後、リバースプロキシを使用するようにconfig.ymlを編集できるでしょうか?
SSL証明書を要求せず、ポート80で実行し、NPM経由でSSL証明書を取得するようにインストールを編集できますか?

最後に、いくつかの投稿でDiscourseの「本番」バージョンと「開発」バージョンがあることを見ました…開発バージョンはローカルポートでHTMLを実行できるようです。これが本当なら、すべてをリバースプロキシの後ろに簡単に配置できると思いますか?読んだ限りでは、本番パッケージは更新が容易で、パフォーマンスの向上が期待できるようです。

この件について、助け、フィードバック、または提案をいただけると大変助かります。

これが、ここでサポートされている唯一の本番環境インストールです。

しかし、すでにリバースプロキシを使用しているあなたの状況には適切ではないと確信が持てません。

Discourseのベースイメージを調査し、独自のカスタムコンポジションをリバースエンジニアリングすることを検討するかもしれません。

https://hub.docker.com/r/discourse/base/

「いいね!」 1

app.yml でポート 80 および 443 への参照を削除して # を追加できますか?

そのファイルは /var/discourse/containers にありますか? ディレクトリに cd できません。「アクセスが拒否されました」と表示されます。

したがって、この基本的な概念は、DiscourseのベースDockerファイルに編集を加え、パッケージに含まれるリバースプロキシのインストール/設定に関する行を削除することになりますか?

いいえ、完全にカスタムのDocker Compose(またはオーケストレーションに使用しているもの)を作成し、Discourse用のカスタムDockerfileを使用することをお勧めします。

私はこれを一度もやったことがなく、少し威圧的に聞こえます。どこから始めればよいのか全く分かりません。私が進んでいる道を以前に通った人がいて、すでに修正を完了して公開した人がいるかどうか疑問に思います。

ここの人が行ったことと同様のことを行うことで、リバースプロキシを分離してインストールを完了できるか、または独自のDockerコンテナで実行されている外部リバースプロキシに正しく解決できるか疑問に思いますか?

「いいね!」 2

これはシステム管理の高度な部類ですが、Docker Composeは非常にクールなレゴで遊ぶようなもので、見た目ほど難しくなく、ウェブ上にはたくさんの助けがあります。

非常に transferable なスキルを開発する素晴らしい学習体験になるでしょう。ぜひ挑戦してください!

あなたのリンクも、試してみるのに良い場所のようです。

「いいね!」 2

はい、それです。

そこまで簡単ではありません。私がこれを行ったとき、イメージをビルドし、リポジトリにプッシュしてから起動するために、ランチャーを使用しました。その後、アセットをプリコンパイルしたり、データベースを移行したり、その他いくつかのことを行う手段も必要になります。

「他のウェブサイトを実行する」方法に従うのがおそらく最善でしょう。

「いいね!」 3

ええ、簡単ではありませんが、クライアントでかなり良いDocker Composeソリューションを扱ったことがあります。そこにはlauncherは一切ありませんでした!

DCを使用したプライベートクラウドの開発インストールも持っています…

「いいね!」 2