Skip to Content

Flarum

ProxyTracer の公式 Flarum 統合拡張機能です。コミュニティにエンタープライズグレードの IP インテリジェンスを導入し、既知の VPN、プロキシ、データセンター、Tor ノードを自動検出して、新規登録、ログイン、または Flarum フォーラム全体の閲覧を遮断するオプションを提供します。

ソースコード全文は Github で確認できます。拡張機能は Packagist を通じて配布されています。

機能

  • 新規ユーザー登録時のリアルタイムプロキシ検出。
  • 管理画面からのワンクリック設定と API キー連携。
  • 特定のユーザーグループに対するバイパス権限設定。
  • 完全ノーログによるプライバシー保護設計。

インストール

  1. Flarum のルートディレクトリで Composer コマンドを実行してインストールします:
    cd /var/www/flarum
  2. composer require proxytracer/flarum-proxytracer
    composer require proxytracer/flarum-proxytracer
  3. キャッシュをクリアしてアセットを公開します: php flarum cache:clear
    php flarum cache:clear

設定:

  1. ProxyTracer Dashboard から標準の API キーを取得します。
  2. Flarum の管理画面(Admin > Extensions)に移動して ProxyTracer 拡張機能を有効化します。
  3. 設定モーダルを開き、ProxyTracer API キーを入力します。
  4. 検出時のアクション(ブロック警告ログ記録のみ)を選択します。
  5. 必要に応じて除外する IP アドレス(CIDR 形式)を入力します。
  6. 設定を保存します。
  7. 変更を反映するためにキャッシュを再クリアします: php flarum cache:clear

Settings Screenshot

ネットワーク設定: Cloudflareとリバースプロキシ

重要: Flarum がリバースプロキシや Cloudflare の背後にある場合、クライアントの実際の IP が正しく渡されていることを確認してください。

Flarum は受信したリクエストヘッダーから IP アドレスを取得します。中間のプロキシが IP を上書きしていないか確認してください。

直接のCloudflare統合(標準インストール)

Cloudflare を直接使用している場合、config.php でプロキシヘッダーの信頼を設定します:

'proxy' 設定配列に Cloudflare の IP アドレスまたは 'trust_proxy' => true を指定します。

CF-Connecting-IP ヘッダーが正しく参照されていることを確認してください。

多層プロキシ構成(Cloudflare + ローカルリバースプロキシ)

多層リバースプロキシ(例: Cloudflare + Nginx Proxy Manager、CloudPanel、Traefik、Plesk)の背後に Flarum がある場合、ローカルネットワークインターフェースからトラフィックが渡されるため、単一プロキシ向けの設定では不十分です。

CF-Connecting-IP ヘッダーから真のクライアント IP を抽出するようにローカルリバースプロキシを設定する必要があります。ただし、信頼できる Cloudflare IP アドレスから発信されたトラフィックのみに限ります。送信元を検証せずにこのヘッダーを無差別に渡すと、悪意あるユーザーが IP アドレスを偽装してレート制限や BAN を回避するリスクがあります。

Nginx 設定例: まず、サーバーブロック設定(location ブロックの外側)で Cloudflare の IP 範囲を信頼できるプロキシとして定義します。Nginx レベルでこれらの IP を指定することが、最高レベルの速度とセキュリティを提供します。
# IPv4 Cloudflare IP、参照: [https://www.cloudflare.com/ips/](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;

次に、location / ディレクティブを見つけます。上記の設定により、リクエストが実際に Cloudflare を通過した場合にのみ、Nginx は $remote_addr を真のクライアント IP に安全に解決するようになります。IP 転送ヘッダーを次のように設定してください:

location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ... }

設定を保存し、Nginx サービスをリロードします (systemctl reload nginx)。

緊急アクセス

💡
ロックアウトされた場合: ProxyTracer の設定中に誤って自分自身の IP アドレスをブロックしてしまった場合(例: VPN に接続した状態で「すべてブロック」を有効化した場合)、SSH 経由で拡張機能を直接無効化することでアクセスを回復できます:
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Docker を使用している場合は、PHP コンテナ内でこれらのコマンドを実行してください)。あるいは、データベースから無効化することも可能です: settings テーブルを開き、proxytracer.block_all キーの値を 0 に変更して、php flarum cache:clear を実行してください。

ライセンス

このソフトウェアは GNU Affero General Public License v3.0 (AGPLv3) に基づいてライセンスされています。詳細は LICENSE ファイルを参照してください。

最終更新日: