Skip to Content

Flarum

A integração oficial do ProxyTracer para o Flarum. Esta extensão traz inteligência de IP de nível corporativo para sua comunidade, detectando automaticamente VPNs, proxies, datacenters e nós Tor conhecidos, e oferecendo a opção de impedi-los de se cadastrar, fazer login ou até mesmo de visualizar completamente seu fórum Flarum.

O código-fonte completo pode ser encontrado no Github e no Packagist.

Recursos

  • Controle granular que permite aos administradores aplicar a validação de IP durante o cadastro de novos usuários, autenticação de usuários existentes ou globalmente para todos os visitantes do site.
  • Cache integrado que utiliza a API nativa Laravel Cache do Flarum para armazenar avaliações recentes de endereços IP, reduzindo drasticamente as chamadas de API externa e garantindo zero latência.
  • Em caso de timeout da API ou falha de rede, a extensão prioriza o acesso do usuário (fail-open) para evitar bloqueios generalizados. Este comportamento pode ser configurado nas opções.
  • Suporte nativo para lista de permissões (whitelist) de IPs exatos e sub-redes CIDR (ex.: 192.168.1.0/24).

Instalação

  1. Acesse seu servidor via SSH e navegue até o diretório raiz do Flarum (onde o seu composer.json está localizado):
    cd /var/www/flarum
  2. Instale a extensão via Composer:
    composer require proxytracer/flarum-proxytracer
  3. Limpe o cache do Flarum para compilar os novos assets do frontend:
    php flarum cache:clear

Configuração:

  1. Obtenha uma chave de API padrão no Painel do ProxyTracer.
  2. Navegue até o painel de administração do seu Flarum: Admin → Features → ProxyTracer para abrir a janela modal de configurações.
  3. Insira sua chave de API no campo API Key.
  4. Ative os parâmetros de proteção marcando Block Signups, Block Logins e/ou Block All Site Access.
  5. Adicione quaisquer IPs ou faixas CIDR confiáveis à IP Whitelist (um por linha).
  6. (Opcional) Ajuste os limites de Timeout da API e Expiração de Cache para atender às necessidades específicas de tráfego do seu servidor.
  7. (Opcional) Personalize a Mensagem de Bloqueio que aparece para usuários bloqueados. Por exemplo, você pode adicionar instruções para entrar em contato com a administração do site caso eles acreditem que o bloqueio é injustificado e que não estão acessando o site por meio de um proxy ou VPN.

Settings Screenshot

Configuração de Rede: Cloudflare e Proxies Reversos

Para que o ProxyTracer funcione com eficácia, a aplicação Flarum deve receber o endereço IP real do cliente. Se sua infraestrutura utilizar Cloudflare ou outro proxy reverso, o Flarum pode, por padrão, registrar o endereço IP do nó do proxy (como os servidores de borda da Cloudflare), tornando a detecção do ProxyTracer imprecisa.

Siga as diretrizes de configuração abaixo que correspondem à arquitetura do seu servidor para garantir o encaminhamento correto de IP.

Integração Direta com Cloudflare (Instalação Padrão)

Se o seu servidor Flarum se conecta diretamente à internet e utiliza a Cloudflare exclusivamente para DNS e proxy de borda, você pode usar o recurso integrado de desvio da Cloudflare na extensão.

Dentro das configurações do ProxyTracer no Flarum, basta ativar a opção Extract IPs from Cloudflare headers.

O ProxyTracer extrairá automaticamente o IP real do cliente a partir do cabeçalho proprietário CF-Connecting-IP da Cloudflare. Nota: Ative esta configuração apenas se o seu servidor estiver diretamente conectado à Cloudflare. Ativar isso em uma configuração sem Cloudflare pode permitir que usuários mal-intencionados burlem restrições falsificando seus cabeçalhos de IP.

Arquitetura de Proxy em Múltiplas Camadas (Cloudflare + Proxy Reverso Local)

Isso se aplica se a sua instância do Flarum for roteada por meio de um painel de gerenciamento de servidor local ou proxy reverso (ex.: Nginx Proxy Manager, CloudPanel, Traefik, Plesk) posicionado atrás da Cloudflare. Em uma arquitetura de proxy reverso em múltiplas camadas (ou "duplo"), o simples botão não é suficiente porque o tráfego é entregue ao Flarum pela sua interface de rede local, e não diretamente pela Cloudflare.

Você deve configurar seu proxy reverso local para extrair o IP real do cliente a partir do cabeçalho CF-Connecting-IP, mas apenas para tráfego originado de endereços IP confiáveis da Cloudflare. Repassar esse cabeçalho de forma cega sem verificar a fonte permite que usuários mal-intencionados burlem limites de taxa e banimentos falsificando seu endereço IP.

Exemplo com Nginx: Primeiro, defina as faixas de IP da Cloudflare como proxies confiáveis na configuração do seu bloco de servidor (fora do bloco location). Definir esses IPs fixos no nível do Nginx oferece o nível mais alto absoluto de velocidade e segurança.
# IPs IPv4 da Cloudflare, consulte [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; # IPs IPv6 da Cloudflare 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;

Em seguida, localize sua diretiva location /. Devido à configuração acima, o Nginx agora resolverá com segurança $remote_addr para o IP real do cliente somente se a requisição tiver realmente passado pela Cloudflare. Modifique os cabeçalhos de encaminhamento de IP da seguinte forma:

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

Salve a configuração e recarregue seu serviço Nginx (systemctl reload nginx).

Acesso de Emergência

💡
Ficou bloqueado? Se você bloquear acidentalmente seu próprio endereço IP durante a configuração do ProxyTracer (ex.: se você estiver conectado a uma VPN no momento e ativou a opção "Block All"), poderá recuperar o acesso desativando a extensão diretamente via SSH:
cd /var/www/flarum php flarum extension:disable proxytracer-proxytracer php flarum cache:clear
(Se estiver usando Docker, execute esses comandos dentro do seu container PHP). Alternativamente, você pode desativá-la pelo banco de dados: abra a tabela settings, localize a chave proxytracer.block_all, altere seu valor para 0 e execute php flarum cache:clear.

Licença

Este software é licenciado sob a GNU Affero General Public License v3.0 (AGPLv3). Consulte o arquivo LICENSE para obter todos os detalhes.

Última atualização