@pfaffman さん、元の投稿の編集で to: 行に誤った + があり、正規表現が壊れています。削除する必要があります。
また、以下の段落は意味が通らなくなったため、編集が必要です。
置き換える必要があるパターンは 2 つあり、1 つは --keylength で終わり、もう 1 つは --fullchainpath で終わります (実際のファイルでは、元のドメインがこれらのスイッチの前にあります)。(サブ)ドメイン (および -d で先行する追加のサブドメイン) を入力し、次に app.yml のフックセクション (ファイルの末尾近く) に以下を追加します。
以下を提案します。
この投稿の domain1 と domain2 を使用して、必要なコードを生成します。domain1 は元のドメイン、domain2 は追加したいドメインです。結果の after_ssl: ブロックを app.yml の hooks: セクションに追加し、launcher rebuild app を実行してください。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2025 年 5 月 3 日午前 9:28
157
おっと。プラス記号を削除して、テキストを微調整しました。コンピューターで確認できるときに、もう一度確認します。
@textkitさん 、これはウィキなので、必要であればさらに編集できます。
3.5.0.beta8-dev への最後のアップデート以降、
/etc/runit/1.d/letsencrypt
が Docker コンテナに存在しないため、ビルドできません。回避策: https://www.forcewww.com/
そのため、以下が機能しなくなりました。
## 非 www および www ドメイン名の Let's Encrypt 証明書を追加
after_ssl:
- replace:
filename: "/etc/runit/1.d/letsencrypt"
from: /--keylength/
to: "-d example.de -d www.example.de --keylength"
このようなツール/バイナリを Docker コンテナから削除する前に、通知を受け取ることができれば幸いです…
「いいね!」 4
これは、Discourse が LetsEncrypt を処理する方法の変更ですか、それとも LetsEncrypt 自体の変更ですか?
現在、この問題でサーバーが混乱しています。今のところ、app.yml のその部分をコメントアウトするのが回避策ですが、将来的にはこれらの追加証明書をセットアップに追加する方法が必要だと感じています。
「いいね!」 2
pfaffman
(Jay Pfaffman)
2025 年 7 月 29 日午後 12:12
160
Discourse はそれを別のファイルに移動しました。現在作業中です。数日中に、複数のサブドメインをサポートできるようにするために何が必要かを確認してみます。
「いいね!」 2
pfaffman
(Jay Pfaffman)
2025 年 7 月 31 日午後 8:55
161
OPを新しいテンプレートで編集しましたが、まだテストしていません。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2025 年 7 月 31 日午後 10:45
163
早すぎるようです。
もし意味が通じるなら、sshのものがあった一番下のスタンザにreplaceを置いてみてください(携帯からなので、明日確認してみます)
「いいね!」 1
Paul_King
(Paul King)
2025 年 8 月 1 日午前 9:02
164
こんにちは、@nathankさん
推測ですが、あなたが受けているエラーは、app.yml ファイルの提案されたスタンザの各行の最後のスラッシュと最後の引用符の前にスペースが欠けていることが原因ではないかと思います。
エラーメッセージから推測すると、あなたの各行は次のようになっていると思われます(原文のまま)。
from: /-d spokes.nz/
to: “-d spokes.nz -d www.spokes.nz”
私がそう言うのは、私の場合は次のようになっているからです。
from: /-d nzarchitecture.net.nz /
to: "-d nzarchitecture.net.nz -d www.nzarchitecture.net.nz "
このように、各行の末尾の直前にスペースを入れると、エラーを発生させることなく Discourse を再構築できるようになりました。(よく見ると、このスレッドの冒頭に投稿された @pfaffman さんの更新されたスタンザに、これらの余分なスペースが表示されていることがわかります)。
エラーメッセージで指摘されているように、私も usr/local/bin/ ディレクトリには全くファイルがありません。そのため、この Let’s Encrypt ファイルがないことがエラーを引き起こす原因ではないと疑っています。
とはいえ、私の場合は Discourse は nzarchitecture.net.nz の URL で正常に動作しますが、残念ながらブラウザで www.nzarchitecture.net.nz と入力すると証明書エラーが発生します。この原因がそのファイルの欠如によるものかどうかはわかりません。
「いいね!」 2
現在、これを環境変数にロールインして、discourse_docker で直接処理しようとしています。ホスト名のエイリアスのコンマ区切りのリストのようなものです。これは直接処理するには十分一般的なユースケースのようです。
これにより、このケースの設定が容易になり、誰も app.ymls を変更する必要がなくなります。
私の現在の計画は、DISCOURSE_HOSTNAME www.domain.com を使用することです。
以下のような環境を許可します。
DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com は、証明書を取得し、すべてのホスト名で有効になります。
(ついでに、Let’s Encrypt の自動更新も正常に機能していないようなので、それらも修正しています)
「いいね!」 8
pfaffman
(Jay Pfaffman)
2025 年 8 月 2 日午後 8:56
166
素晴らしいですね!どうもありがとうございます。これで間違いなく楽になります!
「いいね!」 3
nathank
(Nathan Kershaw)
2025 年 8 月 3 日午後 8:10
167
見落としていました!ご提案通りにしましたが、ブートストラップに失敗しました。
FAILED
Errno::ENOENT: No such file or directory @ rb_sysopen - /usr/local/bin/letsencrypt
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
replace failed with the params {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz /”, “to”=>"-d spokes.nz -d www.spokes.nz "}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
素晴らしい!!!
「いいね!」 3
Paul_King
(Paul King)
2025 年 8 月 4 日午前 5:05
168
nathank:
それを見逃していました!提案されたとおりに実行しましたが、ブートストラップは依然として失敗します。
FAILED
Errno::ENOENT: No such file or directory @ rb_sysopen - /usr/local/bin/letsencrypt
失敗の場所: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/replace_command.rb:11:in `read’
replace failed with the params {“filename”=>“/usr/local/bin/letsencrypt”, “from”=>“/-d spokes.nz /”, “to”=>"-d spokes.nz -d www.spokes.nz "}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** スクロールアップして、以前のエラーメッセージを探してください。複数ある可能性があります。
おそらく中心的な問題ではありませんが、試行錯誤する中で、Digital Oceanで実行されているDockerのバージョンも20.0.4(だったと思います)から28.3.3に更新しました。それがこのエラーの解決に役立ったのかもしれません。少なくとも、再構築プロセスの開始時に受けていたDockerの「非推奨」警告はなくなりました。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2025 年 8 月 4 日午前 9:07
169
Let’s Encrypt ファイルを変更しようとする部分を削除し、PR が承認されるのを待つ必要があります。
「いいね!」 2
nathank
(Nathan Kershaw)
2025 年 8 月 5 日午前 2:40
170
わかりました!幸い、私は2つのコンテナインストールを使用しているので、それは大したことではありません。
featheredtoast:
私の現在の計画は DISCOURSE_HOSTNAME: www.domain.com です。
環境変数のように許可します。
DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com は証明書を取得し、すべてのホスト名で有効になります。
(その間に、Let’s Encrypt の自動更新も正しく機能していないようなので、それらも修正しています)
これまでに何か進展はありましたか?
「いいね!」 1
はい、レビュー待ちのプルリクエストをこちらで開いています。
main ← letsencrypt-renew-location
opened 05:59PM - 02 Aug 25 UTC
add comma-separated DISCOURSE_HOSTNAME_ALIASES to handle multiple aliases
for l… etsencrypt domain generation over env vars
FIX: add letsencrypt renew location for .well-known and allow for multi-domain renewal
Do not redirect to https on .well-known location for any domain
so letsencrypt cert renewals can work properly.
FIX: better listening for ipv6 for ipv4 only
Current letsencrypt assumes ipv6 in config. Check for ipv6 before listening
「いいね!」 4
皆さん、フォローアップですが、マルチドメインがマージされました。最新バージョンの discourse_docker では、ssl および letsencrypt テンプレートを含め、DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com の形式で環境変数を設定することで、代替ホスト名をセットアップできます。
サイトは、追加の設定変更なしで、証明書リクエストとともに構成されたホスト名をプルします。
「いいね!」 4
Paul_King
(Paul King)
2025 年 8 月 20 日午前 10:42
173
無知をお許しください。これはサイト設定で編集できますか、それとも app.yml で編集する必要がありますか?
前者の場合、最新版にアップデートした後、見つけることができませんでした。後者の場合、app.yml で具体的に何を調整すればよいですか?
pfaffman
(Jay Pfaffman)
2025 年 8 月 20 日午後 12:55
174
app.yml に記述します。これは Discourse ではなく、コンテナ内の NGINX によって処理され、Discourse データベースにアクセスできません。
ENV セクションに記述します。
env:
DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com
追加したいドメインのみを含めます。これにより、サイトの実際のホスト名にリンクしてリダイレクトできるようになります。
「いいね!」 3
Paul_King
(Paul King)
2025 年 8 月 20 日午後 1:57
175
完璧です。すべて機能しています。ありがとうございます!
管理者が提供したエイリアスを、次回の更新時にapp.ymlに書き込む、またはapp.ymlの指示が読み取れる場所に情報を残すような、気の利いた方法があればさらに良くなるでしょう。
「いいね!」 2