manu-p
(Manup)
1
こんにちは、
テスト/検証の目的で、自宅の Ubuntu マシンに Discourse をインストールしています。ローカル IP は固定されており、仮に 192.168.1.200 とします。
このマシンは、パブリック IP(仮に A.B.C.D)を持つルーターの背後にあり、フルスタックではありません。
私の意思とは無関係な理由で、フルスタックに変更することができません。そのため、ルーター上の NAT 設定は非常に高いポート番号の範囲に限定されており、443 や 80 は使用できません。
例として、外部ポート 50000(TCP/UDP)を 192.168.1.200 のポート 443 に転送する設定をします。
したがって、パブリック IP A.B.C.D のポート 50000 へのリクエストは、192.168.1.200:443 に転送されるはずです。
サブドメイン名として forum.mondomaine.me を持っており、A レコードと AAAA レコードがパブリック IP A.B.C.D(IPv4)を指すように設定しています。
https://forum.mondomaine.me からパブリック IP A.B.C.D:50000 へのリダイレクトを追加しました。
上記の URL にアクセスすると、A.B.C.D:50000 への転送は確認できますが、192.168.1.200:443 でのリスニングがまだ行われていないため、当然ながら接続が拒否されます。
問題が発生するのは、Discourse を Docker モードでインストールする際、ドメイン構成の確認ステップが失敗する点です。
/!\ このコンピュータのポート 443 は、ホスト名 forum.mondomaine.me を使用してアクセス可能ではないようです。
/!\ http://forum.mondomaine.me(ポート 80)への接続も失敗します。
何らかの解決策や回避策があるはずですが、現時点では見当たりません…
ホームネットワークですか?ISP がトラフィックをブロックしている可能性はありませんか?代わりに VPS を使ってみてはいかがでしょうか?
(編集:上記のリンクされたドキュメントで推奨されている Cloudflare Tunnel を使用してください)
manu-p
(Manup)
4
ご回答ありがとうございます。
これはホームネットワークですか?
最初に書いた通り、自宅の Ubuntu マシンに Discourse をインストールしているので、はい、まさにホームネットワークです。
ISP がトラフィックをブロックしている可能性はありませんか?
パブリック IP がフルスタックではない場合に、まさにそれが問題となります。この段階では、私には何の対策も講じられません。
代わりに VPS を使わないのはなぜですか?
このテストでは、VPS の購入は考えていません。ただ、ご指摘の通り、すでに VPS を保有しているならそれが解決策だったでしょう。その場合は迷わず利用したはずです。
Cloudflare トンネルの利用については、私が直近で確認した限りでは、これほどの手間をかけるには複雑すぎると感じました。それに Cloudflare という点でも…
もしも、Discourse をローカルネットワーク(孤立しているかどうかは別として)に簡単に素早くインストールできるならいいのですが…
どこかにイントラネット用のガイドがあるのは見ていましたが(URL はもう見失ってしまいましたが)、それもかなり重く感じました。特に標準的なインストールと比較すると!
もうやめましょう。これは必須ではありませんし、何時間も費やす気はありません。
改めてご回答いただき、ありがとうございます。
このステップをスキップしてセットアップすることはできませんか?
Jay によるこの投稿で説明されている通り、以下のオプションを使用してポートチェックをスキップできます。
–skip-connection-test
LAN 外部からの接続テストが必要なのでしょうか、それとも開発プロセスの一部として必要なのでしょうか?
もし私の理解が間違っていたら申し訳ありません。
ご自身のネットワーク、ISP が正しくトラフィックを転送していること、そして不審なアクターが自宅ネットワークを乗っ取れないようドアを開けっぱなしにしないよう確認すること——これらすべてを修正するのにかかる時間を考えると、Cloudflare トンネルの使用は、個人的には非常に簡単で明快だと思います。特にホームネットワークではそうです。
pfaffman
(Jay Pfaffman)
7
Discourse では HTTPS が必要です。証明書を取得してインストールする方法が elsewhere に記載されているようにわからない場合は、Cloudflare Tunnel を使用して住宅用インターネットに Discourse をインストールするのが最善策です。
自分自身の証明書をインストールする方法は、Discourse Docker 設定で SSL / HTTPS を許可するが参考になると思います。
manu-p
(Manup)
8
@Andrew_Rowe さん、アドバイスありがとうございます!
いいえ、テストのために LAN 外部からの接続は必要ありません。
そのため、install-discourse を --skip-connection-test オプション付きで実行しました。予想通り、ドメインの検証で停止することなくインストールが進行しました。
(Docker 外で動作している場合は)nginx を停止しておく必要があります。
しかし、無事に Discourse がコンテナ内で起動しました!
ただ…どうやら証明書に問題があるようです。
nginx: [emerg] cannot load certificate "/shared/ssl/forum.mondomaine.me.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)
もちろん、このスレッド に従い、/var/discourse/shared/ssl/forum.mondomaine.me.cer の存在を確認しました。また、.key ファイルや他の 2 つの .me_ecc.cer|key ファイルも問題なく存在しています。
コンテナを再構築しましたが、状況は変わりません。
テスト用のローカルマシンに Discourse をインストールするのは、まさに苦難の道のりだと確信します! 
どうやら推奨されていないようです。
シンプルな解決策が見つからない場合(使いません、CloudFlare は不要なのでその方向は避けます)、これがこの件に関する最後の投稿になると思います。 
manu-p
(Manup)
10
おそらく @merefield さん、詳しい説明をありがとうございます。私が言いたかったことも明確にしておきます。VPS に費用をかける予定はありません。
manu-p
(Manup)
11
あと一点、DISCOURSE_FORCE_HTTPS=true が docker run コマンドに含まれているのを目にしました。そのため、false に変更し、コンテナを再構築して再度実行してみましたが、変化はありませんでした。
Cloudflare 型のトンネルを使用する予定がなく、単に確認したい場合は、dev-install を使用してください。
manu-p
(Manup)
13
ありがとうございます!実際に確認させていただきます。