📘 Reflektör Kurulum Kılavuzu

DVPX ağına kendi reflektörünüzü eklemek istiyorsanız doğru yerdesiniz. Bu sayfa baştan sona ne yapacağınızı anlatır: neye ihtiyacınız var, hangi adımlar sizde, hangi adımlar panel yöneticisinde.

Başlamaya hazır mısınız?
Reflektör yöneticisi olarak kaydolun; talebinizi panodan gönderirsiniz.
🛰️ Reflektör nedir, ne yapar?

Reflektör, DVPX kullanıcılarının buluştuğu sunucudur. Uygulamalar ona TCP ile bağlanıp kimliğini bildirir ve bir talkgroup seçer; konuşurken ses paketleri UDP ile reflektöre gider, reflektör de aynı talkgroup'taki herkese dağıtır.

Reflektörler birbirine de bağlanır: bir talkgroup ağın tamamında ortaktır, hangi reflektöre bağlı olduğunuz konuşmayı bölmez. Reflektör veritabanına DOĞRUDAN BAĞLANMAZ — panelle yalnızca kendisine verilen API token'ı üzerinden konuşur. Bu yüzden sizin sunucunuzda hiçbir veritabanı bilgisi bulunmaz.

🧭 Süreç: baştan sona
  1. Kaydolun. Çağrı işaretiniz kullanıcı adınız olur. Hesabınız panel yöneticisinin onayını bekler.
  2. Reflektör ekleme talebi gönderin. Sunucunuzun adresini, portlarını ve gerekçenizi yazın. Sunucuyu bu adımdan önce kiralamış olmanız gerekmez, ama adresini biliyor olmanız gerekir.
    Formda SSH bilgileri de sorulur ama ZORUNLU DEĞİLDİR — boş bırakabilirsiniz. Verirseniz panel yöneticisi bir arıza anında sunucunuza bakıp kurulumda size yardım edebilir; parola şifreli saklanır ve yalnızca panel yöneticisi görür.
  3. Onay ve token. Panel yöneticisi talebi onaylar ve reflektör kaydını oluşturur. Token ürettiği anda token BU PANODA sizi bekler: "Panom" ekranındaki Reflektörlerim listesinden ⚿ Token'ı Göster düğmesine basarsınız ve hazır bir config.json ile birlikte görünür. Token'ın WhatsApp'tan ya da e-postadan gönderilmesi GEREKMEZ — zaten gönderilmemesi gerekir.
    Panoda beklerken token şifreli durur ve anahtarı veritabanında değildir. Kurulumu bitirince "Aldım, panodan kaldır" düğmesiyle silin.
  4. Sunucuyu hazırlayın. Node.js kurun, dosyaları yerleştirin, config.json yazın, portları açın, servisi başlatın. Aşağıdaki bölümler bunu anlatır.
  5. Doğrulayın. Reflektörünüz panele haber vermeye başlayınca panonuzdaki "Reflektörlerim" listesinde YAYINDA görünür. Görünmüyorsa nedenini aynı satır yazar.
🔢 Talkgroup numaraları nasıl seçilir?

Bir talkgroup numarası ÜLKE KODUYLA BAŞLAR. Kaydolurken seçtiğiniz ülke bu kodu belirler ve yalnızca kendi kodunuzla başlayan numaraları talep edebilirsiniz. Böylece numara alanı ülkelere göre kendiliğinden bölünür ve iki ülkenin operatörü aynı numarayı istemez.

