Let's Encrypt の自動更新と IPv6

確かに、IPv6 の問題と Let’s Encrypt の件は非常に不明確でした。

Discourse を再構築すると、すべて正常に動作し、新しい証明書が発行されました。

しかし、自動的な Let’s Encrypt の更新は機能しませんでした。サイトが実行中の IPv6 経由で到達できず、Let’s Encrypt が .well-known フォルダを検証する際にタイムアウトが発生しました。

また、Docker ホストの設定も確認しましたが、IPv4 の場合のように Docker 内部ネットワークへの ip6tables の転送設定が欠落していました。ip6tables 自体はすべて許可されていたのですが…

Docker ホストの設定で IPv6 を有効化し、デーモンを再起動しましたが、これも解決しませんでした。

@jomaxro

ジョージ、ありがとう。最初の質問ですが、discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub に従ったことを確認できますか?

当社の Digital Ocean の「セルフホスト型」テストサイトの 1 つ(IPv6 が有効なサイト)を確認したところ、SSL 証明書に問題なく更新されたことを確認できました。

はい、私たちが従った手順はそれです。まず手動で Docker をインストールし、その後 discourse-setup を実行しました。

それは2年半ほど前のことです。当初は問題なく動作していましたが、1年後に IPv6 の AAAA レコードを追加したところ、自動更新が機能しなくなり、新しい SSL 証明書を取得するために毎回 discourse rebuild を実行する必要がありました。

自動更新が失敗した時刻のログはありますか?非常に参考になります。

また、公式ガイドから何か変更を加えましたか?追加のリバースプロキシの導入?app.yml の手動編集?ホストシステムのファイアウォール設定?などです。

あなたが疑われているように聞こえないようにしたいのですが、IPv6 を使用している数千件のセルフホストインストールが既に存在していることを考えると、IPv6 サイトで SSL 証明書の更新が失敗しているなら、多くの報告が寄せられるはずです。

私のアップデートでエラーが発生しました

api_key = "a quick brown fox"
fetch("https://api.example.com/data", headers: { 'Authorization' => api_key })

修正にご協力ください。

これは通常、AAAA DNSエントリに問題があったことを意味します。

おそらく、実際にはそのケースだったのでしょう。

私たちはDO上で複数のサイトをIPv6 + Let’s Encryptで問題なくホストしていますので、これはユーザー側の誤操作と思われます。再現手順を特定できる場合は、新しいトピックを開いてください。