複数ドメイン / リダイレクトでLet's Encryptを設定

おお、ついにうまくいきました。

true | openssl s_client -connect www.starzen.space:443 2>/dev/null \
| openssl x509 -noout -text \
| perl -l -0777 -ne '@names=/\\bDNS:([^\\s,]+)/g; print join("\n", sort @names);'
starzen.space
www.starzen.space

letsencrypt スクリプトの if 文をコメントアウトして、再発行を強制しました。もちろん、これは「工場出荷時」の解決策ではありません。

しかし、これは、指定されたオプションではなく、「状態」に問題があったことを示唆しています。

現在のスクリプトは、以前の状態によっては引っかかる可能性がありますが、再発行を強制すると修正できるようです。

しかし、これで動作する Apex ドメインができました! :tada:

「いいね!」 4

標準インストールの一部です。User Guide — Certbot 5.1.0 documentation を参照し、証明書の管理までスクロールダウンし、そのすぐ下にある既存の証明書の再作成と更新も参照してください。

これらのコマンドは、最初にCertbotを実行した場所から実行されます。

「いいね!」 1

標準のインストールを使用しており、certbot は使用していません。「通常の」サーバーレベルでも、「./launcher enter app」と入力しても見つかりません。

acme.sh のせいで欠けていると思われます。

「いいね!」 3