Numara Anlamı Kim açar?
90 Türkiye geneli Panel yöneticisi
9034 Türkiye / İstanbul (34 = plaka kodu) Siz talep edersiniz
9006 Türkiye / Ankara Siz talep edersiniz
1 ABD geneli Panel yöneticisi
Formda ülke kodunu YAZMANIZ GEREKMEZ. Talep penceresinde ülke kodunuz alanın önünde sabit durur; siz yalnızca bölge/şehir kodunu yazarsınız ve numara kendiliğinden birleşir. Örnek: kodunuz 90 ise ve 01 yazarsanız talep 9001 olarak gider — yazarken tam numarayı alanın altında da görürsünüz.
Ülke kodunun KENDİSİ (ör. 90) ülke geneli gruptur ve reflektör kurulurken panel yöneticisi tarafından açılır; onu talep etmeniz gerekmez.
✅ Neye ihtiyacınız var?
En az Rahat
CPU1 çekirdek4 çekirdek
RAM1 GB4 GB
Disk5 GB30 GB
İşletim sistemi Ubuntu 22.04 / Debian 12 Ubuntu 24.04
Genel adres Sabit IP (zorunlu) Alan adı + sabit IP
Node.js1820
🍓 Raspberry Pi ve mini PC de olur. Reflektör mutlaka bir VPS üzerinde çalışmak zorunda değildir. Raspberry Pi 4 / 5 ya da benzeri bir mini bilgisayar (Intel NUC, thin client, eski bir dizüstü…) yukarıdaki donanım eşiğini karşıladığı sürece kullanılabilir. Belirleyici olan kutunun türü değil, karşıladığı gereksinimlerdir: yeterli CPU/RAM/disk, 7/24 açık kalabilme ve sabit bir genel adres.
Raspberry Pi kullanacaksanız: 64-bit Raspberry Pi OS (Debian tabanlı) kurun — kılavuzdaki bütün komutlar olduğu gibi çalışır. Sistemi SD kart yerine SSD/USB diskten çalıştırmanız önerilir; SD kartlar sürekli yazma altında yıllar değil aylar dayanır ve bir gün habersiz ölürler.
⚠️ Sabit (statik) genel IP ŞARTTIR. Uygulamaların reflektöre internetten DOĞRUDAN bağlanması gerekir; adres değişirse bütün kullanıcılar düşer. Bu yüzden sabit genel IP bir tercih değil, zorunluluktur. VPS sağlayıcıları sabit IP'yi varsayılan olarak verir; ev interneti genelde uygun değildir (dinamik IP, NAT, kapalı portlar).
🌐 Alan adı (domain) da olur — hatta daha iyidir. IP yerine bir alan adı (ör. dvpx.siteniz.com) yönlendirebilirsiniz. Daha iyi olmasının sebebi şu: sunucunuzu bir gün başka bir sağlayıcıya taşırsanız yalnızca DNS kaydını değiştirirsiniz, kullanıcıların ayarına dokunmanız gerekmez. Ev bağlantısında dinamik IP ile denemek zorundaysanız bir DDNS adı kullanın — ama bu kalıcı bir çözüm değildir, sabit IP'nin yerini tutmaz.
🔌

Açık portlar

TCP 62070 (sinyalleşme), UDP 62071 (ses). UDP portu hem gelen hem giden yönde açık olmalı — reflektörler arası bağ da bu portu kullanır.

⚿

API token

Panel yöneticisi üretir; panonuza şifreli olarak düşer. Onsuz reflektör politika alamaz ve uygulamalara dağıtılmaz.

🌐

Sabit adres

Sabit genel IP zorunlu; üstüne bir alan adı yönlendirmek daha iyidir. Sunucu değişse bile kullanıcı ayarı değişmez.

🔐

SSH erişimi

Sağlayıcınızın verdiği IP, kullanıcı adı (genelde root) ve şifre ya da SSH anahtarı. Kurulumu bu bağlantı üzerinden yapacaksınız.

⌨️ Kurulum — kopyalanabilir komutlar
Komutlar Ubuntu/Debian içindir ve root olarak çalıştırıldığını varsayar. Raspberry Pi OS Debian tabanlı olduğu için aynı komutlar orada da olduğu gibi çalışır (Node.js kurulum betiği arm64 mimarisini kendisi tanır). Ayrıntılı anlatım (ekran çıktıları, sorun giderme, sağlayıcı güvenlik duvarları) reflektör paketindeki KURULUM.md dosyasındadır.

1) Node.js

Önce kurulu mu bakın: sürüm 18 veya üzeriyse bu adımı atlayın.

node --version
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt install -y nodejs

💡 npm install ÇALIŞTIRMANIZA GEREK YOK. DVPX reflektörünün hiçbir dış paket bağımlılığı yoktur; Node'un kendi modüllerini kullanır.

2) Dosyaları depodan çekin

Dosyalar herkese açık GitHub deposundadır. Git ile çekmeniz önerilir: güncelleme daha sonra tek komuta iner.

sudo apt install -y git sudo git clone https://github.com/cektor/DVPX.git /opt/dvpx-reflector cd /opt/dvpx-reflector node --check src/index.js # sözdizimi kontrolü

Komutun sonundaki /opt/dvpx-reflector yolunu atlamayın: hedef dizini açıkça vermek dosyaların tam olarak oraya inmesini sağlar (mkdir yapmanız gerekmez, git dizini kendisi oluşturur). Bu yolu bilerek seçiyoruz — depoyla gelen dvpx-reflector.service dosyası da aynı yolu kullanır, böylece onu hiç düzenlemeden kopyalayabilirsiniz. Depo yalnızca reflektördür; panel ağın merkezinde çalışır ve sizin sunucunuza kurulmaz.

3) config.json

Aşağıdaki şablonu /opt/dvpx-reflector/config.json olarak kaydedin. Panelin adresi bu kuruluma göre önceden yazılmıştır; token'ı yöneticiden aldığınız değerle değiştirin. Portlar talebinizde yazdıklarınızla AYNI olmalıdır.

