Discourse
L'integrazione ufficiale di ProxyTracer per Discourse. Questo plugin aggiunge la threat intelligence di ProxyTracer alla tua community, rilevando e bloccando automaticamente VPN, proxy, datacenter e nodi Tor noti.
Il plugin è distribuito attraverso questo repository GitHub.
Caratteristiche
- Controllo granulare che consente agli amministratori di imporre la convalida dell'IP durante la registrazione di nuovi utenti, l'autenticazione degli utenti esistenti o globalmente per tutti i visitatori del sito.
- Il caching integrato che utilizza l'API nativa Redis di Discourse memorizza le valutazioni recenti degli indirizzi IP, riducendo drasticamente le chiamate API esterne e garantendo latenza zero.
- In caso di timeout dell'API o errore di rete, il plugin dà priorità all'accesso degli utenti (fail-open) per prevenire blocchi generalizzati. Questo comportamento può essere modificato nelle impostazioni.
-
Supporto integrato per whitelist di indirizzi IP esatti e subnet CIDR (es.
192.168.1.0/24).
Installazione
-
Accedi al tuo server via SSH e naviga nella directory di Discourse:
cd /var/discourse -
Apri il file di configurazione del container per la modifica:
nano containers/app.yml -
Individua la sezione
hookse aggiungi il comando di clone del repository direttamente sotto l'installazione didocker_manager: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 -
Salva il file di configurazione e ricompila il container Discourse per compilare il plugin:
./launcher rebuild app
Configurazione:
- Ottieni una chiave API standard dalla Dashboard di ProxyTracer.
- Accedi al tuo pannello di amministrazione Discourse: Admin → Plugins → ProxyTracer per trovare le impostazioni di ProxyTracer.
-
Inserisci la tua chiave API nel campo
ProxyTracer API Key. -
Attiva i parametri di protezione selezionando
Enabled during Signup,Enabled during Logine/oEnabled for All Visitors. -
Aggiungi eventuali IP o intervalli CIDR attendibili all'elenco
Whitelisted IPs. - (Opzionale) Regola i limiti di timeout dell'API e la durata della cache Redis in base alle esigenze specifiche di traffico del tuo server.
- (Opzionale) Personalizza il messaggio di blocco che appare agli utenti bloccati. Ad esempio, puoi aggiungere istruzioni per contattare l'amministrazione del sito nel caso in cui ritengano che il blocco non sia giustificato e non stiano accedendo tramite proxy o VPN.

Configurazione di Rete: Cloudflare e Reverse Proxy
Segui le linee guida di configurazione sottostanti corrispondenti all'architettura del tuo server per garantire un inoltro IP accurato.
Integrazione Diretta con Cloudflare (Installazione Standard)
Questo si applica se il tuo server Discourse si collega direttamente a Internet e utilizza Cloudflare esclusivamente per DNS e proxy edge. In questa configurazione standard, devi configurare Discourse in modo che consideri attendibili gli intervalli IP di Cloudflare ed estragga l'IP reale del client dagli header in entrata.
-
Connettiti al tuo server via SSH e modifica la configurazione del container:
nano /var/discourse/containers/app.yml -
Individua il blocco
templates:e aggiungi il template ufficiale Cloudflaretemplates/cloudflare.template.yml:templates: - "templates/postgres.template.yml" - "templates/redis.template.yml" - "templates/web.template.yml" - "templates/web.ratelimited.template.yml" - "templates/cloudflare.template.yml" -
Salva il file e ricompila il container Discourse per applicare le modifiche:
./launcher rebuild app
Architettura Proxy Multi-Livello (Cloudflare + Reverse Proxy Locale)
Questo si applica se la tua istanza Discourse è instradata attraverso un pannello di gestione server locale o un reverse proxy (es. CloudPanel, Nginx Proxy Manager, Traefik, Plesk) posizionato dietro Cloudflare. In un'architettura di reverse proxy a più livelli (o "doppio"), il template standard cloudflare.template.yml fallirà poiché il traffico viene passato a Discourse dalla tua interfaccia di rete locale e non direttamente da Cloudflare. Non utilizzare il template Cloudflare in questo scenario.
Devi invece configurare il tuo reverse proxy locale per estrarre l'IP reale del client dall'header CF-Connecting-IP, ma solo per il traffico proveniente da indirizzi IP Cloudflare attendibili. Passare ciecamente questo header senza verificare l'origine consente a utenti malintenzionati di aggirare rate limit e ban falsificando il proprio indirizzo IP.
# IP IPv4 di Cloudflare, vedi 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;
# IP IPv6 di 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;Successivamente, individua la tua direttiva location / o @reverse_proxy. Grazie alla configurazione sopra, Nginx risolverà ora in modo sicuro $remote_addr verso l'IP reale del client solo se la richiesta è effettivamente passata attraverso Cloudflare. Modifica i tuoi header di inoltro IP come segue:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}Salva la configurazione e ricarica il servizio Nginx del tuo host. Non è necessaria la ricompilazione del container Discourse per questo passaggio.
Validazione e Test
Per verificare che la tua configurazione di rete stia trasmettendo con successo i dati corretti a ProxyTracer:
- Accedi alla dashboard amministrativa di Discourse: Admin → Users.
-
Esamina le colonne
Registration IPoLast IPper l'attività recente.-
Configurazione Errata: Se osservi IP Cloudflare (vedi qui per l'elenco completo) o IP di rete locale (es.
127.0.0.1,172.x.x.x), l'inoltro IP sta fallendo. ProxyTracer non può proteggere il tuo sito in questo stato. - Configurazione Corretta: Se osservi indirizzi IP residenziali standard e univoci, la tua architettura di rete è configurata correttamente e ProxyTracer sta monitorando attivamente il tuo traffico.
-
Configurazione Errata: Se osservi IP Cloudflare (vedi qui per l'elenco completo) o IP di rete locale (es.
Accesso di Emergenza
cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exitLicenza
Questo plugin è rilasciato sotto licenza GNU Affero General Public License v3.0 (AGPLv3).