Entrar Adicione seu servidor

GuiaPara donos de servidor

Como configurar o NuVotifier e testar, passo a passo

Instale o NuVotifier no Paper ou numa rede Velocity, abra a porta, teste e entenda cada erro que ele registra. Testado no Paper 26.3 e no Velocity 4.2.

Equipe editorial do ServerList Publicado em 14 min de leitura
Console do servidor[NuVotifier] Votifier enabled on port 8192[NuVotifier] Using protocol v2 tokensGot a protocol v2 vote record from ServerList.net for Steve[VotingPlugin] Steve voted, 2 rewards

O NuVotifier é o plugin que recebe os votos das listas de servidores. Você o instala no seu servidor ou no seu proxy, abre uma porta TCP e entrega a cada lista o seu endereço, a porta e uma chave pública v1 ou um token v2. Ele não dá recompensas sozinho, então você também precisa de um plugin de recompensas, como o VotingPlugin, e vale testar o caminho inteiro uma vez antes de mandar os jogadores usarem /vote.

Escrevemos este guia olhando as duas pontas do fio. O serverlist.net envia votos para 95 servidores agora mesmo e, para este guia, rodamos o NuVotifier num servidor Paper 26.3 novo e num proxy Velocity 4.2, mandamos votos corretos e outros propositalmente quebrados e copiamos o que o console imprimiu. Toda linha de log citada abaixo saiu dessa configuração, com tokens e endereços trocados por exemplos.

  1. Coloque o nuvotifier.jar na sua pasta plugins e reinicie.
  2. Anote a porta (8192 por padrão), o token e a chave pública que o NuVotifier gera.
  3. Abra essa porta para TCP na sua hospedagem ou no firewall.
  4. Adicione o endereço, a porta e o token (ou a chave) à página do seu servidor no serverlist.net.
  5. Envie um teste pelo Testador de Votifier e acompanhe o console.
  6. Instale o VotingPlugin e dê uma recompensa ao site de votação ServerList.net.

O que o NuVotifier faz e o que não faz

O NuVotifier escuta numa porta TCP. Quando uma lista se conecta, ele lê uma mensagem de voto, confere com a sua chave ou o seu token e dispara um evento de voto dentro do servidor. Um voto leva quatro informações: o nome de serviço da lista (o nosso é ServerList.net), o nome de usuário que o jogador digitou, o endereço IP de quem votou e um timestamp.

O que ele não faz importa tanto quanto o que faz:

  • Ele não dá recompensas. Um plugin de recompensas escuta o evento e paga.
  • Ele não confere se o jogador existe. A lista valida os nomes, e o plugin de recompensas decide o que fazer com nomes desconhecidos.
  • Ele usa só TCP. Uma porta aberta apenas para UDP deixa o Votifier inalcançável.
  • Ele não manda nada de volta para uma lista v1, o que muda o jeito de testar.

A versão oficial continua sendo a 2.7.3, de julho de 2021, um único jar para Paper, Spigot, BungeeCord, Velocity e Sponge. No nosso teste, ela carregou e recebeu votos sem alterações no Paper 26.3 e no Velocity 4.2.0. No Java 25, ela imprime um bloco de avisos que inclui WARNING: sun.misc.Unsafe::objectFieldOffset has been called by. Isso é sobre uma mudança futura do Java, não um erro, e os votos continuaram funcionando.

A versão oficial não é compatível com o Folia. O fork mantido, azuvotifier, é (versão 3.3.6, de novembro de 2025) e fala o mesmo protocolo, então as listas o tratam como o NuVotifier.

Chave v1 ou token v2

As listas podem conversar com o NuVotifier em duas versões do protocolo, e você pode deixar as duas ativadas.

v1 (chave pública)v2 (token)
O que você entrega à listaO conteúdo de rsa/public.keyO token do config.yml
Como o voto é protegidoCriptografado com a sua chave pública RSAAssinado com HMAC-SHA256 usando o token, mais um desafio novo a cada conexão
Um voto capturado pode ser reenviadoSimNão, cada desafio vale uma vez só
A lista fica sabendo se funcionouNão. O NuVotifier lê 256 bytes e fecha a conexão sem responderSim. O NuVotifier responde {"status":"ok"} ou um erro com o motivo
Quem oferece suporteQuase todas as listasListas que implementaram o protocolo do NuVotifier, o serverlist.net incluído