{ "serverName": "DVPX-ADINIZ", "bindAddress": "0.0.0.0", "tcpPort": 62070, "udpPort": 62071, "dashboard": { "url": "https://dvpx.algsoft.net.tr/reflector.php", "token": "BURAYA_YONETICIDEN_ALDIGINIZ_TOKEN" }, "peers": { "enabled": true, "bridgeTalkgroups": "all" }, "logLevel": "info", "logCalls": true }
🔒 Token bir paroladır. Kimseyle paylaşmayın, ekran görüntüsünde göstermeyin, forumda yapıştırmayın. Dosyayı yalnızca root okuyabilsin:
chmod 600 /opt/dvpx-reflector/config.json

4) Güvenlik duvarı

⚠️ ufw --force enable komutundan ÖNCE mutlaka 22/tcp izni verin; yoksa kendi SSH bağlantınız kesilir ve sunucuya giremezsiniz.
ufw allow 22/tcp ufw allow 62070/tcp ufw allow 62071/udp ufw --force enable ufw status

Sağlayıcınızın panelinde İKİNCİ bir güvenlik duvarı olabilir (Hetzner, AWS, Oracle Cloud, Azure, Google Cloud…). En sık atlanan yer burasıdır: aynı kuralları oraya da ekleyin.

5) Deneme çalıştırması

cd /opt/dvpx-reflector node src/index.js

Log temiz görünüyorsa (panele kayıt başarılı, TCP/UDP dinleniyor) Ctrl+C ile durdurup servise geçin.

6) Servis olarak kurun

Böylece SSH penceresini kapatsanız da çalışır, sunucu yeniden başlarsa kendiliğinden açılır, çökerse kendiliğinden geri gelir. Reflektörü root ile ÇALIŞTIRMAYIN.

useradd --system --no-create-home --shell /usr/sbin/nologin dvpx chown -R dvpx:dvpx /opt/dvpx-reflector chmod 600 /opt/dvpx-reflector/config.json cp /opt/dvpx-reflector/dvpx-reflector.service /etc/systemd/system/ systemctl daemon-reload systemctl enable dvpx-reflector systemctl start dvpx-reflector systemctl status dvpx-reflector

Kurulum yolunuz /opt/dvpx-reflector değilse servis dosyasındaki WorkingDirectory, Documentation ve ReadWritePaths satırlarını düzeltin. node başka bir yerdeyse (which node) ExecStart satırını da düzeltin.

🔎 Çalıştığını doğrulayın

Log temiz mi?

journalctl -u dvpx-reflector -f journalctl -u dvpx-reflector -p err -n 50

Portlar dinleniyor mu?

ss -lntup | grep -E '62070|62071'

Panelde görünüyor mu?

Panonuzdaki "Reflektörlerim" listesine bakın. Reflektörün YAYINDA sayılması için dört koşulun BİRLİKTE sağlanması gerekir:

  • Panelde bir API token verilmiş olmalı
  • Kayıt panel yöneticisi tarafından onaylı olmalı
  • Durum "online" olmalı (bakımda değil)
  • Son 2 dakika içinde panele haber vermiş olmalı

Dördünden biri eksikse satır YAYINDA DEĞİL yazar ve hangi koşulun eksik olduğunu belirtir.

⬆️ Güncelleme
Panel yöneticisi panonuzda kırmızı bir "güncelleme emri" uyarısı bıraktıysa aşağıdaki adımları uygulayın. Güncelleme birkaç dakika sürer ve bu sürede reflektörünüz kısa bir süre ağdan düşer.

1) Önce yedek alın

config.json sizin dosyanızdır ve depoda tutulmaz; git pull üzerine yazmaz. Yine de yedek bir dakikanızı alır ve token'ınızı yeniden istemek zorunda kalmanızı önler.

cp /opt/dvpx-reflector/config.json ~/config.json.yedek

2) Güncellemeyi indirin ve kurun

Git ile kurduysanız (önerilen yol) tamamı beş komut. git kurulu değilse ilk satır onu kurar.

sudo apt install -y git sudo systemctl stop dvpx-reflector cd /opt/dvpx-reflector sudo git pull sudo chown -R dvpx:dvpx /opt/dvpx-reflector sudo systemctl start dvpx-reflector
⚠️ git pull komutunu /opt/dvpx-reflector içinde çalıştırın. Başka bir dizinde "not a git repository" hatası alırsınız.

Git ile kurmadıysanız (tek seferlik geçiş)

