このガイドは、組み込みの Let’s Encrypt 証明書を使用しない理由がほとんどなくなったため、古くなっている可能性があります。こちらも参照してください:
2023-04-10 @pfaffman 談: これは主に歴史的な目的のために残されています。
それで、Docker ベースの Discourse 設定で SSL を有効にしたいのですね?やりましょう!
このガイドでは、すべての標準的なインストールデフォルト(/var/discourse/containers/app.yml にコンテナ設定ファイルがあり、Discourse docker が /var/discourse にインストールされていること)を使用したことを前提としています。
SSL 証明書の購入
namecheap またはその他の SSL 証明書プロバイダーにアクセスして、ドメインの SSL 証明書を購入してください。秘密鍵と CSR を生成し、最終的に証明書を取得するために、プロバイダーが文書化したすべての手順に従ってください。私は Apache のデフォルトを使用しましたが、これで問題ありません。
秘密鍵と証明書は安全な場所に保管してください。
証明書と鍵の配置
署名された証明書と鍵を入手し、/var/discourse/shared/standalone/ssl/ フォルダーに配置します。
秘密鍵は次のとおりです。
/var/discourse/shared/standalone/ssl/ssl.key
証明書は次のとおりです。
/var/discourse/shared/standalone/ssl/ssl.crt
ファイル名は重要です。これらから逸脱しないでください。そうしないと、nginx テンプレートは証明書を見つけることができなくなります。
共有フォルダーがどこにマウントされているかを確認するために、app.yml 設定ファイルを確認してください。
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
本質的に、ファイルはコンテナ内で /shared/ssl/ssl.key および /shared/ssl/ssl.crt に配置されている必要があります。
すべてのクライアントが証明書から信頼されたルート証明書へのパスを見つけられるように(つまり、ユーザーに警告が表示されないように)、プロバイダーから提供された証明書ファイルを次のように連結する必要がある場合があります。
cat "Your PositiveSSL Certificate" "Intermediate CA Certificate" "Intermediate CA Certificate" >> ssl.crt
NGINX の設定
app.yml 設定ファイルから nginx ssl テンプレートへの参照を追加します。
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.ssl.template.yml"
Docker コンテナの設定
コンテナに SSL でリッスンするように指示します。
expose:
- "80:80"
- "443:443"
Docker コンテナのブートストラップ
アプリを再構築します。
./launcher rebuild app
利益を得て、完了です!
トラブルシューティング
問題が発生した場合は、次のを使用してログを必ず確認してください。
./launcher logs app
仕組み
このテンプレートは、nginx を TLSv1.2 および TLSv1.3、強力な暗号スイート、HSTS ヘッダー、セッションチケット設定で構成します。SSL 設定を挿入するために、nginx の設定アウトレットを使用します。
イメージには、ポート 80 へのすべてのリクエストを https://DISCOURSE_HOST_NAME にリダイレクトするリダイレクトルールと、ポート 443 への他のホスト名のリクエストを正当なホスト名にリダイレクトするリダイレクトルールがあります。
この設定のカスタマイズは非常に簡単です。以下を参照してください。
そのファイルのコピーを作成し、必要に応じてテンプレートを修正できます。
ここでテンプレートとアウトレットを使用する利点は、残りの Discourse 推奨の NGINX 設定をすべて維持できることです。これは時間とともに変化します。
設定のテスト
すべてが正しく機能していることを確認するには、SSL Server Test (Powered by Qualys SSL Labs) を確認してください。一部のブラウザと OS の組み合わせでは、HTTPS の設定が不完全でも問題ない場合があります。そのため、まずここで確認してください。