Quem tiver a sua chave pública v1 consegue criar um voto válido, já que criptografar com ela é o protocolo inteiro, então nunca a cole num canal público. E se uma chave v1 bateu ou não só aparece no seu console e em nenhum outro lugar.

No serverlist.net, use v2. Mantenha a v1 ativada enquanto outras listas que você usa ainda precisarem dela. Em 18 de outubro de 2026, 97 dos nossos 218 servidores tinham o Votifier configurado, 68 com uma chave v1 e 29 com um token v2 (ao vivo: 68 e 27).

Instalar no Paper

  1. Baixe o nuvotifier.jar na página de releases do GitHub do NuVotifier ou na página dele no SpigotMC e coloque na pasta plugins do seu servidor.

  2. Inicie o servidor. Na primeira vez, o NuVotifier imprime o seu token e onde ele escuta:

    [Votifier] Your default NuVotifier token is e4qk2v9m1r7t0p5s3a8d6f2h1j.
    [Votifier] Votifier enabled on socket /0.0.0.0:8192.
  3. Pare o servidor e abra plugins/Votifier/config.yml. Sem os comentários, o padrão é assim:

    host: 0.0.0.0
    port: 8192
    disable-v1-protocol: false
    tokens:
      default: e4qk2v9m1r7t0p5s3a8d6f2h1j
    forwarding:
      method: none
      pluginMessaging:
        channel: nuvotifier:votes
  4. Confira o host. Por padrão ele usa o server-ip do server.properties, ou 0.0.0.0 quando está vazio. No nosso servidor de teste, o server-ip era 127.0.0.1, então o NuVotifier ficou escutando em silêncio em 127.0.0.1:8192, onde nenhuma lista jamais chegaria. Leia a linha Votifier enabled on socket depois de cada reinício. Ela deve mostrar 0.0.0.0 ou um endereço que a internet alcance.

  5. Coloque em port a porta que a sua hospedagem lhe der. Ela precisa ser uma porta TCP livre e não pode ser a porta do jogo.

  6. Deixe disable-v1-protocol: false, a menos que todas as listas que você usa ofereçam suporte à v2.

  7. Reinicie o servidor por completo. No nosso teste, um token removido do config.yml continuou funcionando depois do /nvreload até o reinício seguinte, então não confie num reload depois de mudar tokens.

O NuVotifier procura o token pelo nome de serviço da lista e usa o default como reserva. Um token separado por lista parece organizado, mas não funciona para nenhum nome de serviço que tenha um ponto, o nosso incluído. O Paper lê ServerList.net: dentro de tokens como uma seção chamada ServerList com uma chave net dentro. O leitor de TOML do Velocity mantém as aspas de "ServerList.net" como parte do nome e, sem aspas, a configuração nem carrega. De um jeito ou de outro, a busca falha e o NuVotifier confere o nosso voto contra o default, então, se você nos deu o token separado, todo voto falha como assinatura inválida. Entregue-nos o token default. As chaves v1 ficam em plugins/Votifier/rsa/, e só a public.key sai do seu servidor.

Instalar numa rede Velocity ou BungeeCord

Numa rede, os votos chegam ao proxy, o único endereço que as listas conhecem. Instale o mesmo nuvotifier.jar no proxy e em cada backend que deva receber votos. A configuração do proxy é plugins/nuvotifier/config.toml no Velocity e plugins/NuVotifier/config.yml no BungeeCord.

Encaminhar votos para os servidores backend

Plugin messaging é a escolha simples para um proxy só. Os votos viajam até os backends pela conexão de um jogador.

No proxy (config.toml no Velocity):

host = "0.0.0.0"
port = 8192

[forwarding]
method = "pluginMessaging"

[forwarding.pluginMessaging]
channel = "nuvotifier:votes"
cache = "file"
onlySendToJoinedServer = false