Dizin bir git deposu değilse (zip ile kurduysanız) bir kereye mahsus yeniden klonlayın; config.json'ınız korunur. Bundan sonraki güncellemeler yukarıdaki beş komuta iner.

sudo apt install -y git sudo systemctl stop dvpx-reflector sudo mv /opt/dvpx-reflector /opt/dvpx-reflector.eski sudo git clone https://github.com/cektor/DVPX.git /opt/dvpx-reflector sudo cp /opt/dvpx-reflector.eski/config.json /opt/dvpx-reflector/ sudo chown -R dvpx:dvpx /opt/dvpx-reflector sudo chmod 600 /opt/dvpx-reflector/config.json sudo systemctl start dvpx-reflector # her şey çalışıyorsa eski klasörü silin: sudo rm -rf /opt/dvpx-reflector.eski

3) Güncellendiğini nasıl anlarsınız?

Log satırlarında yeni sürüm numarasını görürsünüz. Reflektör panele ilk bildirimini yaptığı an (en fazla birkaç dakika) panonuzdaki kırmızı uyarı KENDİLİĞİNDEN kalkar — "okudum" düğmesine basmanız ya da yöneticiye haber vermeniz gerekmez. Uyarı kalkmıyorsa güncelleme gerçekten uygulanmamıştır.

systemctl status dvpx-reflector node /opt/dvpx-reflector/src/index.js --version
🛠️ En sık karşılaşılan üç sorun
Belirti Neden Çözüm
Servis çalışıyor, log temiz, ama kimse bağlanamıyor Portlar kapalı — genelde sağlayıcının güvenlik duvarında Hem ufw hem sağlayıcı panelinde 62070/tcp ve 62071/udp açın
Ses gitmiyor, sinyalleşme çalışıyor UDP portu açık değil (TCP açılmış, UDP unutulmuş) UDP 62071'i açın; TCP kuralı UDP'yi kapsamaz
Panelde "hiç bağlanmadı" yazıyor config.json içindeki url ya da token hatalı Adresi ve token'ı kontrol edin, sonra: systemctl restart dvpx-reflector

config.json her değişiklikten sonra servisi YENİDEN BAŞLATMAK gerekir; dosya yalnızca açılışta okunur.

🤝 Reflektör yöneticisinden beklenenler
  • Reflektörünüzü sürekli açık tutun. Planlı bakımı önceden haber verin.
  • Yazılımı güncel tutun; panel yöneticisi bir sürüm duyurduğunda geçin.
  • API token'ını gizli tutun. Sızdığını düşünüyorsanız panonuzdaki "Yeni Token İste" düğmesiyle DERHAL yenisini talep edin.
  • Bir sorun olduğunda panonuzdaki 💬 Yönetici ile Yazış ekranından yazın; yazışma anlık ilerler ve bütün panel yöneticileri görür.
  • Reflektörü root ile çalıştırmayın; ayrıcalıksız bir kullanıcı kullanın.
  • Anlık iletişim bilgilerinizi güncel tutun — acil durumda size oradan ulaşılır.
  • Kullanıcı trafiğini kaydetmeyin ve üçüncü taraflara aktarmayın.
Panel yöneticisi bir reflektörü onaydan çıkarabilir ya da token'ını iptal edebilir; bu durumda reflektör ağdan anında düşer. Sebep her zaman size bildirilir.
🔐 Bu paneldeki yetkileriniz

Reflektör yöneticisi hesabı BİLEREK çok sınırlıdır. Yaptığınız hiçbir işlem ağa doğrudan dokunmaz; her şey panel yöneticisinin onayından geçer.

Yapabilirsiniz

  • Reflektör ekleme talebi göndermek
  • Talkgroup ekleme talebi göndermek
  • Kendi bekleyen talebinizi geri çekmek
  • Kendi reflektörünüzün durumunu izlemek
  • Kendi talkgrouplarınızı ve onlara bağlı istasyonları görmek
  • Kendi reflektör ve talkgrouplarınızın son duyulanlarını izlemek
  • Size verilen API token'ını panodan okumak
  • Gerekçe bildirerek yeni token talep etmek
  • Panel yöneticisi ile panodan yazışmak
  • Kendi iletişim bilgilerinizi ve parolanızı değiştirmek

Yapamazsınız

  • Talkgroup açmak, kapatmak ya da silmek
  • Reflektör onaylamak ya da API token üretmek
  • Kullanıcı listesini görmek ya da kullanıcı engellemek
  • AĞIN TAMAMININ son duyulanlarını ya da istatistiklerini görmek (yalnızca kendi kapsamınızı görürsünüz)
  • Kişiden kişiye özel çağrıları ya da özel talkgroup trafiğini görmek
  • Başka bir yöneticinin talebini ya da bilgilerini görmek