Cloudflare を使用した Discourse の利用
このガイドでは、セキュリティのベストプラクティスやトラブルシューティングのヒントを含め、Cloudflare と Discourse を設定して使用する方法について説明します。
必要なユーザーレベル: 管理者
セルフホスト型インストールではコンソールへのアクセスが必要です
概要
Cloudflare は、CDN によるパフォーマンスの向上、DDoS 保護などの追加のセキュリティレイヤー、HTTPS サポートにより、Discourse インスタンスを強化できます。このガイドでは、セットアッププロセスと最適な構成のためのベストプラクティスについて説明します。
Discourse で Cloudflare を使用する理由
Discourse インスタンスで Cloudflare を使用すると、いくつかの重要な利点が得られます。
- パフォーマンス: Cloudflare の CDN は、一般的なアセットへの世界中からのアクセスを改善し、グローバルなユーザーエクスペリエンスを向上させます (ソース)
- セキュリティ: 以下の追加の保護レイヤーが含まれます。
- DDoS 保護 (ソース)
- HTTPS サポート (ソース) ( Discourse の Let’s Encrypt セットアップ の代替)
セルフホスト型インストールの場合、Cloudflare はこれらの利点を提供する一方で、セットアップの複雑さが増します。
Cloudflare のセットアップ
- Cloudflare の基本に慣れる
- セットアップ手順に従ってドメインの Cloudflare を設定し、セキュリティ、パフォーマンス、信頼性のメリットを得る
構成のベストプラクティス
DNS 設定
- Discourse インスタンスを指す DNS レコードがプロキシされていることを確認します
- DNS 設定には
dash.cloudflare.com/?to=/:account/:zone/dnsからアクセスします
SSL/TLS 構成
- 暗号化モードを「フル (厳格)」に設定します
- SSL/TLS 設定には
dash.cloudflare.com/?to=/:account/:zone/ssl-tlsからアクセスします
不適切な SSL/TLS 構成はリダイレクトループを引き起こす可能性があります
キャッシュ構成
- キャッシュレベルを「標準」に設定します
- キャッシュ設定には
dash.cloudflare.com/?to=/:account/:zone/caching/configurationからアクセスします
キャッシュルール
Cloudflare は、ページルールを廃止し、代わりに最新の ルール システムを採用しました。キャッシュルールを使用して、dash.cloudflare.com/?to=/:account/:zone/rules で以下を作成します。
community.example.com/session/*のキャッシュレベルを「バイパス」に設定します- 受信する URL を正規化するように URL 正規化設定を構成します
ネットワーク設定
dash.cloudflare.com/?to=/:account/:zone/network のネットワーク設定は、通常、Discourse の機能には影響しません。Discourse は WebSockets、gRPC、または CF-IPCountry / True-Client-IP ヘッダーを使用しません。これらの設定は、同じドメイン上の他のソフトウェアが特定の構成を必要としない限り、デフォルトのままにしておくことができます。
WAF (Web Application Firewall) 設定
Cloudflare プランでマネージドルールがサポートされている場合は、以下を作成します。
- 投稿の作成/編集時に WAF をスキップします。
(starts_with(http.request.uri.path, "/posts") and http.request.method in {"POST" "PUT"})
- データエクスプローラープラグインのユーザー向けに、管理者クエリ時に WAF をスキップします。
((http.request.uri.path contains "/admin/plugins/explorer/queries/" or http.request.uri.path contains "/admin/plugins/discourse-data-explorer/queries/") and http.request.method eq "PUT")
両方のルールについて:
- 「残りのルールをすべてスキップ」を選択します
- 「一致したリクエストをログに記録」を有効にします
ビジネスプラン以上をご利用の場合は、
matches正規表現演算子を使用して、より正確なマッチングが可能です。上記で使用されているstarts_withおよびcontains演算子は、無料およびプロを含むすべてのプランで機能します。
WAF 設定には dash.cloudflare.com/?to=/:account/:zone/firewall/managed-rules からアクセスします
コンテンツの最適化
dash.cloudflare.com/?to=/:account/:zone/speed/optimization で以下を構成します。
- Brotli を有効にします
- Rocket Loader™ を無効にします
Rocket Loader™ が有効になっていることにより、Discourse でサイトがダウンしたという報告が頻繁に寄せられています (原因となったレポートの検索)
セルフホスト型インストール用の追加構成
正しい IP アドレス転送を保証するために、containers/app.yml のテンプレートセクションに以下を追加します。
- "templates/cloudflare.template.yml"
テンプレートを追加した後、変更を有効にするには
./launcher rebuild appでコンテナを再構築する必要があります。
サポートリソース
トラブルシューティング
コンテンツセキュリティポリシー (CSP) の問題
CSP エラーに遭遇した場合:
- Rocket Loader が無効になっていることを確認します
- スクリプトがサイト設定の
content security policy script srcに正しく追加されているか確認します
OneBox 機能
OneBox がブロックされている場合:
- スーパーボットファイトモードが有効になっているか確認します
- 「完全に自動化されている」の設定が「管理されている」または「ブロック」に設定されている場合は調整します
- OneBox ユーザーエージェント用にカスタム WAF ルールを作成することを検討します



