Discourse
ProxyTracer の公式 Discourse 統合プラグインです。コミュニティにエンタープライズグレードの IP インテリジェンスを導入し、既知の VPN、プロキシ、データセンター、Tor ノードを自動検出して、登録、ログイン、またはフォーラム全体の閲覧を遮断するオプションを提供します。
プラグインは Github repository を通じて配布されています。
機能
- 新しいユーザーの登録時にプロキシおよび VPN を自動検証。
- 信頼できるユーザーグループや IP アドレスに対するバイパス設定。
- プロキシ検出時のアクション(ブロック、警告、モデレーションキューへの送信)を柔軟に設定可能。
- インメモリ処理による完全ノーログ保証。
インストール
-
サーバーの Discourse インストールディレクトリ(通常は
/var/discourse)に SSH で接続します。cd /var/discourse -
containers/app.ymlファイルを開き、hooks.after_codeセクションにプラグインのリポジトリ URL を追加します:nano containers/app.yml -
Discourse アプリケーションコンテナをリビルドします:
hooks: after_code: - exec: cd: $home/plugins cmd: - git clone https://github.com/discourse/docker_manager.git - git clone https://github.com/proxytracer/discourse-proxytracer.git -
./launcher rebuild app./launcher rebuild app
設定:
- ProxyTracer Dashboard から標準の API キーを取得します。
-
proxytracer enabledをオンにしてプラグインを有効化します。 -
proxytracer api keyに ProxyTracer API キーを入力します。 -
proxytracer block modeを選択します(block、warn、またはlog)。 -
proxytracer whitelist ipsで除外する IP アドレス(CIDR 形式対応)を指定します。 -
proxytracer whitelist trust levelでチェックを免除するトラストレベルを設定します。 - 設定を保存すると、即座にプロキシ検出が有効化されます。

ネットワーク設定: Cloudflareとリバースプロキシ
重要: Discourse が Cloudflare やリバースプロキシの背後にある場合、実際のクライアント IP が正しく渡されていることを確認してください。
プロキシ検出が正しく機能するためには、Discourse がリバースプロキシの IP ではなく、エンドユーザーの実際の IP アドレスを認識している必要があります。
直接のCloudflare統合(標準インストール)
Cloudflare を直接使用している場合(標準構成):
-
app.ymlのtemplates:セクションにtemplates/cloudflare.template.ymlが含まれていることを確認します。 -
これにより、Discourse の Nginx 設定に Cloudflare の公式 IP 範囲が自動的に追加され、
CF-Connecting-IPヘッダーが正しく信頼されます。templates: - "templates/postgres.template.yml" - "templates/redis.template.yml" - "templates/web.template.yml" - "templates/web.ratelimited.template.yml" - "templates/cloudflare.template.yml" -
設定変更後は
./launcher rebuild appを実行して反映してください。
多層プロキシ構成(Cloudflare + ローカルリバースプロキシ)
多層リバースプロキシ構成(Cloudflare + Nginx Proxy Manager / HAProxy 等)の場合:
中間のリバースプロキシが X-Forwarded-For ヘッダーまたは CF-Connecting-IP ヘッダーを正確に Discourse に転送するように設定してください。
# IPv4 Cloudflare IP、参照: https://www.cloudflare.com/ips/
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
# IPv6 Cloudflare IP
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header CF-Connecting-IP;Discourse の config/discourse.conf または環境変数で DISCOURSE_TRUSTED_PROXIES を設定します。
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}設定を保存してコンテナを再起動します。
検証とテスト
設定が正しく動作しているか確認するためのテスト手順:
- VPN に接続した状態で新しいシークレットウィンドウを開き、フォーラムへの登録を試みます。
-
設定したブロックメッセージ(例: 「VPN またはプロキシ経由での登録は制限されています」)が表示されることを確認します。
-
誤った設定: Cloudflare の IP(一覧は here を参照)やローカルネットワーク IP(例:
127.0.0.1,172.x.x.x)が記録されている場合、IP 転送が失敗しています。この状態では ProxyTracer はサイトを保護できません。 - ✅ 正常な状態: ユーザーの実際の IP アドレスが正しく認識され、VPN 接続がブロックされる。
-
誤った設定: Cloudflare の IP(一覧は here を参照)やローカルネットワーク IP(例:
緊急アクセス
💡
緊急アクセス: 設定ミスにより管理者自身がロックアウトされた場合は、SSH 経由でコンテナに入り、Rails コンソールからプラグインを無効化できます:
./launcher enter app -> rails c -> SiteSetting.proxytracer_enabled = false。cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exitライセンス
このプラグインは MIT ライセンスの下で提供されています。
最終更新日: