GuideFür Serverbetreiber
NuVotifier einrichten und testen: Schritt für Schritt
NuVotifier auf Paper oder Velocity installieren, den Port öffnen, testen und jeden Fehler im Log verstehen. Getestet mit Paper 26.3 und Velocity 4.2.
NuVotifier ist das Plugin, das Votes von Serverlisten entgegennimmt. Du installierst es auf deinem Server oder Proxy, öffnest einen TCP-Port und gibst jeder Liste deine Adresse, den Port und entweder einen v1-Public-Key oder ein v2-Token. Es verteilt von sich aus keine Belohnungen, du brauchst also zusätzlich ein Belohnungs-Plugin wie VotingPlugin, und du solltest den ganzen Weg einmal testen, bevor du Spielern /vote empfiehlst.
Wir haben das von beiden Enden der Leitung aus geschrieben. serverlist.net schickt gerade Votes an 95 Einträge, und für diese Anleitung haben wir NuVotifier auf einem frischen Paper-26.3-Server und einem Velocity-4.2-Proxy laufen lassen, ihm gültige und absichtlich kaputte Votes geschickt und abgeschrieben, was die Konsole ausgab. Jede unten zitierte Logzeile stammt aus diesem Aufbau, mit Beispielwerten statt echter Tokens und Adressen.
Die Kurzfassung
- Lege
nuvotifier.jarin deinen Ordnerpluginsund starte neu. - Notiere den Port (standardmäßig 8192), das Token und den Public Key, die NuVotifier erzeugt.
- Öffne diesen Port für TCP bei deinem Hoster oder in deiner Firewall.
- Trage Adresse, Port und Token (oder Key) in deinen serverlist.net-Eintrag ein.
- Schicke einen Test aus dem Votifier-Tester und beobachte die Konsole.
- Installiere VotingPlugin und gib der Vote-Seite
ServerList.neteine Belohnung.
Was NuVotifier macht und was nicht
NuVotifier lauscht auf einem TCP-Port. Verbindet sich eine Liste, liest es eine Vote-Nachricht, prüft sie mit deinem Key oder Token und löst im Server ein Vote-Event aus. Ein Vote enthält vier Dinge: den Dienstnamen der Liste (unserer ist ServerList.net), den Benutzernamen, den der Spieler eingegeben hat, die IP-Adresse des Voters und einen Zeitstempel.
Was es nicht tut, ist genauso wichtig:
- Es verteilt keine Belohnungen. Ein Belohnungs-Plugin lauscht auf das Event und zahlt aus.
- Es prüft nicht, ob der Spieler existiert. Die Liste validiert Namen, und das Belohnungs-Plugin entscheidet, was es mit unbekannten macht.
- Es nutzt nur TCP. Ein Port, der nur für UDP geöffnet ist, lässt Votifier unerreichbar.
- Es schickt einer v1-Liste nichts zurück, was das Testen verändert.
Die offizielle Version ist weiterhin 2.7.3 vom Juli 2021, eine JAR für Paper, Spigot, BungeeCord, Velocity und Sponge. In unserem Test lief sie unverändert auf Paper 26.3 und Velocity 4.2.0 und empfing Votes. Unter Java 25 gibt sie einen Block von Warnungen aus, der WARNING: sun.misc.Unsafe::objectFieldOffset has been called by enthält. Das betrifft eine künftige Java-Änderung und ist kein Fehler, die Votes liefen weiter.
Die offizielle Version unterstützt Folia nicht. Der gepflegte Fork azuvotifier tut es (Version 3.3.6, November 2025) und spricht dasselbe Protokoll, deshalb behandeln Listen ihn wie NuVotifier.
v1-Key oder v2-Token
Listen können NuVotifier in zwei Protokollversionen ansprechen, und du kannst beide eingeschaltet lassen.
| v1 (Public Key) | v2 (Token) | |
|---|---|---|
| Was du der Liste gibst | Den Inhalt von rsa/public.key | Das Token aus der config.yml |
| Wie ein Vote geschützt ist | Mit deinem RSA-Public-Key verschlüsselt | Mit HMAC-SHA256 und dem Token signiert, plus eine neue Challenge für jede Verbindung |
| Ein abgefangener Vote lässt sich erneut einspielen | Ja | Nein, jede Challenge gilt nur einmal |
| Die Liste erfährt, ob es geklappt hat | Nein. NuVotifier liest 256 Bytes und schließt die Verbindung ohne Antwort | Ja. NuVotifier antwortet {"status":"ok"} oder mit einem Fehler samt Grund |
| Wer es unterstützt | Fast jede Liste | Listen, die das Protokoll von NuVotifier umgesetzt haben, darunter serverlist.net |
Wer deinen v1-Public-Key hat, kann einen gültigen Vote erzeugen, denn das Verschlüsseln damit ist das ganze Protokoll. Poste ihn also nie in einem öffentlichen Kanal. Und ob ein v1-Key gepasst hat, siehst du nur in deiner Konsole und nirgendwo sonst.
Nimm auf serverlist.net v2. Lass v1 eingeschaltet, solange andere Listen, die du nutzt, es noch brauchen. Am 18. Oktober 2026 hatten 97 unserer 218 Einträge Votifier konfiguriert, 68 mit einem v1-Key und 29 mit einem v2-Token (live: 68 und 27).
Auf Paper installieren
Lade
nuvotifier.jarvon der GitHub-Releases-Seite von NuVotifier oder von seiner SpigotMC-Seite herunter und lege sie in den Ordnerpluginsdeines Servers.Starte den Server. Beim ersten Start gibt NuVotifier dein Token aus und wo es lauscht:
[Votifier] Your default NuVotifier token is e4qk2v9m1r7t0p5s3a8d6f2h1j. [Votifier] Votifier enabled on socket /0.0.0.0:8192.Stoppe den Server und öffne
plugins/Votifier/config.yml. Ohne ihre Kommentare sieht die Standardfassung so aus:host: 0.0.0.0 port: 8192 disable-v1-protocol: false tokens: default: e4qk2v9m1r7t0p5s3a8d6f2h1j forwarding: method: none pluginMessaging: channel: nuvotifier:votesPrüfe
host. Der Standardwert istserver-ipaus derserver.properties, oder0.0.0.0, wenn dort nichts steht. Auf unserem Testserver stand beiserver-ipdie127.0.0.1, deshalb lauschte NuVotifier stillschweigend auf127.0.0.1:8192, wo keine Liste es je erreichen konnte. Lies die ZeileVotifier enabled on socketnach jedem Neustart. Sie sollte0.0.0.0oder eine Adresse zeigen, die das Internet erreichen kann.Setze
portauf den Port, den dein Hoster dir gibt. Es muss ein freier TCP-Port sein, und es darf nicht dein Spielport sein.Lass
disable-v1-protocol: falsestehen, solange nicht jede Liste, die du nutzt, v2 unterstützt.Starte den Server vollständig neu. In unserem Test funktionierte ein aus der
config.ymlentferntes Token nach/nvreloadbis zum nächsten Neustart weiter, verlass dich nach einer Token-Änderung also nicht auf einen Reload.
NuVotifier sucht das Token anhand des Dienstnamens der Liste und fällt auf default zurück. Ein eigenes Token pro Liste klingt ordentlich, funktioniert aber bei keinem Dienstnamen mit Punkt, unserem eingeschlossen. Paper liest ServerList.net: unter tokens als Abschnitt namens ServerList mit einem Schlüssel net darin. Der TOML-Reader von Velocity behält die Anführungszeichen um "ServerList.net" als Teil des Namens, und ohne Anführungszeichen lädt die Konfiguration gar nicht. In beiden Fällen geht die Suche ins Leere, und NuVotifier prüft unseren Vote gegen default. Hast du uns das separate Token gegeben, scheitert also jeder Vote mit ungültiger Signatur. Gib uns das Token default. Die v1-Keys liegen in plugins/Votifier/rsa/, und nur public.key verlässt je deinen Server.
Auf einem Velocity- oder BungeeCord-Netzwerk installieren
In einem Netzwerk kommen Votes am Proxy an, der einzigen Adresse, die Listen kennen. Installiere dieselbe nuvotifier.jar auf dem Proxy und auf jedem Backend, das Votes empfangen soll. Die Konfiguration des Proxys ist plugins/nuvotifier/config.toml auf Velocity und plugins/NuVotifier/config.yml auf BungeeCord.
Votes an Backend-Server weiterleiten
Plugin Messaging ist die einfache Wahl für einen Proxy. Die Votes reisen über die Verbindung eines Spielers zu den Backends.
Auf dem Proxy (config.toml auf Velocity):
host = "0.0.0.0"
port = 8192
[forwarding]
method = "pluginMessaging"
[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"
onlySendToJoinedServer = false
Auf jedem Backend (plugins/Votifier/config.yml) schaltest du den eigenen Listener des Backends mit dem Port -1 ab und das Forwarding ein:
port: -1
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votes
Plugin-Nachrichten brauchen einen verbundenen Spieler, ein Backend ohne jemanden online bekommt seine Votes also später: Der Proxy puffert sie (standardmäßig in einer Datei, bis zu 10 Tage) und gibt sie weiter, sobald jemand beitritt. Standardmäßig bekommt jedes Backend jeden Vote. Läuft auf jedem ein Belohnungs-Plugin, wird der Voter also auf jedem ausgezahlt. Nimm onlySendToJoinedServer = true mit einem joinedServerFallback-Server, excludedServers oder die eigene Proxy-Einrichtung von VotingPlugin.
Proxy Forwarding schickt jeden Vote über das Netzwerk an das eigene NuVotifier des Backends, signiert mit dem Token des Backends. Es braucht keine Spieler online, hat aber keinen Puffer: Ein Vote, der nach fünf Wiederholungen immer noch scheitert, wird verworfen. Diese Variante haben wir getestet. Gib auf jedem Backend NuVotifier einen eigenen Port, kopiere dessen default-Token und setze disable-v1-protocol: true. Auf dem Proxy:
[forwarding]
method = "proxy"
[forwarding.proxy.survival]
address = "10.0.0.12"
port = 8193
token = "the survival backend's default token"
Füge pro Backend einen Block hinzu. Der Name ist nur ein Label. In unserem Test kamen ein v1- und ein v2-Vote, die an den Proxy gingen, innerhalb einer Sekunde beide als v2-Votes bei Paper an:
[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.
Dann haben wir ein falsches Token in den Backend-Eintrag des Proxys gesetzt. Die Liste bekam weiterhin {"status":"ok"} vom Proxy, während das Backend jede Kopie ablehnte und der Proxy es immer wieder versuchte:
[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).
In einem Netzwerk beweist ein grüner Test also nur den Proxy. Prüfe auch die Konsole eines Backends. Schirme bei beiden Methoden die Backends per Firewall ab, sodass nur der Proxy ihre Spiel- und Votifier-Ports erreicht, sonst könnte jeder ihnen gefälschte Votes unterschieben.
Den Port öffnen
Votifier braucht einen TCP-Port, den das Internet erreichen kann.
- Gameserver-Hoster. Füge in deinem Panel einen zweiten Port hinzu (oft eine Zuweisung unter einem Tab „Netzwerk“) und setze den
portvon NuVotifier darauf. Lasshost: 0.0.0.0stehen. - Ein VPS oder dedizierter Server. Öffne ihn in der Firewall, zum Beispiel mit
sudo ufw allow 8192/tcp, und in der Netzwerk-Firewall deines Anbieters, falls es eine gibt. - Docker. Veröffentliche ihn neben dem Spielport, zum Beispiel mit
-p 8192:8192. - DDoS-Schutz. Dienste, die die Spieladresse schützen, leiten meist nur den Minecraft-Port weiter. Richte Votifier deshalb auf die eigene IP der Maschine. Von den 97 Einträgen mit Votifier am 18. Oktober 2026 nutzten 68 für Votifier einen anderen Host als fürs Spiel, 49 davon eine reine IP-Adresse.
Die meisten Server landen bei einem anderen Port als 8192. Am selben Datum nutzten nur 19 dieser 97 den Standard (live: 18), insgesamt verteilt auf 70 verschiedene Ports. Zwei nutzten 25575, den Standardport von RCON, was nur funktioniert, solange RCON aus ist oder verschoben wurde.
Um den Port von außen zu prüfen, führe das auf einer anderen Maschine oder in einem anderen Netz aus:
nc -v 203.0.113.10 8192
NuVotifier begrüßt jede Verbindung mit einer Zeile wie VOTIFIER 2 mmdin5k3bh10u2fommgp3hahkv. Siehst du sie, ist der Port offen und NuVotifier steckt dahinter. Unter Windows zeigt Test-NetConnection 203.0.113.10 -Port 8192 in PowerShell bei einem offenen Port TcpTestSucceeded : True, ohne die Begrüßung.
Die Angaben in deinen serverlist.net-Eintrag eintragen
Wenn du einen Server einträgst, fragt der Schritt „Votes“ nach Votifier. Für einen Eintrag, den du schon hast, öffne ihn im Dashboard und nutze seinen Tab „Voting“. Beide haben dieselben vier Teile.
- Wo Votifier lauscht. Gib den Host an, der Votifier erreicht, oft die IP des Servers statt der Adresse, die Spieler nutzen, und den Votifier-Port, nicht den Spielport. Port prüfen klopft an diesem Port an und liest die Votifier-Begrüßung, ohne einen Vote zu schicken. So siehst du sofort, ob der Port offen ist und ob NuVotifier oder das klassische Votifier antwortet.
- Key oder Token. Wähle NuVotifier-Token und füge dein
default-Token ein, oder wähle Votifier-Public-Key und füge den ganzen Inhalt vonpublic.keyein. Der standardmäßige 2048-Bit-Key ist eine einzelne Zeile aus 392 Zeichen, die mitMIIBIjANBgkqbeginnt. Füge niemalsprivate.keyein. - Dein Belohnungs-Plugin. Dieser Teil zeigt die Zeile, die VotingPlugin braucht, mehr dazu unten.
- Testvote. Schicke einen, bevor du veröffentlichst oder speicherst.
Dein Token und dein Key werden verschlüsselt gespeichert. Jeder Vote wird zuerst gespeichert und gleich danach im Hintergrund zugestellt, fehlgeschlagene Zustellungen werden wiederholt, und jeder Versuch erscheint im Zustellprotokoll auf diesem Tab. Unser früheres System hat keine Zustellergebnisse festgehalten. Deshalb ergänzen wir hier eine Aufschlüsselung der häufigsten Fehler, sobald das neue Protokoll einen vollen Monat umfasst.
Mit dem Votifier-Tester testen
Der Votifier-Tester schickt einen echten Vote mit einem Benutzernamen deiner Wahl an die Adresse, die du eingibst. Er verlangt ein Captcha und erlaubt fünf Tests pro IP-Adresse alle zehn Minuten. Bei v2 zeigt er die eigene Antwort von NuVotifier, {"status":"ok"} oder einen Fehler aus der Tabelle unten. Bei v1 kann er nur zeigen, dass er sich verbunden und den Vote gesendet hat, bestätige es also in deiner Konsole.
Ein zugestellter Vote löst eine Konsolenzeile wie diese aus, auf die Dienstname, Benutzername, Adresse und Zeitstempel des Votes folgen:
[Votifier] Got a protocol v2 vote record from /203.0.113.7:50480
Heißt es in den nächsten Zeilen A vote was received, but you don't have any listeners available to listen for it., funktioniert die Zustellung, und nur das Belohnungs-Plugin fehlt.
Der Konsolenbefehl testvote überspringt Netzwerk, Key und Token und löst ein Vote-Event innerhalb deines Servers aus, er testet also Belohnungen, nicht die Zustellung. Zusätzliche Angaben müssen als key=value geschrieben werden:
testvote Steve serviceName=ServerList.net
Als testvote Alex ServerList.net 127.0.0.1 eingegeben, hat er 127.0.0.1 ins Feld für den Benutzernamen geschrieben und den Dienstnamen TestVote behalten. Auf einem Proxy heißt der Befehl ptestvote.
Belohnungen mit VotingPlugin anbinden
VotingPlugin ist die aktiv gepflegte Wahl (7.1.1, Juli 2026). SuperbVote, das in der Einrichtungsanleitung von NuVotifier noch genannt wird, wurde zuletzt im Dezember 2020 aktualisiert.
Lege
VotingPlugin.jarneben NuVotifier inpluginsund starte neu.Schicke einen Test-Vote. VotingPlugin legt für jeden neuen Dienstnamen von selbst eine Vote-Seite an:
[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...Öffne
plugins/VotingPlugin/VoteSites.yml, suche den erzeugten EintragServerList_netund gib ihm eine Belohnung. Ein fertiger Eintrag sieht so aus: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!'ServiceSitemuss exakt stimmen.VoteDelay: 24hentspricht unserem gleitenden 24-Stunden-Cooldown, damit/vote nextdie richtige Zeit zeigt.eco givesetzt ein Economy-Plugin wie EssentialsX voraus.Lade mit
/av reloadneu und vote noch einmal mit dem Namen eines Spielers, der deinem Server schon beigetreten ist.
Dieser letzte Schritt erwischt fast jeden. Mit Standardeinstellungen ignoriert VotingPlugin Votes für Namen, die es noch nie gesehen hat:
[VotingPlugin] Player Steve has not joined before, disregarding vote. Reason: unknown-user. Set AllowUnjoined to true to accept.
Teste mit deinem eigenen Namen oder setze AllowUnjoined: true in der Config.yml. Bei einem Spieler, der offline war, hat VotingPlugin den Vote sofort im Chat verkündet, aber die Befehlsbelohnung zurückgehalten, die es standardmäßig beim nächsten Beitritt des Spielers ausgibt.
- Bedrock-Spieler. Mit Geyser und Floodgate tragen Bedrock-Namen ein Präfix, standardmäßig einen Punkt. Ein Bedrock-Spieler muss also als
.Stevevoten, damit die Belohnung ihn findet. In den letzten 30 Tagen kamen 6 % aller Votes auf serverlist.net von Bedrock-Namen, erwähne das Präfix also in deiner/vote-Nachricht. Die Geyser-Anleitung behandelt die Präfix-Einstellung. - Netzwerke. Der Proxy-Modus von VotingPlugin wird in der
BungeeSettings.ymleingerichtet. Gib dort jedem Backend einen eindeutigen Servernamen und halte dieVoteSites.ymlauf allen gleich.
Was Spieler auf ihrer Seite sehen und was du ihnen sagen kannst, wenn eine Belohnung fehlt, steht in warum Minecraft-Server dich ums Voten bitten.
Fehler und ihre Bedeutung
Jede Meldung in Code-Format stammt aus unserem Testaufbau. „Liste“ meint, was eine v2-Liste oder unser Tester zurückbekommt.
| Meldung und wo du sie siehst | Was sie bedeutet | Lösung |
|---|---|---|
Connection refused, bei der Liste oder im Tester | Auf dieser Adresse und diesem Port lauscht nichts. | Lies die Zeile Votifier enabled on socket für den echten Port und die echte Adresse. |
| Zeitüberschreitung der Verbindung, bei der Liste oder im Tester | Eine Firewall oder der Hoster verwirft die Verbindung, oder der Host ist eine geschützte Adresse, die nur den Spielport weiterleitet. | Öffne den TCP-Port. Nimm die eigene IP der Maschine. |
Votifier was not able to bind to /0.0.0.0:8192, in der Konsole beim Start | Ein anderes Programm nutzt den Port schon, oft ein zweiter Server oder der Proxy auf derselben Maschine. | Gib jedem NuVotifier einen eigenen Port. |
Could not decrypt data from /203.0.113.7:46788. Make sure the public key on the list is correct., in der Konsole | Der v1-Key passt nicht. Die Liste hat einen alten Key, den Key eines anderen Servers oder einen abgeschnittenen. | Kopiere public.key erneut, vollständig, und aktualisiere die Liste. |
Signature is not valid (invalid token?), bei der Liste und in der Konsole | Das v2-Token passt nicht. | Kopiere das Token default erneut, ohne Leerzeichen. Entferne jedes Token, das du unter unserem Dienstnamen angelegt hast. In einem Netzwerk prüfe auch die Backend-Einträge des Proxys. |
Unknown service 'ServerList.net', bei der Liste und in der Konsole | Unter tokens gibt es kein Token default. | Lege ein Token default an und gib es der Liste. |
This server only accepts well-formed Votifier v2 packets., in der Konsole | disable-v1-protocol ist an, und eine Liste hat einen v1-Vote geschickt. | Stelle diese Liste auf v2 um oder schalte v1 wieder ein. |
Challenge is not valid, bei der Liste und in der Konsole | Die Liste hat mit der falschen Challenge geantwortet. Das ist ein Fehler auf der Seite der Liste. | Melde es der Liste. |
A vote was received, but you don't have any listeners available to listen for it., in der Konsole | Die Zustellung funktioniert. Es ist kein Belohnungs-Plugin installiert. | Installiere VotingPlugin. |
Player Steve has not joined before, disregarding vote. Reason: unknown-user., in der Konsole | VotingPlugin hat einen Namen übersprungen, den es noch nie gesehen hat. | Teste mit einem echten Spieler oder setze AllowUnjoined: true. |
Unable to send vote to /127.0.0.1:8192. Will retry sending in 1 second(s)., in der Proxy-Konsole | Das Proxy Forwarding kann nicht an ein Backend zustellen: falsches Token, falscher Port oder falsche Adresse. | Lies die Konsole des Backends für den wahren Grund. |
Kommen Fehler in einem Schwall, hört NuVotifier nach dem fünften innerhalb von zwei Sekunden auf, sie auszugeben. Schicke deshalb immer nur einen Test auf einmal.
Häufige Fragen
Welchen Port soll Votifier nutzen? Jeden freien TCP-Port, den dein Hoster dich öffnen lässt. 8192 ist nur der Standard. Es darf nicht dein Spielport sein, und vermeide 25575, wenn du RCON nutzt.
Brauche ich v2? Nein, wir akzeptieren beides. v2 ist besser, wo eine Liste es unterstützt: Votes lassen sich nicht erneut einspielen, und die Liste kann dir den genauen Fehler zeigen. Lass v1 an für Listen, die nur v1 senden.
Warum unterstützen manche Listen nur v1? v1 ist das ursprüngliche Votifier-Protokoll, das jede Liste vor Jahren umgesetzt hat. v2 kam mit NuVotifier, und jede Liste muss es einzeln ergänzen.
Lohnt sich der Aufwand? Fast das gesamte Voting findet dort statt, wo Votifier eingerichtet ist. In den letzten 30 Tagen gingen 99,7 % aller Votes auf serverlist.net an Einträge mit konfiguriertem Votifier. In den 30 Tagen bis zum 18. Oktober 2026 waren das 15.443 von 15.477 Votes, während sich 11 Einträge ohne Votifier die restlichen 34 teilten. Votes fließen außerdem in deine Platzierung auf der Liste ein, die der Ratgeber zu deinen ersten 100 Spielern einordnet.
Weiterlesen
Lies weiter.
Warum Minecraft-Server ums Voten bitten und wie es abläuft
Was ein Vote bewirkt, wie er von der Liste zu deiner Belohnung kommt, die 24-Stunden-Regel, Bedrock-Namen und was hilft, wenn die Belohnung fehlt.
Die ersten 100 Spieler für deinen Minecraft-Server gewinnen
Was unser Pinger über neue Minecraft-Server zeigt und wie du die ersten 100 Spieler gewinnst: erst Spielerbindung, dann Listen, Votes, Discord und Seasons.