In short: drop NuVotifier into plugins/ and restart — it creates its config and keys and listens on port 8192. On the server list, enter your address, that port and the public key from plugins/NuVotifier/rsa/public.key (or a token, if the site supports protocol v2). Install a reward plugin — NuVotifier doesn't give rewards itself. Open only the vote port in the firewall, and on a network put NuVotifier on the proxy and forward votes to the servers.
What Votifier and NuVotifier are
Votifier is the original plugin and protocol that server lists use to tell a server about a player's vote. NuVotifier is a secure replacement for the original Votifier: any reward plugin that works with Votifier works with it too. NuVotifier is open source under GPLv3, one jar for Bukkit, Spigot and Paper, Sponge 7, BungeeCord and Waterfall, and Velocity. Official releases are on GitHub, with a mirror on SpigotMC.
The latest release of the original NuVotifier on GitHub is 2.7.3. There's also a fork, azuvotifier (also GPL-3.0), on Modrinth: it lists Paper, Folia, Velocity and BungeeCord support and points to the same setup guide. Whichever you pick, check that the plugin page lists your server version.
A single server: setup
- 1
Install the plugin
The NuVotifier jar goes into
plugins/, then a full restart. How to install plugins: install a plugin. - 2
Check the port
NuVotifier listens on
8192by default. The port must be free and differ from the game port: if Minecraft is on 25565, NuVotifier can't use 25565. On shared hosting, ask support to open a port for it. - 3
Add the server to a list
Enter the address, the NuVotifier port and the contents of
public.key— or the token, if the site accepts protocol v2. - 4
Install a reward plugin
NuVotifier only receives the vote. A listener plugin hands out the reward: items, currency, a chat message.
- 5
Test a vote
/testvotesimulates a vote, and a server list may also offer to send a test vote. If the log shows nothing, the site couldn't reach the port — see below.
host: 0.0.0.0
port: 8192
disable-v1-protocol: false
tokens:
default: <generated on first start>
forwarding:
method: noneReload the config with /nvreload — from the console only. The developers don't support /reload or PlugMan: after them NuVotifier may stop working until a full restart.
RSA key and token: protocols v1 and v2
| RSA key (v1) | Token (v2) | |
|---|---|---|
| What it is | A pair of files, public.key and private.key, in plugins/NuVotifier/rsa/ | A short secret string under tokens in the config |
| Who gets it | The server list gets only public.key. Never share private.key | Only server lists that support NuVotifier voting (v2), and your own servers on a network |
| Reliability | The old protocol: the developers call it insecure, and sites often don't notice failed deliveries | The new protocol: more secure and easier to diagnose |
disable-v1-protocol is false by default: per the config comment, most voting sites only support v1, so the developers don't recommend turning it off on a server that takes votes from sites. The keys only work as a pair — don't separate them. If the log says Could not decrypt data (is your key correct?), the public key on the server list doesn't match yours.
A reward plugin
NuVotifier's documentation lists well-known listeners for Bukkit servers, such as VotingPlugin (open source on GitHub, listed on SpigotMC) and SuperbVote; some listeners are paid. Pick one for your server version and for whether you need network support. If the server lags when votes come in, the cause is usually not NuVotifier — it works off the main thread — but the listener or the commands it runs. The spark profiler finds the culprit: see server lag.
A server network: vote forwarding
On a Velocity or BungeeCord network, NuVotifier goes on the proxy and on every server. The proxy receives votes from server lists and forwards them to the servers. There are two methods, and the developers recommend the first.
- `pluginMessaging` forwards over the plugin channel (
nuvotifier:votes) through existing player connections. On the servers:forwarding.method: pluginMessagingandport: -1— they need no port of their own. On the proxy: a free port (8192 works) and the samemethod. By default a vote goes to every server behind the proxy;excludedServersleaves some out, andonlySendToJoinedServer: truesends it only to the server the player is on. Votes for empty servers are cached in a file, for 10 days by default. - `proxy` makes the proxy connect to each server's NuVotifier the way a server list would. On the servers: their own port, the token from
tokens.defaultanddisable-v1-protocol: true; on the proxy:method: proxywithaddress,portandtokenfor each server. There's no vote cache and it's harder to set up — use it only if the first method doesn't fit.
host: 0.0.0.0
port: 8192
forwarding:
method: pluginMessaging
pluginMessaging:
channel: nuvotifier:votes
cache: file
onlySendToJoinedServer: falseFirewall: open only the vote port
A server list connects to NuVotifier over TCP, so besides the game port open only the vote port — on the proxy, if you run a network. With pluginMessaging the NuVotifier ports on the servers behind the proxy are off (-1); with proxy only your proxy connects to them, so open them for the proxy, not the whole internet. At home you also need port forwarding on the router — see server IP and port.
sudo ufw allow 25565/tcp # Minecraft or the proxy
sudo ufw allow 8192/tcp # NuVotifier
sudo ufw status verboseIf votes don't arrive and the log is empty, the developers' troubleshooting guide lists the usual causes: NuVotifier didn't enable, couldn't bind the port, listens on the wrong IP (try host: 0.0.0.0), is blocked by a firewall or sits behind NAT without port forwarding.
Rewards, automation and the anticheat
The vote itself is cast on the server list's website, and the anticheat doesn't see it: it won't catch vote manipulation on a site. But rewards for votes, playtime and leaderboards attract people who play without being there: the character stands around for days, fishing and eating on its own while the owner sleeps. That tilts rewards and the economy towards automation.
| Cheat | DGuard | GrimAC | Vulcan | Polar | Intave | Matrix |
|---|---|---|---|---|---|---|
| AntiAFKfakes a player at the keyboard | ||||||
| AutoFishfishes by itself | ||||||
| AutoEateats by itself |
DGuard — the best anticheat for a modern Minecraft server — catches AntiAFK, AutoFish and AutoEat along with combat, movement and building cheats — 47 cheat types from the comparison in all. Server lists bring players in, but fair play keeps them: a server where you never meet KillAura or Fly is one players recommend themselves. More on attracting and keeping players: how to promote a server.
FAQ
What port does NuVotifier use?
8192 by default, over TCP. It's set by port in plugins/NuVotifier/config.yml. It must differ from the game port and be open in the firewall.
The vote arrived, so why no reward?
NuVotifier only receives votes — a separate listener plugin, such as VotingPlugin or SuperbVote, gives rewards. Without one the vote shows up in the log and nothing else happens.
Which key do I give a server list?
For protocol v1, only public.key from plugins/NuVotifier/rsa/. Never share private.key. If the site supports protocol v2, you can give it the token from tokens.
How do I set up voting on a Velocity network?
Install NuVotifier on the proxy and on every server. On the proxy: an open port and forwarding.method: pluginMessaging; on the servers: the same method and port: -1. The servers must be reachable only through the proxy.
Sources
- NuVotifier on GitHub
- NuVotifier: setup guide
- NuVotifier: troubleshooting guide
- NuVotifier: default Bukkit config
- NuVotifier: default proxy config
- azuvotifier on Modrinth
- VotingPlugin on GitHub
- Ubuntu Server: the ufw firewall
- DGuard, the best anticheat for a modern Minecraft server: checks compared with GrimAC, Vulcan, Polar, Intave and Matrix
- DGuard: installation, requirements and troubleshooting
- DGuard: supported Paper and Leaf versions