同様の問題に直面しているようです。サブサブドメイン(https://meta.discourse.org/t/lets-encrypt-with-sub-subdomain/264703)を使用したためだと思っていましたが、通常のサブドメインで試しても、新しいサイトの証明書はまだ生成されていません。

どのようにハッキングして動作させたのかを突き止めようとしていますが、理解できません :grimacing:

どのように動作させたのか教えていただけますか?

もしこれだった場合、どのif文をコメントアウトしましたか?

また、この新しい問題の原因について何か考えはありますか?

「いいね!」 1

私の問題は、マルチサイト構成でドメイン名が期限切れになっていたことでした。

「いいね!」 2

Brahnさん、

指示の最近のアップデートありがとうございます。

ルートドメインをサブドメインに向けた後、証明書エラーが発生していました。テストしてほしかった新しいバージョンにapp.ymlファイルを更新したところ、問題は解決しました。:slightly_smiling_face:

「いいね!」 4

ドメインを変更してリダイレクトが失敗した後、私もこれを実装しなければなりませんでした。

ウィキをわずかに変更し、古い指示を削除して、新しい指示のスペースを修正しました。

しかし、これまでのところうまくいっていないようです。新しい証明書の発行を強制する必要があるのではないかと疑っています。それを簡単に行う方法を教えていただけますか?

再構築したばかりだと思うのですが。また何か変更があったのかもしれません。古い証明書はまだありますか?ホスト名は?もしよろしければプライベートメッセージで送ってください。

Jayさん、ありがとうございます。forum.hinz.org.nz は古いドメインで、ehealthforum.nz が新しいドメインです。

再構築(web_only として 2-container のみ)を行いましたが、問題は解決しないようです。

ホスト名も変更しましたか? Discourse のドメイン名を変更または名前を変更する を行いましたか?

不要なアドバイスですが、ベストプラクティスは、ルートドメインではなく www を使用することのようです。私が使用するブラウザでは、www がそこにあることをほとんど区別できません。

引用符内の末尾のスペースが重要で、それがないということでしょうか?

コンテナに入って調べて、acme を実行する方法を試して何が起こるか見てみるべきだと思います。毎回やり方を覚えていないので、毎回調べる必要があります。そのため、お伝えできません。docker logs web_only からわかるかもしれません。

最後に編集したときは、これが機能したと誓います。適用したサイトを確認したところ、余分な有効な証明書が機能しているようです。しかし、現在のものとは異なるベースイメージを持っており、次の再構築で壊れる可能性があることは考えられます。

機会があれば、もう一度確認してみます。おそらく来週。

「いいね!」 1

はい、すべて問題なく行いました。

確かに。しかし、CDNやサブドメインを使用する予定がない場合は、それを行う価値はありません(私はしません):
https://hostadvice.com/blog/domains/what-is-apex-domain/

それを追加しようとしましたが、違いはありませんでした。

これは非常に啓発的です(クリックして表示)

> root@forumhinz:/var/discourse# docker logs web_only
> run-parts: executing /etc/runit/1.d/00-ensure-links
> run-parts: executing /etc/runit/1.d/00-fix-var-logs
> run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
> run-parts: executing /etc/runit/1.d/anacron
> run-parts: executing /etc/runit/1.d/cleanup-pids
> クリーニング中の古いPIDファイル
> run-parts: executing /etc/runit/1.d/copy-env
> run-parts: executing /etc/runit/1.d/letsencrypt
> [Sat 9 Sep 08:19:27 UTC 2023] ドメインは変更されていません。
> [Sat 9 Sep 08:19:27 UTC 2023] スキップ、次の更新時刻は: 2023-10-26T08:24:32Z
> [Sat 9 Sep 08:19:27 UTC 2023] 強制的に更新するには「–force」を追加してください。
> [Sat 9 Sep 08:19:29 UTC 2023] キーをインストール中: /shared/ssl/ehealthforum.nz.key
> [Sat 9 Sep 08:19:29 UTC 2023] フルチェーンをインストール中: /shared/ssl/ehealthforum.nz.cer
> [Sat 9 Sep 08:19:29 UTC 2023] リロードコマンドを実行: sv reload nginx
> warning: nginx: unable to open supervise/ok: file does not exist
> [Sat 9 Sep 08:19:29 UTC 2023] : のリロードエラー
> [Sat 9 Sep 08:19:29 UTC 2023] ドメインは変更されていません。
> [Sat 9 Sep 08:19:30 UTC 2023] スキップ、次の更新時刻は: 2023-10-26T08:24:45Z
> [Sat 9 Sep 08:19:30 UTC 2023] 強制的に更新するには「–force」を追加してください。
> [Sat 9 Sep 08:19:31 UTC 2023] キーをインストール中: /shared/ssl/ehealthforum.nz_ecc.key
> [Sat 9 Sep 08:19:31 UTC 2023] フルチェーンをインストール中: /shared/ssl/ehealthforum.nz_ecc.cer
> [Sat 9 Sep 08:19:31 UTC 2023] リロードコマンドを実行: sv reload nginx
> warning: nginx: unable to open supervise/ok: file does not exist
> [Sat 9 Sep 08:19:31 UTC 2023] : のリロードエラー
> runsvdir を起動しました、PID は 570 です
> supervisor pid: 578 unicorn pid: 590

これは、強制的に更新する方法が見つからない場合、問題が自己解決するまで 2023-10-26T08:24:00Z まで待つことになることを意味します!

いくつか試してみます。幸運を祈ってください。

後で…

成功!

何度か証明書の更新を開始しようと試みて失敗した後、最終的に新しいサーバーに移行しました(これはすでに計画されていました)。

驚いたことに、これによりOPの設定で証明書が完全に更新されました。不思議なものです。

将来、これをより良く行う方法がわかりません。おそらく、新しいドメインのDNS設定を1〜2か月前に確立し、それらの行をapp.ymlに含めるのが良いでしょう。

「いいね!」 2

これを my app.yml ファイルに追加しました。再構築する必要がありますか、それともそのまま機能しますか?
また、「from: /-d www.first-domain.com/」では、リダイレクトしたいドメインを入力しますか、それともサブドメインを入力しますか?

「いいね!」 1

はい、app.yml の変更は通常、再構築が必要です。

「いいね!」 3

再構築しましたが、サイトにアクセスできなくなりました。もう一度再構築する必要がありますか?
再構築後に次のように表示されます。

"Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 3575 exit 134>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {\"cd\"=>\"$home\", \"hook\"=>\"assets_precompile\", \"cmd\"=>[\"su discourse -c 'bundle exec rake themes:update assets:precompile'\"]}
bootstrap failed with exit code 134
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one."
「いいね!」 1

再構築プロセスはエラーなくスムーズに進みましたか?

「いいね!」 2

こちらを実行し、エラーメッセージを共有してください。

「いいね!」 2
110:M 10 Dec 2023 13:32:18.543 # サーバーが初期化されました
110:M 10 Dec 2023 13:32:18.543 # WARNING メモリのオーバーコミットを有効にする必要があります!無効にすると、メモリ不足の状況下でバックグラウンド保存またはレプリケーションが失敗する可能性があります。無効にすると、メモリ不足の状況がなくても失敗する可能性があり、https://github.com/jemalloc/jemalloc/issues/1328 を参照してください。この問題を解決するには、/etc/sysctl.conf に 'vm.overcommit_memory = 1' を追加してから再起動するか、コマンド 'sysctl vm.overcommit_memory=1' を実行してこれを有効にしてください。
110:M 10 Dec 2023 13:32:18.544 * バージョン 7.0.7 によって生成された RDB をロードしています

これらの警告が表示されましたが、重要かどうかはわかりません。

warning 「 > @glint/environment-ember-loose@1.1.0」には、ピア依存関係「@glimmer/component@^1.1.2」がありません。
warning 「 > @glint/environment-ember-template-imports@1.1.0」には、ピア依存関係「ember-template-imports@^3.0.0」がありません。
warning 解像度フィールド「unset-value@2.0.1」は、要求されたバージョン「unset-value@^1.0.0」と互換性がありません
warning パターン [「wrap-ansi@^7.0.0」] は、パターン [「wrap-ansi-cjs@npm:wrap-ansi@^7.0.0」] と同じ宛先「/home/discourse/.cache/yarn/v6/npm-wrap-ansi-cjs-7.0.0-67e145cff510a6a6984bdf1152911d69d2eb9e43-integrity/node_modules/wrap-ansi-cjs」に展開しようとしています。これは非決定的な動作につながる可能性があり、スキップされます。
warning 「 > discourse-markdown-it@1.0.0」には、ピア依存関係「xss@*」がありません。
warning 「workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @ember/legacy-built-in-components@0.5.0」には、ピア依存関係「ember-source@>= 4.8」が正しくありません。
warning 「workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/aws-s3@3.0.6」には、ピア依存関係「@uppy/core@^3.1.2」が正しくありません。
warning 「workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/aws-s3-multipart@3.1.3」には、ピア依存関係「@uppy/core@^3.1.2」が正しくありません。
warning 「workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/xhr-upload@3.1.1」には、ピア依存関係「@uppy/core@^3.1.2」が正しくありません。
warning 「workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse-plugins > ember-this-fallback@0.4.0」には、ピア依存関係「ember-source@^3.28.11 || ^4.0.0」がありません。
warning 「workspace-aggregator-68bace53-129d-4a2d-85c3-4685b91c92ee > discourse > @uppy/aws-s3 > @uppy/xhr-upload@3.3.0」には、ピア依存関係「@uppy/core@^3.2.1」が正しくありません。
<--- 最後のGC --->

[3710:0x6291170]   681247 ms: Scavenge 942.0 (1034.0) -> 940.8 (1034.0) MB, 62.9 / 0.0 ms  (平均 mu = 0.704, 現在 mu = 0.878) allocation failure;
[3710:0x6291170]   681616 ms: Scavenge 942.4 (1034.0) -> 941.4 (1034.0) MB, 18.3 / 0.0 ms  (平均 mu = 0.704, 現在 mu = 0.878) allocation failure;
[3710:0x6291170]   681911 ms: Scavenge 943.0 (1034.0) -> 942.0 (1038.0) MB, 46.8 / 0.0 ms  (平均 mu = 0.704, 現在 mu = 0.878) allocation failure;
FATAL ERROR: ヒープ制限に到達しました Allocation failed - JavaScript heap out of memory
 1: 0xb83f50 node::Abort() [ember]
 2: 0xa94834  [ember]
 3: 0xd647c0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [ember]
 4: 0xd64b67 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [ember]
 5: 0xf42265  [ember]
 6: 0xf5474d v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [ember]
 7: 0xf2ee4e v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [ember]
 8: 0xf30217 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [ember]
 9: 0xf113ea v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [ember]
10: 0x12d674f v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [ember]
11: 0x17035b9  [ember]
Aborted (core dumped)
error コマンドは終了コード 134 で失敗しました。

そして私のサイトは次のように表示されます。

このサイトにアクセスできません

forum.mysite.ca は接続を拒否しました。

試してください:

  • 接続を確認する
  • プロキシとファイアウォールを確認する

ERR_CONNECTION_REFUSED

これが私の app.yml です

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-zoom.git
  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: "-d www.mysite.ca/"
        to: "-d www.mysite.ca -d mysite.ca "
## ビルド後に実行するカスタムコマンド
「いいね!」 1

サーバーのメモリはどのくらいですか、またスワップは有効になっていますか(free -h で確認できます)?

              合計       使用中       空き       共有   バッファ/キャッシュ   利用可能
メモリ:           957         190         371           3         395         613
スワップ:        2047          79        1968

サーバーには1GBのRAMと2GBのスワップ領域が割り当てられています。奇妙なことに、このスワップ容量では再構築プロセスが失敗しました。

再度再構築を試すことができます。失敗した場合は、サーバーのメモリをアップグレードする必要があるかもしれません(ビルドプロセスのみ。完了後にダウングレードできます)。

「いいね!」 1