RehberSunucu sahipleri için
NuVotifier nasıl kurulur ve test edilir: adım adım
NuVotifier'ı Paper'a ya da Velocity networküne kur, portu aç, test et ve logda gördüğün her hatayı oku. Paper 26.3 ve Velocity 4.2 üzerinde test edildi.
NuVotifier, sunucu listelerinden gelen oyları alan eklentidir. Onu sunucuna ya da proxy'ne kurar, tek bir TCP portu açar ve her listeye adresini, portunu ve ya bir v1 açık anahtarını ya da bir v2 token'ını verirsin. Kendi başına ödül dağıtmaz, bu yüzden VotingPlugin gibi bir ödül eklentisine de ihtiyacın var ve oyunculara /vote demeden önce tüm yolu bir kez test etmelisin.
Bunu kablonun iki ucundan yazdık. serverlist.net şu anda 95 ilana oy gönderiyor, bu rehber için de taptaze bir Paper 26.3 sunucusunda ve bir Velocity 4.2 proxy'sinde NuVotifier çalıştırdık, ona hem geçerli hem kasten bozuk oylar gönderdik ve konsolun yazdıklarını kopyaladık. Aşağıda alıntılanan her log satırı bu kurulumdan geldi, token'lar ve adresler örneklerle değiştirildi.
nuvotifier.jardosyasınıpluginsklasörüne koy ve yeniden başlat.- NuVotifier'ın ürettiği portu (varsayılan 8192), token'ı ve açık anahtarı not al.
- Bu portu hosting'inde ya da güvenlik duvarında TCP için aç.
- Adresi, portu ve token'ı (ya da anahtarı) serverlist.net ilanına ekle.
- Votifier test aracından bir test gönder ve konsolu izle.
- VotingPlugin'i kur ve
ServerList.netoy sitesine bir ödül ver.
NuVotifier ne yapar, ne yapmaz
NuVotifier bir TCP portunu dinler. Bir liste bağlandığında tek bir oy mesajı okur, onu anahtarınla ya da token'ınla doğrular ve sunucunun içinde bir oy olayı tetikler. Bir oy dört şey taşır: listenin servis adı (bizimki ServerList.net), oyuncunun yazdığı kullanıcı adı, oy verenin IP adresi ve bir zaman damgası.
Yapmadıkları da aynı derecede önemli:
- Ödül vermez. Bir ödül eklentisi olayı dinler ve ödemeyi yapar.
- Oyuncunun var olup olmadığını kontrol etmez. Adları liste doğrular, bilinmeyenlere ne yapılacağına ödül eklentisi karar verir.
- Yalnızca TCP kullanır. Sadece UDP için açılmış bir port Votifier'ı erişilemez bırakır.
- v1 kullanan listeye hiçbir şey geri göndermez, bu da test etme biçimini değiştirir.
Resmî sürüm hâlâ Temmuz 2021'den 2.7.3, Paper, Spigot, BungeeCord, Velocity ve Sponge için tek bir jar. Testimizde Paper 26.3 ve Velocity 4.2.0 üzerinde değişiklik yapmadan yüklendi ve oyları aldı. Java 25'te WARNING: sun.misc.Unsafe::objectFieldOffset has been called by satırını içeren bir uyarı bloğu yazdırıyor. Bu, Java'daki gelecekteki bir değişiklikle ilgili, bir hata değil ve oylar çalışmaya devam etti.
Resmî sürüm Folia'yı desteklemiyor. Bakımı süren fork azuvotifier destekliyor (sürüm 3.3.6, Kasım 2025) ve aynı protokolü konuşuyor, bu yüzden listeler onu NuVotifier gibi görüyor.
v1 anahtarı mı v2 token'ı mı
Listeler NuVotifier ile iki protokol sürümüyle konuşabilir ve ikisini de açık bırakabilirsin.
| v1 (açık anahtar) | v2 (token) | |
|---|---|---|
| Listeye ne veriyorsun | rsa/public.key içeriği | config.yml içindeki token |
| Oy nasıl korunuyor | RSA açık anahtarınla şifrelenir | Token ile HMAC-SHA256 kullanılarak imzalanır, ayrıca her bağlantıda yeni bir doğrulama değeri (challenge) eklenir |
| Yakalanan bir oy yeniden oynatılabilir mi | Evet | Hayır, her doğrulama değeri bir kez işe yarar |
| Liste işe yarayıp yaramadığını öğrenir mi | Hayır. NuVotifier 256 bayt okur ve bağlantıyı cevap vermeden kapatır | Evet. NuVotifier {"status":"ok"} ya da nedeniyle birlikte bir hatayla cevap verir |
| Kim destekler | Hemen hemen her liste | NuVotifier'ın protokolünü uygulayan listeler, serverlist.net dahil |
v1 açık anahtarına sahip olan herkes geçerli bir oy üretebilir, çünkü onunla şifrelemek protokolün tamamıdır, bu yüzden onu asla herkese açık bir kanala yapıştırma. Bir v1 anahtarının eşleşip eşleşmediği ise konsolunda görünür, başka hiçbir yerde değil.
serverlist.net'te v2 kullan. Kullandığın diğer listeler hâlâ ihtiyaç duyuyorsa v1'i açık tut. 18 Ekim 2026 itibarıyla 218 ilanımızdan 97'sinde Votifier kuruluydu, 68'inde v1 anahtarı, 29'unda v2 token'ı (canlı: 68 ve 27).
Paper'a kurulum
nuvotifier.jardosyasını NuVotifier'ın GitHub sürümler sayfasından ya da SpigotMC sayfasından indir ve sunucununpluginsklasörüne koy.Sunucuyu başlat. İlk açılışta NuVotifier token'ını ve nerede dinlediğini yazdırır:
[Votifier] Your default NuVotifier token is e4qk2v9m1r7t0p5s3a8d6f2h1j. [Votifier] Votifier enabled on socket /0.0.0.0:8192.Sunucuyu durdur ve
plugins/Votifier/config.ymldosyasını aç. Yorumlar çıkarıldığında varsayılan hâli şöyle görünür:host: 0.0.0.0 port: 8192 disable-v1-protocol: false tokens: default: e4qk2v9m1r7t0p5s3a8d6f2h1j forwarding: method: none pluginMessaging: channel: nuvotifier:voteshostdeğerine bak. Varsayılanıserver.propertiesiçindekiserver-ip, o boşsa0.0.0.0. Test sunucumuzdaserver-ip127.0.0.1idi, bu yüzden NuVotifier sessizce127.0.0.1:8192adresini dinledi ve hiçbir liste oraya ulaşamazdı. Her yeniden başlatmadan sonraVotifier enabled on socketsatırını oku.0.0.0.0ya da internetten erişilebilen bir adres göstermeli.portdeğerini hosting'inin verdiği port yap. Boş bir TCP portu olmalı ve oyun portun olamaz.Kullandığın her liste v2'yi desteklemiyorsa
disable-v1-protocol: falseolarak bırak.Sunucuyu tamamen yeniden başlat. Testimizde
config.ymliçinden silinen bir token, bir sonraki yeniden başlatmaya kadar/nvreloadsonrasında da çalışmaya devam etti, bu yüzden token'ları değiştirdikten sonra yeniden yüklemeye güvenme.
NuVotifier token'ı listenin servis adına göre arar ve bulamazsa default değerine döner. Liste başına ayrı bir token düzenli görünür, ama içinde nokta olan hiçbir servis adı için çalışmaz, bizimki de dahil. Paper, tokens altındaki ServerList.net: satırını ServerList adlı bir bölüm ve içindeki net anahtarı olarak okur. Velocity'nin TOML okuyucusu "ServerList.net" etrafındaki tırnakları adın parçası olarak tutar, tırnaksız yazınca da yapılandırma hiç yüklenmez. Hangisi olursa olsun arama ıskalar ve NuVotifier oyumuzu default ile karşılaştırır, bu yüzden bize ayrı bir token verildiyse her oy geçersiz imza hatasıyla başarısız olur. Bize default token'ı ver. v1 anahtarları plugins/Votifier/rsa/ içindedir ve sunucundan dışarı yalnızca public.key çıkar.
Velocity ya da BungeeCord network kurulumu
Bir networkte oylar proxy'ye gelir, yani listelerin bildiği tek adrese. Aynı nuvotifier.jar dosyasını proxy'ye ve oy alacak her backend'e kur. Proxy'nin yapılandırması Velocity'de plugins/nuvotifier/config.toml, BungeeCord'da plugins/NuVotifier/config.yml dosyasıdır.
Oyları backend sunucularına iletme
Plugin messaging, tek bir proxy için basit seçimdir. Oylar backend'lere oyuncunun kendi bağlantısı üzerinden gider.
Proxy'de (Velocity'de config.toml):
host = "0.0.0.0"
port = 8192
[forwarding]
method = "pluginMessaging"
[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"
onlySendToJoinedServer = false
Her backend'de (plugins/Votifier/config.yml), backend'in kendi dinleyicisini -1 portuyla kapat ve iletmeyi aç:
port: -1
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votes
Eklenti mesajları bağlı bir oyuncu gerektirir, bu yüzden kimsenin çevrim içi olmadığı bir backend oylarını sonra alır: proxy onları önbelleğe alır (varsayılan olarak bir dosyada, 10 güne kadar) ve biri girdiğinde iletir. Varsayılan olarak her backend her oyu alır, bu yüzden her birinde bir ödül eklentisi çalışıyorsa oy veren oyuncu her birinde ödüllendirilir. onlySendToJoinedServer = true ayarını bir joinedServerFallback sunucusuyla, excludedServers ile ya da VotingPlugin'in kendi proxy kurulumuyla birlikte kullan.
Proxy forwarding, her oyu ağ üzerinden backend'in kendi NuVotifier'ına, backend'in token'ıyla imzalayarak gönderir. Çevrim içi oyuncu gerektirmez ama önbelleği yoktur: beş denemeden sonra hâlâ başarısız olan bir oy atılır. Test ettiğimiz kurulum bu. Her backend'de NuVotifier'a kendi portunu ver, onun default token'ını kopyala ve disable-v1-protocol: true yap. Proxy'de:
[forwarding]
method = "proxy"
[forwarding.proxy.survival]
address = "10.0.0.12"
port = 8193
token = "the survival backend's default token"
Her backend için bir blok ekle. Ad yalnızca bir etikettir. Testimizde proxy'ye gönderilen bir v1 ve bir v2 oyu, Paper'a bir saniye içinde v2 oyu olarak ulaştı:
[nuvotifier]: Successfully forwarded vote Vote (from:ServerList.net username:Steve address:203.0.113.7 timeStamp:1792283636000 additionalData:null) to /127.0.0.1:8192.
Sonra proxy'deki backend girdisine yanlış bir token yazdık. Liste proxy'den yine {"status":"ok"} aldı, backend ise her kopyayı reddetti ve proxy denemeye devam etti:
[nuvotifier]: Unable to send vote to /127.0.0.1:8192. Will retry sending in 1 second(s).
[nuvotifier]: Unable to send vote to /127.0.0.1:8192. Will retry sending in 2 second(s).
Yani bir networkte yeşil bir test yalnızca proxy'yi kanıtlar. Bir backend konsoluna da bak. Her iki yöntemde de backend'leri güvenlik duvarıyla, oyun ve Votifier portlarına yalnızca proxy ulaşabilecek şekilde koru, yoksa herkes onlara sahte oy besleyebilir.
Portu aç
Votifier'ın internetten erişilebilen tek bir TCP portuna ihtiyacı var.
- Oyun sunucusu hosting'leri. Panelinde ikinci bir port ekle (genellikle Network sekmesinde bir tahsis) ve NuVotifier'ın
portdeğerini ona ayarla.host: 0.0.0.0olarak bırak. - VPS ya da dedicated sunucu. Güvenlik duvarında aç, örneğin
sudo ufw allow 8192/tcp, varsa sağlayıcının ağ güvenlik duvarında da. - Docker. Oyun portunun yanında yayımla, örneğin
-p 8192:8192. - DDoS koruması. Oyun adresini koruyan servisler genelde yalnızca Minecraft portunu iletir, bu yüzden Votifier'ı makinenin kendi IP'sine yönelt. 18 Ekim 2026'da Votifier'lı 97 ilandan 68'i Votifier için oyundan farklı bir host kullanıyordu, bunların 49'u düz bir IP adresiydi.
Çoğu sunucu 8192'den farklı bir portta kalıyor. Aynı tarihte bu 97 ilandan yalnızca 19'u varsayılanı kullanıyordu (canlı: 18), toplamda 70 farklı port vardı. İkisi varsayılan RCON portu olan 25575'i kullanıyordu, bu da yalnızca RCON kapalıyken ya da taşınmışken çalışır.
Portu dışarıdan kontrol etmek için bunu başka bir makineden ya da ağdan çalıştır:
nc -v 203.0.113.10 8192
NuVotifier her bağlantıyı VOTIFIER 2 mmdin5k3bh10u2fommgp3hahkv gibi bir satırla karşılar. Onu görüyorsan port açıktır ve arkasında NuVotifier vardır. Windows'ta PowerShell'in Test-NetConnection 203.0.113.10 -Port 8192 komutu, açık bir port için karşılama olmadan TcpTestSucceeded : True gösterir.
Ayrıntıları serverlist.net ilanına ekle
Sunucu eklerken Oylar adımı Votifier'ı sorar. Zaten sahip olduğun bir ilan için onu panelden aç ve Oylama sekmesini kullan. İkisinde de aynı dört bölüm var.
- Votifier nerede dinliyor. Votifier'a ulaşan hostu gir, çoğu zaman oyuncuların kullandığı adres değil sunucunun IP'si, ve oyun portunu değil Votifier portunu. Portu kontrol et düğmesi o porta vurur ve oy göndermeden Votifier karşılamasını okur, böylece portun açık olup olmadığını ve NuVotifier'ın mı yoksa klasik Votifier'ın mı cevap verdiğini hemen görürsün.
- Anahtar veya token. NuVotifier token seçeneğini seçip
defaulttoken'ını yapıştır ya da Votifier açık anahtarı seçeneğini seçippublic.keydosyasının tüm içeriğini yapıştır. Varsayılan 2048 bitlik anahtar,MIIBIjANBgkqile başlayan, 392 karakterlik tek bir satırdır.private.keydosyasını asla yapıştırma. - Ödül eklentin. Bu bölüm VotingPlugin'in ihtiyaç duyduğu satırı gösterir, aşağıda anlatılıyor.
- Test oyu. Yayımlamadan ya da kaydetmeden önce bir tane gönder.
Token'ın ve anahtarın şifreli saklanır. Her oy önce kaydedilir, hemen ardından arka planda teslim edilir, başarısız teslimatlar yeniden denenir ve her deneme o sekmedeki teslimat kaydında görünür. Önceki sistemimiz teslimat sonuçlarını tutmuyordu, bu yüzden yeni kayıt tam bir ayı doldurunca en yaygın hataların bir dökümünü buraya ekleyeceğiz.
Votifier test aracıyla test et
Votifier test aracı, girdiğin adrese senin seçtiğin bir kullanıcı adıyla gerçek bir oy gönderir. Bir captcha ister ve her IP adresi için on dakikada beş teste izin verir. v2 için NuVotifier'ın kendi cevabını gösterir: {"status":"ok"} ya da aşağıdaki tablodan bir hata. v1 için yalnızca bağlandığını ve oyu gönderdiğini gösterebilir, bu yüzden konsolundan doğrula.
Teslim edilen bir oy konsolda şunun gibi bir satır başlatır, ardından oyun servis adını, kullanıcı adını, adresini ve zaman damgasını sıralar:
[Votifier] Got a protocol v2 vote record from /203.0.113.7:50480
Sonraki satırlar A vote was received, but you don't have any listeners available to listen for it. diyorsa teslimat çalışıyor, yalnızca ödül eklentisi eksik demektir.
testvote konsol komutu ağı, anahtarı ve token'ı atlar ve sunucunun içinde bir oy olayı tetikler, yani teslimatı değil ödülleri test eder. Ek ayrıntılar key=value olarak yazılmalıdır:
testvote Steve serviceName=ServerList.net
testvote Alex ServerList.net 127.0.0.1 olarak yazıldığında 127.0.0.1 değerini kullanıcı adı alanına koydu ve servis adını TestVote olarak bıraktı. Bir proxy'de komut ptestvote.
VotingPlugin ile ödülleri bağla
VotingPlugin, bakımı aktif olarak süren seçenek (7.1.1, Temmuz 2026). NuVotifier'ın kurulum rehberinde hâlâ adı geçen SuperbVote en son Aralık 2020'de güncellendi.
VotingPlugin.jardosyasını NuVotifier'ın yanına,pluginsklasörüne koy ve yeniden başlat.Bir test oyu gönder. VotingPlugin her yeni servis adı için kendi başına bir site oluşturur:
[VotingPlugin] Received a vote from service site 'ServerList.net' by player 'Steve'! [VotingPlugin] VoteSite with service site 'ServerList.net' does not exist, attempting to generate...plugins/VotingPlugin/VoteSites.ymldosyasını aç, oluşturulanServerList_netgirdisini bul ve ona bir ödül ver. Tamamlanmış bir girdi şöyle görünür:VoteSites: ServerList_net: Enabled: true Name: 'ServerList.net' ServiceSite: 'ServerList.net' VoteURL: 'https://serverlist.net/server/your-server/vote' VoteDelay: 24h DisplayItem: Material: 'DIAMOND' Amount: 1 Rewards: Commands: - 'eco give %player% 250' Messages: Player: '&aThanks for voting on ServerList.net!'ServiceSitebirebir eşleşmeli.VoteDelay: 24h, kayan 24 saatlik bekleme süremizle uyuşur, böylece/vote nextdoğru zamanı gösterir.eco give, EssentialsX gibi bir ekonomi eklentisi olduğunu varsayar./av reloadile yeniden yükle ve sunucuna girmiş bir oyuncunun adıyla yeniden oy ver.
Bu son adım hemen herkesi yakalar. Varsayılan ayarlarla VotingPlugin hiç görmediği adlara verilen oyları yok sayar:
[VotingPlugin] Player Steve has not joined before, disregarding vote. Reason: unknown-user. Set AllowUnjoined to true to accept.
Kendi adınla test et ya da Config.yml içinde AllowUnjoined: true yap. Çevrim dışı olan bir oyuncu için VotingPlugin oyu hemen duyurdu ama komut ödülünü tuttu, varsayılan olarak onu oyuncu bir sonraki girişinde veriyor.
- Bedrock oyuncuları. Geyser ve Floodgate ile Bedrock adları bir önek taşır, varsayılan olarak bir nokta, bu yüzden bir Bedrock oyuncusunun ödülün onu bulması için
.Steveolarak oy vermesi gerekir. Son 30 günde serverlist.net'teki oyların Bedrock adlarından gelenlerinin payı %6 oldu, bu yüzden/votemesajında öneki belirt. Önek ayarını Geyser rehberi anlatıyor. - Networkler. VotingPlugin'in proxy modu
BungeeSettings.ymliçinde kurulur. Orada her backend'e benzersiz bir sunucu adı ver veVoteSites.ymldosyasını hepsinde aynı tut.
Oyuncuların kendi taraflarında gördükleri ve bir ödül kaybolduğunda onlara ne söyleneceği Minecraft sunucuları neden senden oy ister yazısında.
Hatalar ve ne anlama geldikleri
Kod biçimindeki her mesaj bizim test düzeneğimizden geldi. "Liste", bir v2 listesinin ya da test aracımızın geri aldığı şey demektir.
| Mesaj ve nerede görüyorsun | Ne anlama geliyor | Çözüm |
|---|---|---|
Connection refused, listede ya da test aracında | O adres ve portta hiçbir şey dinlemiyor. | Gerçek port ve adres için Votifier enabled on socket satırına bak. |
| Bağlantı zaman aşımına uğradı, listede ya da test aracında | Bir güvenlik duvarı ya da host bağlantıyı düşürüyor, ya da host yalnızca oyun portunu ileten korumalı bir adres. | TCP portunu aç. Makinenin kendi IP'sini kullan. |
Votifier was not able to bind to /0.0.0.0:8192, başlangıçta konsolda | Başka bir program portu zaten kullanıyor, çoğunlukla aynı makinedeki ikinci bir sunucu ya da proxy. | Her NuVotifier'a kendi portunu ver. |
Could not decrypt data from /203.0.113.7:46788. Make sure the public key on the list is correct., konsolda | v1 anahtar uyuşmazlığı. Listede eski bir anahtar, başka bir sunucunun anahtarı ya da kesik bir anahtar var. | public.key dosyasını yeniden, bütün olarak kopyala ve listeyi güncelle. |
Signature is not valid (invalid token?), listede ve konsolda | v2 token uyuşmazlığı. | default token'ını boşluksuz yeniden kopyala. Bizim servis adımızın altına eklediğin token'ı sil. Bir networkte proxy'deki backend girdilerini de kontrol et. |
Unknown service 'ServerList.net', listede ve konsolda | tokens içinde default token'ı yok. | Bir default token'ı ekle ve listeye ver. |
This server only accepts well-formed Votifier v2 packets., konsolda | disable-v1-protocol açık ve bir liste v1 oyu gönderdi. | O listeyi v2'ye geçir ya da v1'i yeniden aç. |
Challenge is not valid, listede ve konsolda | Liste yanlış doğrulama değeriyle cevap verdi. Bu, listenin tarafındaki bir hata. | Listeye bildir. |
A vote was received, but you don't have any listeners available to listen for it., konsolda | Teslimat çalışıyor. Ödül eklentisi kurulu değil. | VotingPlugin'i kur. |
Player Steve has not joined before, disregarding vote. Reason: unknown-user., konsolda | VotingPlugin hiç görmediği bir adı atladı. | Gerçek bir oyuncuyla test et ya da AllowUnjoined: true yap. |
Unable to send vote to /127.0.0.1:8192. Will retry sending in 1 second(s)., proxy konsolunda | Proxy forwarding bir backend'e teslim edemiyor: yanlış token, port ya da adres. | Gerçek sebep için backend'in konsoluna bak. |
Hatalar art arda gelince NuVotifier iki saniye içinde beşincisinden sonra onları yazdırmayı bırakır, bu yüzden her seferinde tek bir test gönder.
SSS
Votifier hangi portu kullanmalı? Hosting'inin açmana izin verdiği herhangi bir boş TCP portu. 8192 yalnızca varsayılan değer. Oyun portun olamaz ve RCON kullanıyorsan 25575'ten kaçın.
v2'ye ihtiyacım var mı? Hayır, ikisini de kabul ediyoruz. v2, listenin desteklediği yerde daha iyi: oylar yeniden oynatılamaz ve liste sana tam hatayı gösterebilir. Yalnızca v1 gönderen listeler için v1'i açık tut.
Bazı listeler neden yalnızca v1'i destekliyor? v1, her listenin yıllar önce uyguladığı özgün Votifier protokolüdür. v2, NuVotifier ile geldi ve her listenin onu ayrıca eklemesi gerekiyor.
Kurulum çabaya değer mi? Oylamanın neredeyse tamamı Votifier'ın kurulu olduğu yerlerde oluyor. Son 30 günde serverlist.net'teki oyların Votifier kurulu ilanlara giden payı %99,7 oldu. 18 Ekim 2026'ya kadarki 30 günde bu, 15.477 oyun 15.443'ü demekti, Votifier'ı olmayan 11 ilan ise kalan 34 oyu paylaştı. Oylar listedeki sıranı da etkiler, bunu ilk 100 oyuncunu toplama rehberi bağlama oturtuyor.
Sıradaki okuma
Okumaya devam et.
Minecraft sunucuları neden oy ister, oylama nasıl çalışır
Oy ne işe yarar, listeden ödülüne nasıl gider, 24 saat kuralı, Bedrock adları ve oy ödülü hiç gelmediğinde nelere bakman gerektiği.
Minecraft sunucuna ilk 100 oyuncuyu nasıl çekersin
Ping verilerimiz yeni sunucular hakkında ne gösteriyor ve ilk 100 oyuncu nasıl kazanılır: önce oyuncuyu tutmak, sonra listeler, oylar, Discord ve sezonlar.