HTTPS through Proxy; Discourse still trying to get files using HTTP

こんにちは!Discourse フォーラムのセットアップを試みました。メール内のリンクをクリックするとボタンが表示されたのですが、押すことができませんでした。HTTP 経由でファイルを読み込もうとしているためか、多数のエラーが表示されています。これは、Discourse 自体ではなく、Apache2 Web サーバーの ProxyPass を介して HTTPS を使用していないことが原因かもしれません。Discourse の HTTPS を使わずに、ファイルの読み込みを HTTPS で行うにはどうすればよいでしょうか?(あるいは、既に用意されている .crt と .key ファイルを Discourse で使えるようにする方法があれば、それも教えていただけますと幸いです :wink:

Discourse で HTTPS 強制を有効にしましたか?

これをどのように行えばよいでしょうか?(LetsEncrypt または Discourse 経由の SSL を使用しない場合)
templates/web.ssl.template.yml のコメントアウトを外し、templates/web.letsencrypt.ssl.template.yml はコメントアウトのままにすればよいのでしょうか?(ご質問して申し訳ありませんが、再構築に非常に時間がかかるため、確認してから行いたいです)

設定に移動し、「force https」と書かれたチェックボックスを有効にするだけです。

念のため申し上げますが、この設定を有効にする前に、お使いのリバースプロキシが Discourse の SSL を処理できることを 100% 確認してください。

:warning: Discourse は Apache2 と相性が良くありません… 可能であれば、Nginx への移行をお勧めします。

えっ、どの設定?どこにチェックボックスがあるんだよ?

community.example.net/admin は、Discourse の管理パネルが見つかるパスです。

ただし、そのためにはまずフォーラムにアカウントが必要ですが、HTTPS の問題を解決しない限りアカウントを作成できません。

コンソールから強制 SSL を有効にできます:

./launcher enter app
rails c
SiteSetting.force_https = true
exit
exit

その後、再構築や何か他の操作を行う必要がありますか?
編集:再構築を行いました。しかし、まだ一部のファイルが HTTP 経由で読み込まれているという同じエラーが発生します。

force_https は、それによって混乱を招くことが多いため、管理画面から削除されました。

Discourse は現在、デフォルトで HTTPS を有効にするため、このケースのように手動で有効にする必要があるのは稀な場合のみです。

デフォルトでは有効になっていませんでした。インストールスクリプトに問題があったため、app.yml を編集しました。これが原因でしょうか?

HTTPSのテンプレートを無効にすることで、プロキシの背後でHTTPを使用していますか?

私の環境では、2 つの HTTPS テンプレートがデフォルトで無効化されていました。
Discourse は Server 2 のデフォルトポートで動作しています。
Server 1 で動作している apache2 の VHost に ProxyPass を設定しており、SSL が構成されています。
最近気づいたのですが、Discourse 経由で HTTPS を有効化でき、Discourse がデフォルトポートで動作しているため、community.website.tld を Server 2 の IP アドレスに設定するだけで済みます。
SSL を有効化するにはどうすればよいでしょうか?2 つのテンプレートのコメントを外し、Let’s Encrypt のメールアドレスを入力すればよいのでしょうか?また、Let’s Encrypt でアカウントを作成する方法も教えてください。Web サイトに「登録」ボタンが見つかりません。

ほぼその通りです。テンプレートを HTTPS と Let’s Encrypt 用に有効にし、ポート 443 が公開されていることを確認し、再ビルド前にメールアドレスを指定してください。

Discourse をプロキシの背後に配置する正当な理由はほとんどありません。専用サーバーと FQDN があれば、上記の方法で管理がはるかに容易になります。

ただし、そこに指定する必要がある E メールアドレスは何ですか?Let’s Encrypt アカウントのことが書かれているので、アカウントを作成する必要があるのでしょうか?どこで作成すればよいですか?

通知を受け取るためのメールアドレスです。事前に登録する必要はありません。

SSLを有効化しましたが、今度はCloudflareの502エラーが表示されます。

プロキシが X-Forwarded-Proto ヘッダーを適切に https に設定していることを確認してください。これにより、HTTPS の検出が修正されます。

当分、Cloudflare を無効にしてください。頻繁に攻撃を受けていない限り、Cloudflare はメリットよりもデメリットの方が大きくなります。

オレンジ色のクラウドが有効になっている場合、Discourse は Let’s Encrypt から証明書を取得できません。

それは済ませました。HTTPS は現在機能しており、すべてのコンテンツが HTTPS 経由で読み込まれています。しかし:
アカウント確認ページのボタンがまだ押せません。


コンソールにもエラーといくつかの警告が表示されています: