Discourse
Discourse için resmi ProxyTracer entegrasyonu. Bu eklenti topluluğunuza kurumsal düzeyde IP istihbaratı kazandırarak bilinen VPN'leri, proxy'leri, veri merkezlerini ve Tor çıkış düğümlerini otomatik olarak tespit eder; kayıt olmalarını, giriş yapmalarını veya Discourse forumunuzu tamamen görüntülemelerini engelleme seçeneği sunar.
Eklenti bu GitHub deposu üzerinden dağıtılmaktadır.
Özellikler
- Yöneticilerin yeni kullanıcı kayıtları, mevcut kullanıcı girişleri veya genel olarak tüm site ziyaretçileri için IP doğrulamasını zorunlu kılmasına olanak tanıyan ayrıntılı denetim.
- Yerleşik Redis önbelleği son IP adresi değerlendirmelerini saklayarak harici API çağrılarını büyük ölçüde azaltır ve sıfır gecikme sağlar.
- API zaman aşımı veya ağ arızası durumunda eklenti, geniş çaplı erişim kilitlenmelerini önlemek için kullanıcı erişimine öncelik verir (fail-open). Bu davranış seçenekler üzerinden değiştirilebilir.
- Tam IP ve CIDR alt ağ beyaz listesi (whitelist) için yerleşik destek.
Kurulum
-
Sunucunuza SSH ile bağlanın ve Discourse dizininize gidin:
cd /var/discourse -
Düzenlemek için konteyner yapılandırma dosyanızı açın:
nano containers/app.yml -
hooksbölümünü bulun ve depo klonlama komutunu doğrudandocker_managerkurulumunun hemen altına ekleyin: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 -
Yapılandırma dosyasını kaydedin ve eklentiyi derlemek için Discourse konteynerinizi yeniden oluşturun:
./launcher rebuild app
Yapılandırma:
- ProxyTracer Kontrol Panelinden standart bir API anahtarı edinin.
- ProxyTracer ayarlarını bulmak için Discourse yönetim panelinize gidin: Yönetici → Eklentiler → ProxyTracer.
-
API anahtarınızı
ProxyTracer API Keyalanına girin. -
Enabled during Signup,Enabled during Loginve/veyaEnabled for All Visitorsseçeneklerini etkinleştirerek koruma parametrelerini açın. -
Güvenilir IP'leri veya CIDR aralıklarını
Whitelisted IPslistesine ekleyin. - (İsteğe bağlı) API zaman aşımını ve Redis önbellek süresi sınırlarını sunucunuzun özel trafik gereksinimlerine göre ayarlayın.
- (İsteğe bağlı) Engellenen kullanıcılara gösterilecek Engelleme Mesajını özelleştirin. Örneğin, engellemenin hatalı olduğunu düşünen kullanıcılar için site yönetimiyle iletişime geçme yönergeleri ekleyebilirsiniz.

Ağ Yapılandırması: Cloudflare ve Ters Proxy'ler
Doğru IP iletimini sağlamak için lütfen sunucu mimarinize uygun aşağıdaki yapılandırma yönergelerini izleyin.
Doğrudan Cloudflare Entegrasyonu (Standart Kurulum)
Bu ayar, Discourse sunucunuzun doğrudan internete bağlı olduğu ve Cloudflare'i yalnızca DNS ve edge proxy için kullandığı standart kurulumlar için geçerlidir. Bu durumda Discourse'u Cloudflare IP aralıklarına güvenecek ve gelen başlıklardan gerçek istemci IP'sini çıkaracak şekilde yapılandırmanız gerekir.
-
Sunucunuza SSH ile bağlanın ve konteyner yapılandırmanızı düzenleyin:
nano /var/discourse/containers/app.yml -
templates:bloğunu bulun ve resmi Cloudflare şablonunu ekleyin:templates/cloudflare.template.ymltemplates: - "templates/postgres.template.yml" - "templates/redis.template.yml" - "templates/web.template.yml" - "templates/web.ratelimited.template.yml" - "templates/cloudflare.template.yml" -
Dosyayı kaydedin ve değişiklikleri uygulamak için Discourse konteynerini yeniden derleyin:
./launcher rebuild app
Çok Katmanlı Proxy Mimarisi (Cloudflare + Yerel Ters Proxy)
Bu senaryo, Discourse sunucunuz Cloudflare'in arkasında yerel bir sunucu yönetim paneli veya ters proxy (ör. CloudPanel, Nginx Proxy Manager, Traefik, Plesk) üzerinden yönlendirildiğinde geçerlidir. Çok katmanlı bir ters proxy mimarisinde, trafik Discourse'a doğrudan Cloudflare tarafından değil yerel ağ arayüzünüz tarafından iletildiği için standart cloudflare.template.yml şablonu çalışmaz. Bu senaryoda Cloudflare şablonunu kullanmayın.
Bunun yerine yerel ters proxy'nizi, gerçek istemci IP'sini CF-Connecting-IP başlığından çıkaracak şekilde yapılandırmalısınız; ancak bu işlem yalnızca güvenilir Cloudflare IP adreslerinden gelen trafik için yapılmalıdır. Kaynağı doğrulamadan bu başlığı doğrudan iletmek, kötü niyetli kullanıcıların IP başlıklarını taklit ederek hız sınırlarını ve yasakları atlamasına olanak tanır.
# IPv4 Cloudflare IP'leri, bkz. 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'leri
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;Ardından location / veya @reverse_proxy yönergenizi bulun. Yukarıdaki yapılandırma sayesinde Nginx, yalnızca istek gerçekten Cloudflare üzerinden geçmişse $remote_addr değişkenini gerçek istemci IP'sine güvenle çözecektir. IP iletme başlıklarınızı aşağıdaki gibi düzenleyin:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
...
}Yapılandırmayı kaydedin ve ana sunucunuzun Nginx servisini yeniden yükleyin (systemctl reload nginx). Bu adım için Discourse konteynerini yeniden derlemek gerekmez.
Doğrulama ve Test
Ağ yapılandırmanızın ProxyTracer'a doğru verileri ilettiğini doğrulamak için:
- Discourse yönetim panelinize gidin: Yönetici → Kullanıcılar.
-
Son aktiviteler için
Kayıt IP'siveyaSon IPsütunlarını inceleyin.-
Hatalı Kurulum: Cloudflare IP'leri (tam liste için buraya bakın) veya yerel ağ IP'leri (ör.
127.0.0.1,172.x.x.x) görüyorsanız, IP iletme yapılandırması başarısız olmuştur. ProxyTracer bu durumda sitenizi koruyamaz. - Doğru Kurulum: Standart, benzersiz konut IP adresleri görüyorsanız, ağ mimariniz doğru yapılandırılmıştır ve ProxyTracer trafiğinizi aktif olarak denetlemektedir.
-
Hatalı Kurulum: Cloudflare IP'leri (tam liste için buraya bakın) veya yerel ağ IP'leri (ör.
Acil Durum Erişimi
cd /var/discourse
./launcher enter app
rails c
SiteSetting.proxytracer_enabled = false
exit
exitLisans
Bu eklenti GNU Affero Genel Kamu Lisansı v3.0 (AGPLv3) kapsamında lisanslanmıştır.