LightsailでのDiscourseデプロイ:「接続拒否」

こんにちは。

先日、install-cloud ガイドに従って、AWS Lightsail インスタンスに Discourse をインストールしました。指示に注意深く従い、最初から数回やり直しましたが、残念ながらフォーラムにアクセスしようとすると「接続拒否」エラーが発生します。

従った手順は以下の通りです。

  1. 新しい Lightsail インスタンスを作成する
  2. 静的 IP アドレスを割り当てる
  3. ポート 443 を開く
  4. サブドメイン (forum.procedural.audio) を IP アドレスに向ける
  5. ガイドの Discourse インストールコマンドに従う (LETS_ENCRYPT のメールアドレスを指定するコマンドを含む)
  6. フォーラムを参照する… 接続拒否

./discourse-doctor を実行すると、forum.procedural.audio の Discourse バージョンが NOT FOUND と出力されます。Discourse からのテストメールは正常に受信できます。

ping forum.procedural.audio を実行してもデータは返ってきませんが、正しい静的 IP は検出されます。

ログで以下のエラーに気づきました。

$ ./launcher logs app
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
(さらに多数繰り返される)

したがって、問題は SSL に関連しているようですが、修正方法がわかりません。shared/standalone/ssl/ ディレクトリには 4 つのファイルがあります。

  1. forum.procedural.audio.cer (ファイルは空です)
  2. forum.procedural.audio.key (ファイルにはキーが含まれています)
  3. forum.procedural.audio_ecc.cer (ファイルは空です)
  4. forum.procedural.audio_ecc.key (ファイルにはキーが含まれています)

.cer ファイルが空であることが問題の一部なのかどうかはわかりません。また、ログでは /shared/standalone/ssl/* ではなく /shared/ssl/* のファイルを探していることが示されていることも気になります。これも関連性があるようです。

ご協力ありがとうございます。

「いいね!」 1

問題は、Lightsailインスタンスが外部から接続できないことです。それがdiscourse-doctorが伝えていたことです。ポート443のみを開いていた場合、おそらくこれが原因です。

証明書がない限り、443のHTTPSは機能しません。Let’s Encryptが通信の問題により登録できなかったため、証明書がなく(そしてそれらの証明書ファイルは空です)。

静的な外部アドレスを割り当て、ポート80も開いたと仮定して、もう一度試してください。HTTP経由で接続するクライアントをリダイレクトできるように、80も開く必要があります。

確認しましたが、このホスト名は無効です。まずそれを修正する必要があります。

forum.procedural.audio を解決できません: Unknown host
「いいね!」 1

デフォルトでは、Lightsail インスタンスではポート 22 と 80 が開いています。そのため、ポート 80 を開くことが解決策になるとは思いません。

申し訳ありませんが、もう少し詳しく説明していただけますか?ホスト名が無効であるとは、どのような意味ですか?

forum.procedural.audio はDNSに表示されません。言い換えれば、ホスト名がIPに解決されません。CloudFlareとGoogle DNSの両方で確認しましたが、どちらもそのホスト名を見つけることができませんでした。私が解決できない場合、discourse-doctorも解決できません。

サーバーの「a」レコードを作成したのはいつですか?レプリケーション時間を確認しましたか?

サーバーの構築を再度試みる前に、これを修正してください。Let’s Encryptは登録/更新の試行回数が限られており、上限に達すると7日間証明書を取得できなくなります。

「いいね!」 1

Namecheap でドメインを 2 日間所有しており、Route 53 を指しています(Route 53 は .audio ドメインをサポートしていないため、間接的なレイヤーが追加されています)。メインのドメインエントリは、この 2 日間のほとんどの間存在していました。サブドメインレコードは、約 1 時間前から存在していました。

これが問題だった場合、インスタンスから ping forum.procedural.audio を実行すると、IP アドレスを解決できないはずです。しかし、IP は解決されます。

それは外部からは解決されません。Let’s Encrypt は、サーバーが主張通りであることを確認するために DNS を使用します。

ping forum.procedural.audio                                                                                                               ✔  1909  10:59:47
ping: forum.procedural.audio を解決できません: Unknown host

うーん。https://dnschecker.org/#A/forum.procedural.audio を見ると、多くの場所で名前が解決されているので、伝播の問題かもしれません。1.1.1.1 または 8.8.8.8 に問い合わせても、応答がありません。ただし、NS-337.AWSDNS-42.COM は応答するので、しばらく待つ必要があるかもしれません。

しかし、discourse-setup はアドレスを検索して、自分自身に接続できるかどうかを確認しようとします。それが失敗している場合、通常は DNS の問題か、ポートが開いていないかのどちらかです。

「いいね!」 1

こんにちは。

約1週間経ちますが、フォーラムをデプロイできません。他に何かアイデアはありますか?ポート80と443は開いています。DNSの問題ではないと思います – discourse-doctorは、localhost(forum.procedural.audioだけでなく)でdiscourseのバージョンを見つけられません。何か助けがあれば幸いです。

nslookup.exe forum.procedural.audio
Server:  dns.google
Address:  8.8.8.8

*** dns.google can't find forum.procedural.audio: Server failed

これはDNSの問題です。

「いいね!」 3

Hmmm https://dnschecker.org/#A/forum.procedural.audio は 32 のうち 31 の場所に伝播したことを示しています。DNS レコードが 144 時間以上伝播するというのは聞いたことがありません。しかし、https://www.nslookup.io/domains/forum.procedural.audio/dns-records/#cloudflare を確認すると、権威ネサーバーは解決できるものの、Cloudflare と Google は解決できないことがわかります。

だから、私が間違っていたのだと思いますが、この件についてどうすればよいかわかりません。discourse-doctor が localhost で discourse のバージョンを見つけられない理由がわかりません。

DNSの問題ですね。

再構築を何度も行っている場合は、Let’s Encrypt のレート制限の問題です。

「いいね!」 1