カスタムIPの設定が機能しない?

皆さん、こんにちは。
最近、DebianサーバーでDiscourseをセットアップしようとしたのですが、サイトにアクセスできないという問題が発生しました。ポートを変更してアクセスしようとしましたが、Nginxしか表示されませんでした。そこで問題の原因を突き止め、カスタムネットワークでカスタムIPを設定してネットワークに接続しようとしましたが、アクセスできませんでした。エラーが繰り返し表示されます。以下がそのエラーメッセージです。

./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
x86_64 arch detected.
docker: Error response from daemon: network -i not found.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

以前、hello-worldで試したときはうまくいきました。

docker run -it --network discourse_back --ip 192.168.1.4 hello-world

Hello from Docker!

. . .

この問題を解決する方法について、何かアイデアをお持ちの方はいらっしゃいますか?よろしくお願いします!

これを試してみてはどうでしょうか。

./launcher start app --docker-args '--network discourse_back --ip 192.168.1.4'

実行できたのですが、「Welcome to nginx」と表示されます。しかし、app.yml の

DISCOURSE_HOSTNAME: discourse.simonz.local

にも記載されているホスト名「discourse.simonz.local」を入力しました。何か間違えましたか?

本番環境のディスコースはHTTPSなしでは機能しません。

他のNginxが表示されているメッセージはありませんか?

より高度なことを試す前に、標準的なインストールを機能させるべきです。

このインスタンスをインターネットで利用できるようにするつもりであれば、app.ymlで.localドメインを使用すると問題が発生します。これは自宅でのみ、またはテストでのみ使用するつもりである可能性がありますが、言及する価値があると思いました。

Dockerネットワークが正しく機能し、コンテナがホストマシンからそのIPアドレスで到達可能であると仮定すると、DNSでdiscourse.simonz.localをそのIPアドレスに向ける必要もあります。

現在発生しているのは、ドメインがホストマシンに解決されており、アクセスしようとするときにポートを指定していない(例:「discourse.simonz.local:1234」)ため、Dockerコンテナではなくnginxに到達しているようです。

Discourseを別のポートで利用できるようにしたい場合、通常は別のIPアドレスで利用できるようにする必要はありません。標準ポートで利用できるようにしたい場合、および標準ポートでnginxを利用できるようにしたい場合は、DNSで正しいIPに向けるか、nginxでDiscourseをプロキシする必要があります。

.localドメインは通常、システムが設定されたホスト名に基づいてアナウンスします。Discourseは通常、それを必要としないため、コンテナにはそれを行うためのものが何もない可能性があります。

標準ポート、異なるIP、DNSのルートに進みたい場合は、Discourseの範囲外であり、セットアップはネットワークのさまざまな要因に依存します。

ホスト上でnginxとDiscourseの両方で利用できるようにすることが目標である場合は、上記でリンクしたプロキシアプローチをお勧めします。これも技術的にはサポートされていないインストールですが、より一般的なセットアップであり、より多くの人が支援できるはずです。

標準ポートでのみ機能します。

インターネット経由でアクセスするのではなく、試すにはローカル環境に置くべきです。ポートはほぼ正しいですが、IPアドレスも正しいです。

ポート80で既に何か実行されているのですが、通常のインストールでは使用するIPを変更するオプションが見当たりませんでした。

その変更はすでに元に戻しました。ポート80および443で通常どおり実行されます。

リバースプロキシの動作方法を知っていれば、別のホスト名で実行できます。HTTPSと標準ポートが必要です。

一時的に試すためにローカルでセットアップするだけであれば、nginx と並行して実行しようとするのではなく、仮想マシンを起動するだけで十分です。

仮想マシンには独自の IP を割り当てることができ、おそらく自動的に .local アドレスが割り当てられるため、その中に標準的な Discourse をインストールできます。

完了したら、仮想マシンを破棄すれば、nginx やその他の設定を元に戻す心配もありません。

「いいね!」 1

Docker Compose バージョンを使用していますが、Nginx が含まれており、すでに VM 内にあるようです。しかし、同じ VM で実行しようとしていますが、1 つは ..1.3 (他のサイト) として、もう 1 つは ..1.4 (Discourse) として出力されます。

標準のインストールはすでに完了していることに気づきました。応答先のIPアドレスを変更したいだけです。デフォルトのIPは192.168.1.3ですが、192.168.1.4で応答させたいです。これらのIPアドレスは両方ともデバイスにすでに設定されています。

VMに2つのIPアドレスがある場合、dockerコンテナのIPアドレスを操作する必要はありません。必要なのはファイアウォールルーティングのみです。これにより、…1.3:80/443がホストに、…1.4:80/443がdockerコンテナにルーティングされます。

Linuxの場合、知る限りではiptablesとufwが最も一般的です。そのルーティングの設定方法については、ドキュメントを確認するか、コミュニティで質問する必要があるでしょう。

最終的にDiscourseをインストールしたい場所でのこの種のセットアップをテストする必要がない限り、このトライアルのためには別のVMを実行することをお勧めします。他のHTTP/HTTPSソフトウェアと並行してDiscourseを実行する際の複雑さは、独自のVM内で実行することで解消されます。

とにかくありがとうございました。起動はできたのですが、応答がありません。おそらく何か間違えたのだと思いますが、手伝ってくれてありがとう。また試してみます。新しい結果が得られるかもしれません。皆さん、助けてくれてありがとう。良い一日を ^^