GuidePour les propriétaires de serveurs
Installer NuVotifier et le tester, étape par étape
Installez NuVotifier sur Paper ou Velocity, ouvrez le port, testez et comprenez chaque erreur du journal. Testé sur Paper 26.3 et Velocity 4.2.
NuVotifier est le plugin qui reçoit les votes des listes de serveurs. Vous l'installez sur votre serveur ou votre proxy, vous ouvrez un port TCP et vous donnez à chaque liste votre adresse, le port et soit une clé publique v1, soit un jeton v2. Il ne distribue aucune récompense tout seul : il vous faut aussi un plugin de récompenses comme VotingPlugin, et vous devriez tester tout le trajet une fois avant de dire aux joueurs de faire /vote.
Nous avons écrit ce guide en regardant les deux bouts du fil. serverlist.net envoie des votes à 95 fiches en ce moment, et pour ce guide nous avons fait tourner NuVotifier sur un serveur Paper 26.3 tout neuf et sur un proxy Velocity 4.2, nous lui avons envoyé de bons votes et d'autres volontairement cassés, et nous avons recopié ce que la console affichait. Chaque ligne de journal citée ci-dessous vient de cette installation, avec des jetons et des adresses remplacés par des exemples.
- Placez
nuvotifier.jardans votre dossierpluginset redémarrez. - Notez le port (8192 par défaut), le jeton et la clé publique que NuVotifier génère.
- Ouvrez ce port en TCP chez votre hébergeur ou dans votre pare-feu.
- Ajoutez l'adresse, le port et le jeton (ou la clé) à votre fiche serverlist.net.
- Envoyez un test depuis le testeur Votifier et surveillez la console.
- Installez VotingPlugin et donnez une récompense au site de vote
ServerList.net.
Ce que NuVotifier fait et ne fait pas
NuVotifier écoute sur un port TCP. Quand une liste se connecte, il lit un message de vote, le vérifie avec votre clé ou votre jeton et déclenche un événement de vote dans le serveur. Un vote contient quatre éléments : le nom de service de la liste (le nôtre est ServerList.net), le pseudo que le joueur a saisi, l'adresse IP du votant et un horodatage.
Ce qu'il ne fait pas compte tout autant :
- Il ne donne aucune récompense. Un plugin de récompenses écoute l'événement et paie.
- Il ne vérifie pas que le joueur existe. La liste valide les pseudos, et le plugin de récompenses décide quoi faire des inconnus.
- Il n'utilise que le TCP. Un port ouvert en UDP seulement laisse Votifier injoignable.
- Il ne renvoie rien à une liste v1, ce qui change la façon de tester.
La version officielle reste la 2.7.3 de juillet 2021, un seul JAR pour Paper, Spigot, BungeeCord, Velocity et Sponge. Dans notre test, elle s'est chargée et a reçu des votes sur Paper 26.3 et Velocity 4.2.0 sans modification. Sous Java 25, elle affiche un bloc d'avertissements qui inclut WARNING: sun.misc.Unsafe::objectFieldOffset has been called by. Cela concerne un futur changement de Java, pas une erreur, et les votes ont continué à passer.
La version officielle ne prend pas en charge Folia. Le fork maintenu azuvotifier, lui, le fait (version 3.3.6, novembre 2025) et parle le même protocole, donc les listes le traitent comme NuVotifier.
Clé v1 ou jeton v2
Les listes peuvent parler à NuVotifier dans deux versions du protocole, et vous pouvez garder les deux activées.
| v1 (clé publique) | v2 (jeton) | |
|---|---|---|
| Ce que vous donnez à la liste | Le contenu de rsa/public.key | Le jeton de config.yml |
| Comment un vote est protégé | Chiffré avec votre clé publique RSA | Signé en HMAC-SHA256 avec le jeton, plus un défi neuf à chaque connexion |
| Un vote capturé peut être rejoué | Oui | Non, chaque défi ne sert qu'une fois |
| La liste sait si cela a marché | Non. NuVotifier lit 256 octets et ferme la connexion sans réponse | Oui. NuVotifier répond {"status":"ok"} ou une erreur avec sa raison |
| Qui le prend en charge | Presque toutes les listes | Les listes qui ont implémenté le protocole de NuVotifier, serverlist.net compris |
Quiconque détient votre clé publique v1 peut créer un vote valide, puisque chiffrer avec elle est tout le protocole : ne la collez donc jamais dans un canal public. Et le fait qu'une clé v1 corresponde ou non n'apparaît que dans votre console, nulle part ailleurs.
Sur serverlist.net, utilisez la v2. Gardez la v1 activée tant que d'autres listes que vous utilisez en ont besoin. Au 18 octobre 2026, 97 de nos 218 fiches avaient Votifier configuré, 68 avec une clé v1 et 29 avec un jeton v2 (en direct : 68 et 27).
Installer sur Paper
Téléchargez
nuvotifier.jardepuis la page des versions GitHub de NuVotifier ou sa page SpigotMC et placez-le dans le dossierpluginsde votre serveur.Démarrez le serveur. Au premier démarrage, NuVotifier affiche votre jeton et l'endroit où il écoute :
[Votifier] Your default NuVotifier token is e4qk2v9m1r7t0p5s3a8d6f2h1j. [Votifier] Votifier enabled on socket /0.0.0.0:8192.Arrêtez le serveur et ouvrez
plugins/Votifier/config.yml. Sans ses commentaires, la version par défaut ressemble à ceci :host: 0.0.0.0 port: 8192 disable-v1-protocol: false tokens: default: e4qk2v9m1r7t0p5s3a8d6f2h1j forwarding: method: none pluginMessaging: channel: nuvotifier:votesVérifiez
host. Il prend par défaut la valeur deserver-ipdansserver.properties, ou0.0.0.0quand elle est vide. Sur notre serveur de test,server-ipvalait127.0.0.1, donc NuVotifier écoutait discrètement sur127.0.0.1:8192, où aucune liste ne pouvait jamais l'atteindre. Lisez la ligneVotifier enabled on socketaprès chaque redémarrage. Elle doit afficher0.0.0.0ou une adresse joignable depuis Internet.Réglez
portsur le port que votre hébergeur vous donne. Ce doit être un port TCP libre, et ce ne peut pas être votre port de jeu.Laissez
disable-v1-protocol: falsetant que toutes les listes que vous utilisez ne gèrent pas la v2.Redémarrez complètement le serveur. Dans notre test, un jeton supprimé de
config.ymla continué à fonctionner après/nvreloadjusqu'au redémarrage suivant, donc ne vous fiez pas à un rechargement après avoir changé des jetons.
NuVotifier cherche le jeton d'après le nom de service de la liste et se rabat sur default. Un jeton distinct par liste semble bien rangé, mais cela ne marche pour aucun nom de service contenant un point, le nôtre compris. Paper lit ServerList.net: sous tokens comme une section nommée ServerList contenant une clé net. Le lecteur TOML de Velocity garde les guillemets autour de "ServerList.net" comme partie du nom, et sans guillemets la config ne se charge pas du tout. Dans les deux cas, la recherche échoue et NuVotifier vérifie notre vote avec default, donc si vous nous avez donné le jeton distinct, chaque vote échoue avec une signature invalide. Donnez-nous le jeton default. Les clés v1 se trouvent dans plugins/Votifier/rsa/, et seule public.key quitte un jour votre serveur.
Installer sur un réseau Velocity ou BungeeCord
Sur un réseau, les votes arrivent au proxy, la seule adresse que les listes connaissent. Installez le même nuvotifier.jar sur le proxy et sur chaque backend qui doit recevoir des votes. La config du proxy est plugins/nuvotifier/config.toml sur Velocity et plugins/NuVotifier/config.yml sur BungeeCord.
Transmettre les votes aux serveurs backend
Le plugin messaging est le choix simple pour un seul proxy. Les votes voyagent jusqu'aux backends par la connexion d'un joueur.
Sur le proxy (config.toml sur Velocity) :
host = "0.0.0.0"
port = 8192
[forwarding]
method = "pluginMessaging"
[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"
onlySendToJoinedServer = false
Sur chaque backend (plugins/Votifier/config.yml), désactivez l'écouteur propre au backend avec le port -1 et activez le forwarding :
port: -1
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votes
Les messages de plugin ont besoin d'un joueur connecté, donc un backend sans personne en ligne reçoit ses votes plus tard : le proxy les met en cache (dans un fichier par défaut, jusqu'à 10 jours) et les transmet quand quelqu'un se connecte. Par défaut, chaque backend reçoit chaque vote, donc si chacun fait tourner un plugin de récompenses, le votant est payé sur chacun. Utilisez onlySendToJoinedServer = true avec un serveur joinedServerFallback, excludedServers, ou la configuration proxy propre à VotingPlugin.
Le proxy forwarding envoie chaque vote par le réseau au NuVotifier propre du backend, signé avec le jeton du backend. Il n'exige aucun joueur en ligne mais n'a pas de cache : un vote qui échoue encore après cinq nouvelles tentatives est abandonné. C'est la configuration que nous avons testée. Sur chaque backend, donnez à NuVotifier son propre port, copiez son jeton default et réglez disable-v1-protocol: true. Sur le proxy :
[forwarding]
method = "proxy"
[forwarding.proxy.survival]
address = "10.0.0.12"
port = 8193
token = "the survival backend's default token"
Ajoutez un bloc par backend. Le nom n'est qu'une étiquette. Dans notre test, un vote v1 et un vote v2 envoyés au proxy sont tous deux arrivés sur Paper comme des votes v2 en moins d'une seconde :
[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.
Ensuite, nous avons mis un mauvais jeton dans l'entrée de backend du proxy. La liste a quand même reçu {"status":"ok"} du proxy, alors que le backend rejetait chaque copie et que le proxy réessayait sans cesse :
[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).
Donc sur un réseau, un test vert ne prouve que le proxy. Regardez aussi la console d'un backend. Avec l'une ou l'autre méthode, protégez les backends par un pare-feu pour que seul le proxy puisse atteindre leurs ports de jeu et Votifier, sinon n'importe qui pourrait leur envoyer de faux votes.
Ouvrir le port
Votifier a besoin d'un port TCP joignable depuis Internet.
- Hébergeurs de serveurs de jeu. Ajoutez un second port dans votre panneau (souvent une allocation sous un onglet Réseau) et réglez le
portde NuVotifier dessus. Gardezhost: 0.0.0.0. - Un VPS ou un serveur dédié. Ouvrez-le dans le pare-feu, par exemple avec
sudo ufw allow 8192/tcp, et dans le pare-feu réseau de votre fournisseur s'il y en a un. - Docker. Publiez-le à côté du port de jeu, par exemple avec
-p 8192:8192. - Protection DDoS. Les services qui protègent l'adresse de jeu ne transmettent généralement que le port Minecraft : pointez donc Votifier vers l'IP propre de la machine. Sur les 97 fiches avec Votifier au 18 octobre 2026, 68 utilisaient pour Votifier un autre hôte que pour le jeu, dont 49 une simple adresse IP.
La plupart des serveurs finissent sur un port autre que le 8192. À la même date, seules 19 de ces 97 fiches utilisaient celui par défaut (en direct : 18), sur 70 ports différents au total. Deux utilisaient le 25575, le port RCON par défaut, ce qui ne marche que tant que RCON est désactivé ou déplacé.
Pour vérifier le port depuis l'extérieur, lancez ceci depuis une autre machine ou un autre réseau :
nc -v 203.0.113.10 8192
NuVotifier accueille chaque connexion avec une ligne comme VOTIFIER 2 mmdin5k3bh10u2fommgp3hahkv. Si vous la voyez, le port est ouvert et NuVotifier est derrière. Sous Windows, Test-NetConnection 203.0.113.10 -Port 8192 dans PowerShell affiche TcpTestSucceeded : True pour un port ouvert, sans l'accueil.
Ajouter les informations à votre fiche serverlist.net
Quand vous ajoutez un serveur, l'étape « Votes » demande Votifier. Pour une fiche que vous avez déjà, ouvrez-la depuis le tableau de bord et utilisez son onglet « Votes ». Les deux ont les mêmes quatre parties.
- Où Votifier écoute. Saisissez l'hôte qui atteint Votifier, souvent l'IP du serveur plutôt que l'adresse utilisée par les joueurs, et le port Votifier, pas le port de jeu. Tester le port frappe à ce port et lit l'accueil de Votifier sans envoyer de vote, ce qui vous montre tout de suite si le port est ouvert et si c'est NuVotifier ou le Votifier classique qui répond.
- Clé ou jeton. Choisissez Jeton NuVotifier et collez votre jeton
default, ou choisissez Clé publique Votifier et collez tout le contenu depublic.key. La clé de 2048 bits par défaut tient sur une seule ligne de 392 caractères commençant parMIIBIjANBgkq. Ne collez jamaisprivate.key. - Votre plugin de récompenses. Cette partie affiche la ligne dont VotingPlugin a besoin, expliquée plus bas.
- Vote de test. Envoyez-en un avant de publier ou d'enregistrer.
Votre jeton et votre clé sont stockés chiffrés. Chaque vote est d'abord enregistré, puis livré juste après en arrière-plan, les livraisons échouées sont retentées, et chaque tentative apparaît dans le journal de livraison de cet onglet. Notre ancien système ne gardait aucun résultat de livraison, nous ajouterons donc ici une répartition des échecs les plus courants une fois que le nouveau journal couvrira un mois complet.
Tester avec le testeur Votifier
Le testeur Votifier envoie un vrai vote, avec le pseudo de votre choix, à l'adresse que vous saisissez. Il demande un captcha et autorise cinq tests par adresse IP toutes les dix minutes. Pour la v2, il affiche la réponse même de NuVotifier, {"status":"ok"} ou une erreur du tableau ci-dessous. Pour la v1, il peut seulement montrer qu'il s'est connecté et a envoyé le vote : confirmez donc dans votre console.
Un vote livré déclenche une ligne de console comme celle-ci, qui énumère ensuite le nom de service, le pseudo, l'adresse et l'horodatage du vote :
[Votifier] Got a protocol v2 vote record from /203.0.113.7:50480
Si les lignes suivantes disent A vote was received, but you don't have any listeners available to listen for it., la livraison fonctionne et il ne manque que le plugin de récompenses.
La commande de console testvote saute le réseau, la clé et le jeton et déclenche un événement de vote à l'intérieur de votre serveur : elle teste donc les récompenses, pas la livraison. Les détails supplémentaires doivent être écrits sous la forme key=value :
testvote Steve serviceName=ServerList.net
Saisie sous la forme testvote Alex ServerList.net 127.0.0.1, elle a mis 127.0.0.1 dans le champ du pseudo et gardé le nom de service TestVote. Sur un proxy, la commande est ptestvote.
Brancher les récompenses avec VotingPlugin
VotingPlugin est le choix activement maintenu (7.1.1, juillet 2026). SuperbVote, encore cité dans le guide d'installation de NuVotifier, a été mis à jour pour la dernière fois en décembre 2020.
Placez
VotingPlugin.jardanspluginsà côté de NuVotifier et redémarrez.Envoyez un vote de test. VotingPlugin crée tout seul un site pour tout nouveau nom de service :
[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...Ouvrez
plugins/VotingPlugin/VoteSites.yml, repérez l'entréeServerList_netgénérée et donnez-lui une récompense. Une entrée terminée ressemble à ceci :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!'ServiceSitedoit correspondre exactement.VoteDelay: 24hcorrespond à notre délai glissant de 24 heures, pour que/vote nextaffiche la bonne heure.eco givesuppose un plugin d'économie comme EssentialsX.Rechargez avec
/av reloadet votez de nouveau avec le pseudo d'un joueur qui s'est déjà connecté à votre serveur.
Cette dernière étape piège presque tout le monde. Avec les réglages par défaut, VotingPlugin ignore les votes pour des pseudos qu'il n'a jamais vus :
[VotingPlugin] Player Steve has not joined before, disregarding vote. Reason: unknown-user. Set AllowUnjoined to true to accept.
Testez avec votre propre pseudo, ou réglez AllowUnjoined: true dans Config.yml. Pour un joueur hors ligne, VotingPlugin a annoncé le vote aussitôt mais retenu la récompense par commande, qu'il distribue par défaut à la prochaine connexion du joueur.
- Joueurs Bedrock. Avec Geyser et Floodgate, les pseudos Bedrock portent un préfixe, un point par défaut, donc un joueur Bedrock doit voter en tant que
.Stevepour que la récompense le retrouve. Au cours des 30 derniers jours, 6 % de tous les votes sur serverlist.net venaient de pseudos Bedrock : mentionnez donc le préfixe dans votre message/vote. Le guide Geyser couvre le réglage du préfixe. - Réseaux. Le mode proxy de VotingPlugin se règle dans
BungeeSettings.yml. Donnez à chaque backend un nom de serveur unique et gardez le mêmeVoteSites.ymlpartout.
Ce que voient les joueurs de leur côté, et ce qu'il faut leur dire quand une récompense manque, se trouve dans pourquoi les serveurs Minecraft vous demandent de voter.
Erreurs et ce qu'elles signifient
Chaque message au format code vient de notre banc d'essai. « Liste » désigne ce que reçoit une liste v2, ou notre testeur.
| Message, et où vous le voyez | Ce que cela signifie | Solution |
|---|---|---|
Connection refused, côté liste ou testeur | Rien n'écoute sur cette adresse et ce port. | Lisez la ligne Votifier enabled on socket pour connaître le vrai port et la vraie adresse. |
| Délai de connexion dépassé, côté liste ou testeur | Un pare-feu ou l'hébergeur coupe la connexion, ou l'hôte est une adresse protégée qui ne transmet que le port de jeu. | Ouvrez le port TCP. Utilisez l'IP propre de la machine. |
Votifier was not able to bind to /0.0.0.0:8192, dans la console au démarrage | Un autre programme utilise déjà le port, souvent un second serveur ou le proxy sur la même machine. | Donnez à chaque NuVotifier son propre port. |
Could not decrypt data from /203.0.113.7:46788. Make sure the public key on the list is correct., dans la console | Clé v1 incorrecte. La liste a une ancienne clé, la clé d'un autre serveur ou une clé tronquée. | Copiez à nouveau public.key, en entier, et mettez la liste à jour. |
Signature is not valid (invalid token?), côté liste et dans la console | Jeton v2 incorrect. | Copiez à nouveau le jeton default, sans espaces. Supprimez tout jeton ajouté sous notre nom de service. Sur un réseau, vérifiez aussi les entrées de backend du proxy. |
Unknown service 'ServerList.net', côté liste et dans la console | Il n'y a pas de jeton default dans tokens. | Ajoutez un jeton default et donnez-le à la liste. |
This server only accepts well-formed Votifier v2 packets., dans la console | disable-v1-protocol est activé et une liste a envoyé un vote v1. | Passez cette liste en v2, ou réactivez la v1. |
Challenge is not valid, côté liste et dans la console | La liste a répondu avec un mauvais défi. C'est un bug côté liste. | Signalez-le à la liste. |
A vote was received, but you don't have any listeners available to listen for it., dans la console | La livraison fonctionne. Aucun plugin de récompenses n'est installé. | Installez VotingPlugin. |
Player Steve has not joined before, disregarding vote. Reason: unknown-user., dans la console | VotingPlugin a ignoré un pseudo qu'il n'a jamais vu. | Testez avec un vrai joueur, ou réglez AllowUnjoined: true. |
Unable to send vote to /127.0.0.1:8192. Will retry sending in 1 second(s)., dans la console du proxy | Le proxy forwarding ne peut pas livrer à un backend : mauvais jeton, port ou adresse. | Lisez la console du backend pour connaître la vraie raison. |
Quand les erreurs arrivent en rafale, NuVotifier cesse de les afficher après la cinquième en deux secondes : envoyez donc un seul test à la fois.
FAQ
Quel port Votifier doit-il utiliser ? N'importe quel port TCP libre que votre hébergeur vous laisse ouvrir. Le 8192 n'est que le port par défaut. Ce ne peut pas être votre port de jeu, et évitez le 25575 si vous utilisez RCON.
Ai-je besoin de la v2 ? Non, nous acceptons les deux. La v2 est meilleure là où une liste la prend en charge : les votes ne peuvent pas être rejoués, et la liste peut vous montrer l'erreur exacte. Gardez la v1 activée pour les listes qui n'envoient que de la v1.
Pourquoi certaines listes ne gèrent-elles que la v1 ? La v1 est le protocole Votifier d'origine que chaque liste a implémenté il y a des années. La v2 est arrivée avec NuVotifier, et chaque liste doit l'ajouter séparément.
Cela vaut-il la peine de le configurer ? Presque tous les votes se font là où Votifier est configuré. Au cours des 30 derniers jours, 99,7 % de tous les votes sur serverlist.net sont allés à des fiches avec Votifier configuré. Sur les 30 jours jusqu'au 18 octobre 2026, cela représentait 15 443 votes sur 15 477, tandis que 11 fiches sans Votifier se partageaient les 34 restants. Les votes alimentent aussi votre position dans la liste, que le guide de vos 100 premiers joueurs replace dans son contexte.
À lire ensuite
Continuez.
Voter pour un serveur Minecraft : pourquoi et comment
Ce que fait un vote, son trajet jusqu'à votre récompense, la règle des 24 heures, les pseudos Bedrock, et que vérifier si la récompense n'arrive pas.
Comment attirer vos 100 premiers joueurs sur un serveur Minecraft
Ce que montre notre pinger sur les nouveaux serveurs Minecraft et comment attirer vos 100 premiers joueurs : fidélisation, listes, votes, Discord, saisons.