Em cada backend (plugins/Votifier/config.yml), desligue o listener próprio do backend com a porta -1 e ative o encaminhamento:

port: -1
forwarding:
  method: pluginMessaging
  pluginMessaging:
    channel: nuvotifier:votes

Plugin messages precisam de um jogador conectado, então um backend sem ninguém online recebe os votos mais tarde: o proxy os guarda em cache (num arquivo, por padrão, por até 10 dias) e os repassa quando alguém entra. Por padrão, todo backend recebe todo voto, então, se cada um roda um plugin de recompensas, quem votou é pago em todos. Use onlySendToJoinedServer = true com um servidor joinedServerFallback, excludedServers ou a configuração de proxy do próprio VotingPlugin.

O proxy forwarding envia cada voto pela rede ao NuVotifier do próprio backend, assinado com o token do backend. Ele não precisa de jogadores online, mas não tem cache: um voto que ainda falha depois de cinco tentativas é descartado. Foi esta a configuração que testamos. Em cada backend, dê ao NuVotifier a sua própria porta, copie o token default dele e coloque disable-v1-protocol: true. No proxy:

[forwarding]
method = "proxy"

[forwarding.proxy.survival]
address = "10.0.0.12"
port = 8193
token = "the survival backend's default token"

Adicione um bloco por backend. O nome é só um rótulo. No nosso teste, um voto v1 e um v2 enviados ao proxy chegaram os dois ao Paper como votos v2 em menos de um segundo:

