Discourse
De officiële ProxyTracer integratie voor Discourse. Deze plugin brengt enterprise IP-intelligence naar je community, detecteert automatisch bekende VPN's, proxy's, datacenters en Tor-nodes, en biedt de mogelijkheid om registraties, logins of zelfs de volledige toegang tot je Discourse-forum te blokkeren.
De plugin wordt gedistribueerd via deze Github repository.
Functies
- Zero-configuratie blokkering van proxy's, VPN's, datacenters en Tor exit nodes.
- Sub-10ms latency met in-memory edge-verwerking.
- Geïntegreerde Redis-caching om overbodige API-aanroepen voor terugkerende bezoekers te elimineren.
-
Ingebouwde ondersteuning voor exacte IP- en CIDR-subnet whitelisting (bijv.
192.168.1.0/24).
Installatie
-
Verbind via SSH met je server en open je Discourse container configuratiebestand (meestal
/var/discourse/containers/app.yml):cd /var/discourse -
Zoek het
hooks.after_codeblock en voeg de plugin repository toe onder degit clonesectie:nano containers/app.yml -
Sla het configuratiebestand op en herbouw de container om de plugin te installeren:
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 -
Het rebuild-proces duurt meestal 5 tot 10 minuten, afhankelijk van je serverspecificaties.
./launcher rebuild app
Configuratie:
- Vraag een standaard API-key aan via het ProxyTracer Dashboard.
-
Ga naar je Discourse admin dashboard: Admin → Plugins → Settings (of zoek naar
proxytracerin de zoekbalk van de instellingen). -
Voer je API-key in het veld
proxytracer_api_keyin. -
Schakel de plugin in door
proxytracer_enabledaan te vinken. -
Voeg vertrouwde IP's of CIDR-reeksen toe aan de
Whitelisted IPslijst. - (Optioneel) Pas de API-timeout en de Redis-cacheduur aan op basis van de specifieke verkeersvereisten van je server.
- (Optioneel) Pas het blokkeringsbericht aan dat wordt getoond aan geblokkeerde gebruikers. Je kunt bijvoorbeeld instructies toevoegen om contact op te nemen met het beheer van de site voor het geval zij menen dat de blokkade onterecht is en dat ze de site niet via een proxy of VPN bezoeken.

Netwerkconfiguratie: Cloudflare & Reverse Proxies
Volg de onderstaande configuratierichtlijnen die aansluiten bij de architectuur van je server om een nauwkeurige IP-forwarding te waarborgen.
Directe Cloudflare-integratie (Standaardinstallatie)
Dit geldt als je Discourse-server rechtstreeks met het internet verbonden is en Cloudflare uitsluitend gebruikt voor DNS en edge-proxying. In deze standaardconfiguratie moet je Discourse instellen om de IP-ranges van Cloudflare te vertrouwen en het werkelijke client-IP uit de inkomende headers te halen.
-
Verbind met je server via SSH en bewerk je containerconfiguratie:
nano /var/discourse/containers/app.yml -
Zoek het
templates:block en voeg de officiële Cloudflare-templatetemplates/cloudflare.template.ymltoe:templates: - "templates/postgres.template.yml" - "templates/redis.template.yml" - "templates/web.template.yml" - "templates/web.ratelimited.template.yml" - "templates/cloudflare.template.yml" -
Sla het bestand op en herbouw de Discourse-container om de wijzigingen toe te passen:
./launcher rebuild app
Multi-Layer Proxy-architectuur (Cloudflare + Lokale Reverse Proxy)
Dit geldt als je Discourse-instantie wordt gerouteerd via een lokaal serverbeheerpaneel of reverse proxy (zoals CloudPanel, Nginx Proxy Manager, Traefik, Plesk) die zich achter Cloudflare bevindt. In zo'n multi-layer (of "dubbele") reverse proxy-architectuur faalt de standaard Discourse cloudflare.template.yml omdat het verkeer aan Discourse wordt overgedragen door je lokale netwerkinterface, niet rechtstreeks door Cloudflare. Gebruik in dit scenario niet de Cloudflare-template.
In plaats daarvan moet je je lokale reverse proxy configureren om het werkelijke client-IP te extraheren uit de CF-Connecting-IP header, maar uitsluitend voor verkeer afkomstig van vertrouwde Cloudflare IP-adressen. Het blindelings doorgeven van deze header zonder de bron te verifiëren stelt kwaadwillende gebruikers in staat om rate limits en bans te omzeilen door hun IP-adres te spoofen.
# IPv4 Cloudflare IP-adressen, zie 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-adressen
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;Zoek vervolgens je location / of @reverse_proxy directief. Dankzij de bovenstaande configuratie zal Nginx $remote_addr nu alleen veilig omzetten naar het werkelijke client-IP als het verzoek daadwerkelijk via Cloudflare is binnengekomen. Pas je IP-forwarding headers als volgt aan:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}Sla de configuratie op en herlaad de Nginx-service op je host. Een rebuild van de Discourse-container is voor deze stap niet vereist.
Validatie en Testen
Om te controleren of je netwerkconfiguratie de juiste data succesvol doorgeeft aan ProxyTracer:
- Ga naar je Discourse admin dashboard: Admin → Users.
-
Bekijk de kolommen
Registration IPofLast IPvoor recente activiteit.-
Onjuiste Configuratie: Als je Cloudflare IP's ziet (zie hier voor een volledige lijst) of lokale netwerk-IP's (bijv.
127.0.0.1,172.x.x.x), faalt de IP-forwarding. ProxyTracer kan je site in deze staat niet beschermen. - Correcte Configuratie: Als je standaard, unieke residentiële IP-adressen ziet, is je netwerkarchitectuur correct geconfigureerd en houdt ProxyTracer je verkeer actief in de gaten.
-
Onjuiste Configuratie: Als je Cloudflare IP's ziet (zie hier voor een volledige lijst) of lokale netwerk-IP's (bijv.
Noodtoegang
cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exitLicentie
Deze plugin is gelicentieerd onder de GNU Affero General Public License v3.0 (AGPLv3).