[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.

Depois colocamos um token errado na entrada do backend no proxy. A lista continuou recebendo {"status":"ok"} do proxy, enquanto o backend recusava todas as cópias e o proxy seguia tentando de novo:

[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).

Ou seja, numa rede, um teste verde prova apenas o proxy. Confira também o console de um backend. Com qualquer um dos métodos, proteja os backends com firewall para que só o proxy alcance as portas de jogo e do Votifier deles, senão qualquer pessoa poderia mandar votos falsos.

Abra a porta

O Votifier precisa de uma porta TCP que a internet alcance.

  • Hospedagens de servidores de jogos. Adicione uma segunda porta no seu painel (muitas vezes uma alocação numa aba Network) e coloque essa porta no port do NuVotifier. Mantenha host: 0.0.0.0.
  • Um VPS ou servidor dedicado. Abra no firewall, por exemplo com sudo ufw allow 8192/tcp, e no firewall de rede do seu provedor, se houver.
  • Docker. Publique ao lado da porta do jogo, por exemplo com -p 8192:8192.
  • Proteção contra DDoS. Serviços que protegem o endereço do jogo costumam encaminhar só a porta do Minecraft, então aponte o Votifier para o IP da própria máquina. Dos 97 servidores com Votifier em 18 de outubro de 2026, 68 usavam um host diferente para o Votifier e para o jogo, e 49 deles um IP simples.

A maioria dos servidores acaba numa porta diferente da 8192. Na mesma data, só 19 desses 97 usavam o padrão (ao vivo: 18), espalhados por 70 portas diferentes no total. Dois usavam a 25575, a porta padrão do RCON, o que só funciona enquanto o RCON estiver desligado ou movido.

Para conferir a porta de fora, rode isto de outra máquina ou de outra rede:

nc -v 203.0.113.10 8192

O NuVotifier recebe toda conexão com uma linha como VOTIFIER 2 mmdin5k3bh10u2fommgp3hahkv. Se você a vir, a porta está aberta e o NuVotifier está atrás dela. No Windows, o Test-NetConnection 203.0.113.10 -Port 8192 do PowerShell mostra TcpTestSucceeded : True para uma porta aberta, sem a saudação.

Adicione os dados à página do seu servidor no serverlist.net

Quando você adiciona um servidor, a etapa Votos pede o Votifier. Para um servidor que você já tem, abra-o pelo painel e use a aba Votação dele. As duas têm as mesmas quatro partes.

  1. Onde o Votifier escuta. Informe o host que alcança o Votifier, muitas vezes o IP do servidor e não o endereço que os jogadores usam, e a porta do Votifier, não a do jogo. Verificar porta bate nessa porta e lê a saudação do Votifier sem enviar voto nenhum, então você vê na hora se a porta está aberta e se quem responde é o NuVotifier ou o Votifier clássico.
  2. Chave ou token. Escolha Token do NuVotifier e cole o seu token default, ou escolha Chave pública do Votifier e cole o conteúdo inteiro do public.key. A chave padrão de 2048 bits é uma linha única de 392 caracteres que começa com MIIBIjANBgkq. Nunca cole o private.key.
  3. Seu plugin de recompensas. Esta parte mostra a linha de que o VotingPlugin precisa, explicada mais abaixo.
  4. Voto de teste. Envie um antes de publicar ou salvar.

O seu token e a sua chave ficam armazenados criptografados. Cada voto é salvo primeiro e entregue logo depois, em segundo plano, as entregas que falham são repetidas e cada tentativa aparece no registro de entregas dessa aba. O nosso sistema anterior não guardava resultados de entrega, então vamos acrescentar aqui um resumo dos erros mais comuns quando o novo registro tiver um mês completo.

Teste com o Testador de Votifier

O Testador de Votifier envia um voto real, com um nome de usuário que você escolhe, para o endereço que você informar. Ele pede um captcha e permite cinco testes por endereço IP a cada dez minutos. Na v2, mostra a resposta do próprio NuVotifier, {"status":"ok"} ou um erro da tabela abaixo. Na v1, só consegue mostrar que conectou e enviou o voto, então confirme no seu console.

Um voto entregue abre uma linha de console como esta, que em seguida lista o nome de serviço, o usuário, o endereço e o timestamp do voto:

[Votifier] Got a protocol v2 vote record from /203.0.113.7:50480

Se as linhas seguintes disserem A vote was received, but you don't have any listeners available to listen for it., a entrega funciona e só falta o plugin de recompensas.

O comando de console testvote pula a rede, a chave e o token e dispara um evento de voto dentro do seu servidor, então testa recompensas, não a entrega. Dados extras precisam ser escritos como key=value:

testvote Steve serviceName=ServerList.net

Escrito como testvote Alex ServerList.net 127.0.0.1, ele colocou 127.0.0.1 no campo do nome de usuário e manteve o nome de serviço TestVote. Num proxy, o comando é ptestvote.

Ligue as recompensas com o VotingPlugin

O VotingPlugin é a escolha que continua recebendo manutenção (7.1.1, de julho de 2026). O SuperbVote, que ainda aparece no guia de configuração do NuVotifier, teve a última atualização em dezembro de 2020.

  1. Coloque o VotingPlugin.jar em plugins, ao lado do NuVotifier, e reinicie.

  2. Envie um voto de teste. O VotingPlugin cria um site de votação por conta própria para qualquer nome de serviço novo:

    [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...
  3. Abra plugins/VotingPlugin/VoteSites.yml, ache a entrada ServerList_net gerada e dê uma recompensa a ela. Uma entrada pronta é assim:

    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!'

    O ServiceSite precisa bater exatamente. O VoteDelay: 24h combina com o nosso intervalo móvel de 24 horas, então o /vote next mostra o horário certo. O eco give pressupõe um plugin de economia, como o EssentialsX.

  4. Recarregue com /av reload e vote de novo com o nome de um jogador que já entrou no seu servidor.

Esse último passo pega quase todo mundo. Com as configurações padrão, o VotingPlugin ignora votos de nomes que nunca viu:

[VotingPlugin] Player Steve has not joined before, disregarding vote. Reason: unknown-user. Set AllowUnjoined to true to accept.

Teste com o seu próprio nome ou coloque AllowUnjoined: true no Config.yml. Para um jogador que estava offline, o VotingPlugin anunciou o voto na hora, mas segurou a recompensa em comandos, que por padrão ele entrega quando o jogador entra de novo.

  • Jogadores do Bedrock. Com o Geyser e o Floodgate, os nomes do Bedrock levam um prefixo, um ponto por padrão, então um jogador do Bedrock precisa votar como .Steve para a recompensa encontrá-lo. Nos últimos 30 dias, 6% de todos os votos do serverlist.net vieram de nomes Bedrock, então mencione o prefixo na sua mensagem do /vote. O guia do Geyser cobre a configuração do prefixo.
  • Redes. O modo proxy do VotingPlugin é configurado no BungeeSettings.yml. Dê a cada backend um nome de servidor único ali e mantenha o VoteSites.yml igual em todos.

O que os jogadores veem do lado deles, e o que dizer quando uma recompensa some, está em por que servidores de Minecraft pedem que você vote.

Erros e o que significam

Toda mensagem em formato de código saiu da nossa configuração de teste. "Lista" quer dizer o que uma lista v2, ou o nosso testador, recebe de volta.

Mensagem e onde você a vêO que significaSolução
Connection refused, na lista ou no testadorNada escuta nesse endereço e nessa porta.Veja na linha Votifier enabled on socket a porta e o endereço reais.
Tempo de conexão esgotado, na lista ou no testadorUm firewall ou a hospedagem derruba a conexão, ou o host é um endereço protegido que só encaminha a porta do jogo.Abra a porta TCP. Use o IP da própria máquina.
Votifier was not able to bind to /0.0.0.0:8192, no console na inicializaçãoOutro programa já usa a porta, muitas vezes um segundo servidor ou o proxy na mesma máquina.Dê a cada NuVotifier a sua própria porta.
Could not decrypt data from /203.0.113.7:46788. Make sure the public key on the list is correct., no consoleA chave v1 não bate. A lista tem uma chave antiga, a chave de outro servidor ou uma cortada.Copie o public.key de novo, inteiro, e atualize a lista.
Signature is not valid (invalid token?), na lista e no consoleO token v2 não bate.Copie o token default de novo, sem espaços. Remova qualquer token que você tenha colocado com o nosso nome de serviço. Numa rede, confira também as entradas de backend do proxy.
Unknown service 'ServerList.net', na lista e no consoleNão existe um token default em tokens.Adicione um token default e entregue-o à lista.
This server only accepts well-formed Votifier v2 packets., no consoleO disable-v1-protocol está ligado e uma lista enviou um voto v1.Passe essa lista para a v2 ou ligue a v1 de novo.
Challenge is not valid, na lista e no consoleA lista respondeu com o desafio errado. É um erro do lado da lista.Avise a lista.
A vote was received, but you don't have any listeners available to listen for it., no consoleA entrega funciona. Nenhum plugin de recompensas está instalado.Instale o VotingPlugin.
Player Steve has not joined before, disregarding vote. Reason: unknown-user., no consoleO VotingPlugin ignorou um nome que nunca tinha visto.Teste com um jogador real ou coloque AllowUnjoined: true.
Unable to send vote to /127.0.0.1:8192. Will retry sending in 1 second(s)., no console do proxyO proxy forwarding não consegue entregar a um backend: token, porta ou endereço errado.Leia o console do backend para ver o motivo real.

Quando os erros chegam em rajada, o NuVotifier para de imprimi-los depois do quinto em dois segundos, então envie um teste de cada vez.

Perguntas frequentes

Qual porta o Votifier deve usar? Qualquer porta TCP livre que a sua hospedagem deixe abrir. A 8192 é só o padrão. Ela não pode ser a porta do jogo, e evite a 25575 se você usa RCON.

Preciso da v2? Não, aceitamos as duas. A v2 é melhor onde a lista oferece suporte: os votos não podem ser reenviados, e a lista pode mostrar o erro exato. Mantenha a v1 ligada para listas que só enviam v1.

Por que algumas listas só aceitam v1? A v1 é o protocolo original do Votifier, que todas as listas implementaram anos atrás. A v2 veio com o NuVotifier, e cada lista precisa acrescentá-la por conta própria.

Vale a pena configurar? Quase toda a votação acontece onde o Votifier está configurado. Nos últimos 30 dias, 99,7% de todos os votos do serverlist.net foram para servidores com o Votifier configurado. Nos 30 dias até 18 de outubro de 2026, foram 15.443 de 15.477 votos, enquanto 11 servidores sem Votifier dividiram os 34 restantes. Os votos também alimentam a sua posição na lista, o que o guia dos seus primeiros 100 jogadores coloca em contexto.