Tutoriais de VPS
Montar um servidor Minecraft Java em VPS (2026): Paper, Docker, plugins, whitelist e backups
Implante o Minecraft Java 26.2 com Paper em uma VPS usando Docker Compose, com Java 25, whitelist, plugins, RCON, backups automáticos, testes de restauração, atualizações seguras e diagnóstico de lag de TPS.

Se você quer jogar Minecraft Java no modo survival com amigos a longo prazo, alugar uma VPS e montar seu próprio servidor costuma ser mais estável do que fazer alguém deixar o computador ligado o tempo todo, e também permite instalar plugins do Paper livremente, gerenciar os mapas e controlar os backups. Mas "inicia" e "funciona de forma estável" são coisas muito diferentes: desempenho single-core da CPU, latência do data center, alocação de memória, distância de visão, whitelist e backups do mundo afetam diretamente a experiência.
Este tutorial usa como exemplo as versões estáveis atuais Minecraft Java 26.2 e Paper 26.2, implantadas com Docker Compose e itzg/minecraft-server. A configuração inclui Java 25, Paper, whitelist, RCON Secret, backups automáticos do mundo, instalação de plugins, atualizações e diagnóstico de lag, e é adequada para um servidor survival pequeno de 3 a 10 jogadores.
Primeiro confirme qual cliente seus jogadores usam, para não descobrir depois de montar o servidor que eles não conseguem entrar.
| Cenário | Opção recomendada | Observações |
|---|---|---|
| Todos os jogadores usam Java Edition no Windows, macOS ou Linux | Servidor Paper Java | Compatível com plugins Bukkit/Paper, ecossistema maduro |
| Os jogadores usam principalmente celulares, consoles ou Bedrock Edition | Bedrock Dedicated Server | A porta padrão e o programa de servidor são diferentes; esta configuração não pode ser aplicada diretamente |
| Gerenciar vários servidores de jogos em uma máquina ou entregar a vários administradores | Pterodactyl | Tem painel, cotas de recursos, gerenciamento de arquivos e usuários, mas a implantação é mais complexa |
| Executar apenas um servidor survival Java para 3 a 10 jogadores | O Docker Compose deste artigo | Menos componentes, caminho de atualização e migração claro |
O Paper é um software de servidor Minecraft Java voltado para servidores de produção, que oferece melhor desempenho, opções de configuração e uma API de plugins. Ele não é um carregador de mods; se você precisar de modpacks Forge, NeoForge ou Fabric, o tipo de servidor, a versão do Java e os mods do cliente precisam ser combinados novamente.
Se você precisar gerenciar várias instâncias de Minecraft, Rust ou CS2, continue com Montar um painel de servidor de jogos Pterodactyl em VPS.
O loop principal de jogo de um servidor Minecraft é sensível ao desempenho single-core. Em vez de comprar muitas vCPUs compartilhadas de baixa frequência, priorize uma CPU de alta frequência e desempenho estável, disco NVMe e um data center próximo dos jogadores.
| Escala | VPS sugerida | Heap do Java | Distância de visão sugerida |
|---|---|---|---|
| 2 a 4 jogadores, survival puro, poucos plugins | 2 a 4 núcleos, 4-6GB, 40GB NVMe | 3-4GB | 6-8 |
| 5 a 10 jogadores, plugins de administração comuns | 4 núcleos, 8GB, 60GB NVMe | 6GB | 8 |
| 10 a 20 jogadores, farms de redstone ou exploração frequente | 4 a 6 núcleos de alto desempenho, 12-16GB | 8-12GB | Começar testando 6-8 |
| Modpacks grandes ou servidores públicos | Teste de carga separado | Conforme os requisitos do modpack | Não aplicar diretamente os parâmetros deste artigo |
O heap do Java não pode consumir a VPS inteira. O contêiner, a memória non-heap da JVM, o Docker e o Linux precisam de espaço; a documentação do itzg/minecraft-server recomenda reservar cerca de 25% da memória total do contêiner para as partes non-heap. Este artigo aloca MEMORY=6G em uma VPS de 8GB.
Escolha uma localização de data center próxima dos jogadores principais. Antes de comprar, você pode consultar o Guia de recomendações e configuração de VPS para servidores de jogos para avaliar rotas de rede, proteção DDoS e desempenho single-core.
O sistema de exemplo é o Ubuntu 24.04 LTS. O Minecraft Java usa TCP 25565 por padrão; tanto o security group quanto o firewall do host precisam permitir essa porta.
Se você quiser que os jogadores entrem por um domínio, adicione um registro A para mc.example.com apontando para o IPv4 público da VPS. Ao usar o Cloudflare DNS, configure como DNS only; o proxy normal de nuvem laranja não encaminha o tráfego TCP do Minecraft.
Verifique se a porta está em uso:
sudo ss -lntp | grep ':25565'
Continue apenas se não houver saída. Depois instale o Docker Engine e o Compose v2, e confirme as versões:
docker --version
docker compose version
Crie os diretórios de dados, backups e Secret:
sudo mkdir -p /opt/minecraft/{data,backups,secrets}
sudo chown -R "$USER":"$USER" /opt/minecraft
cd /opt/minecraft
openssl rand -base64 36 > secrets/rcon_password
chmod 600 secrets/rcon_password
O RCON é usado para desligar o servidor com segurança, executar comandos de console e coordenar backups. Este artigo não mapeia a 25575 para a internet pública; o contêiner de backup só acessa essa porta pela rede interna do Compose.
Se você ainda não está familiarizado com verificações de saúde, rotação de logs, limites de recursos e gerenciamento de Secret em ambientes de produção, pode ler primeiro o Guia de configuração de ambiente de produção com Docker Compose em VPS. A configuração abaixo é adaptada para o Minecraft com versões fixadas, persistência, dependências de saúde e orquestração de backups.
Crie o /opt/minecraft/compose.yaml:
services:
mc:
image: itzg/minecraft-server:2026.5.4-java25
container_name: minecraft-paper
restart: unless-stopped
tty: true
stdin_open: true
ports:
- "25565:25565/tcp"
environment:
EULA: "TRUE"
TYPE: "PAPER"
VERSION: "26.2"
MEMORY: "6G"
ONLINE_MODE: "TRUE"
ENABLE_WHITELIST: "TRUE"
ENFORCE_WHITELIST: "TRUE"
WHITELIST: |-
PlayerName1
PlayerName2
MAX_PLAYERS: "10"
VIEW_DISTANCE: "8"
SIMULATION_DISTANCE: "6"
DIFFICULTY: "normal"
MOTD: "Private survival server"
ENABLE_RCON: "TRUE"
RCON_PASSWORD_FILE: /run/secrets/rcon_password
STOP_SERVER_ANNOUNCE_DELAY: "30"
TZ: "Asia/Shanghai"
volumes:
- ./data:/data
secrets:
- rcon_password
stop_grace_period: 90s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
backups:
image: itzg/mc-backup:latest
container_name: minecraft-backups
restart: unless-stopped
depends_on:
mc:
condition: service_healthy
environment:
RCON_HOST: mc
RCON_PASSWORD_FILE: /run/secrets/rcon_password
BACKUP_NAME: minecraft-paper
BACKUP_INTERVAL: "6h"
INITIAL_DELAY: "0"
PRUNE_BACKUPS_DAYS: "7"
TZ: "Asia/Shanghai"
volumes:
- ./data:/data:ro
- ./backups:/backups
secrets:
- rcon_password
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
secrets:
rcon_password:
file: ./secrets/rcon_password
Aqui a versão das ferramentas da imagem do servidor Minecraft e o Java 25 estão fixados, e a versão do jogo está fixada em 26.2. A documentação oficial do Paper informa que a 26.1 e superiores exigem Java 25; se você precisar executar mundos antigos ou plugins antigos da 1.20 à 1.21.11, mude para uma imagem Java 21 e verifique novamente a compatibilidade.
A tag latest do itzg/mc-backup muda. Após a primeira verificação estável, você pode usar docker image inspect para registrar o RepoDigest atual e depois fixar o digest na configuração de produção. Não siga automaticamente versões maiores desconhecidas sem um backup completo.
Definir EULA=TRUE significa aceitar o EULA do Minecraft. Antes de publicar, leia o EULA e as Usage Guidelines vigentes e garanta que a cobrança, o conteúdo e o uso da marca do servidor estejam em conformidade.
Primeiro resolva o Compose e baixe a imagem:
cd /opt/minecraft
docker compose config >/dev/null
docker compose pull
docker compose up -d
docker compose ps
docker compose logs -f mc
A primeira inicialização baixa o Paper 26.2 e gera o mundo. Quando o log mostrar algo como Done, pressione Ctrl+C para sair dos logs; isso não para o contêiner.
Confirme a saúde do contêiner, a versão e a lista de jogadores:
docker compose ps
docker compose exec mc rcon-cli version
docker compose exec mc rcon-cli list
docker compose exec mc rcon-cli whitelist list
O mc deve mostrar healthy. O contêiner de backup espera o servidor de jogo ficar healthy antes de se conectar via RCON.
Permita TCP 25565 no firewall em nuvem da VPS. Com o UFW você pode adicionar:
sudo ufw allow 25565/tcp
sudo ufw status numbered
As portas publicadas pelo Docker podem ignorar regras INPUT simples do UFW, então verifique também o firewall em nuvem e as cadeias de encaminhamento do Docker. Este artigo publica apenas a 25565; a RCON 25575, a API do Docker e as portas de administração SSH nunca devem ser expostas sem proteção.
Teste a partir de um computador em outra rede:
nc -vz mc.example.com 25565
Os jogadores adicionam no multijogador do Minecraft Java Edition:
mc.example.com
A porta padrão 25565 não precisa ser escrita depois do endereço. Ao usar outra porta, os jogadores precisam informar 域名:端口, ou você precisa configurar também um registro SRV.
Servidores privados devem ter a whitelist ativada por padrão. O WHITELIST no Compose resolve os nomes de usuário na inicialização; substitua os nomes de jogador de exemplo antes de publicar.
Adicionar ou remover jogadores em tempo de execução:
docker compose exec mc rcon-cli whitelist add PlayerName
docker compose exec mc rcon-cli whitelist remove PlayerName
docker compose exec mc rcon-cli whitelist list
Conceder permissões de administrador:
docker compose exec mc rcon-cli op PlayerName
docker compose exec mc rcon-cli deop PlayerName
Dê OP apenas a administradores confiáveis. Quando jogadores comuns precisarem de teleporte, proteção de terreno ou comandos básicos, use um plugin de permissões para conceder o mínimo privilégio; não coloque todos como OP por conveniência.
Mantenha ONLINE_MODE=TRUE para que o servidor verifique as contas dos jogadores. Desativar a verificação online remove a validação oficial de identidade e pode causar logins falsos e confusão em inventários e permissões; se uma rede de proxy tiver necessidades especiais, configure conforme o esquema de encaminhamento seguro do Velocity/Paper em vez de desativar diretamente.
Os plugins do Paper ficam no diretório do host:
/opt/minecraft/data/plugins/
Processo de instalação:
- Baixe apenas do site oficial do plugin, do Hangar, do Modrinth ou do GitHub do projeto;
- Confirme que o plugin suporta explicitamente Paper 26.2 e Java 25;
- Faça primeiro um backup do mundo;
- Coloque o JAR em
data/plugins/; - Reinicie completamente o servidor e verifique os logs.
docker compose exec backups backup now
docker compose restart mc
docker compose logs --tail=200 mc
docker compose exec mc rcon-cli plugins
Não use /reload nem plugins de hot-plug. A documentação do Paper afirma explicitamente que a recarga em tempo de execução não é suportada; atualizações, remoções e mudanças de dependências de plugins devem ser feitas com uma reinicialização completa.
Altere apenas um plugin por vez e registre a versão e a origem do download. Se o servidor começar a travar ou o TPS cair, reverta a última alteração primeiro em vez de substituir todos os plugins de uma vez.
O itzg/mc-backup executa comandos de salvamento via RCON, pausa a escrita do mundo, empacota os dados e depois retoma a escrita. Este artigo faz backup a cada 6 horas e mantém por 7 dias.
Ver o status dos backups:
docker compose logs --tail=200 backups
ls -lh /opt/minecraft/backups
Criar um backup imediatamente:
docker compose exec backups backup now
Backups locais não conseguem lidar com falha de disco da VPS, bloqueio de conta ou incidentes no data center. Criptografe e sincronize /opt/minecraft/backups com outro armazenamento de objetos ou servidor externo, e defina um período de retenção independente. Para um teste de backup externo e restauração mais completo, consulte o Guia de testes de backup e restauração em VPS.
Não teste restaurações com sobrescrita diretamente no mundo de produção. Prepare uma VPS de teste ou um novo diretório vazio:
- Copie
compose.yaml, o Secret e o backup escolhido; - Mantenha a 25565 da máquina de teste fechada para a internet pública, ou mude para outra porta;
- Confirme que o diretório
dataestá vazio; - Use o
restore-tar-backupda imagem de backup para restaurar o arquivo mais recente; - Inicie o
mce verifique o mundo, os inventários, os baús do End, os dados dos plugins e a whitelist.
Antes de restaurar, liste os arquivos e confirme que o horário e o tamanho são razoáveis. O mundo carregar não significa que a restauração está completa; entre também nas diferentes dimensões e verifique os bancos de dados dos plugins.
As atualizações de formato de mundo do Minecraft 26.2 e do Paper podem ser irreversíveis. As notas de versão do Paper 26.2 exigem explicitamente um backup antes de atualizar e indicam que, após atualizar para a 26.2, não é possível fazer downgrade para uma versão inferior.
Processo de atualização segura:
cd /opt/minecraft
docker compose exec backups backup now
docker compose exec mc rcon-cli save-all flush
docker compose stop mc
# 修改 VERSION 或镜像标签前,先核对 Paper 与插件兼容性
docker compose pull
docker compose up -d mc
docker compose logs -f mc
Após verificar o mundo, as três dimensões, os dados dos jogadores e os plugins, inicie o serviço de backup:
docker compose up -d backups
docker compose ps
Não mude simplesmente VERSION para LATEST e reinicie sem supervisão. Teste primeiro a nova versão em uma cópia de backup, verificando especialmente economia, permissões, proteção de terreno e plugins de mapa entre versões.
O TPS alvo do Paper é 20; o MSPT precisa ficar abaixo de 50 para manter 20 TPS. Quando houver lag, colete dados primeiro:
docker stats --no-stream
docker compose exec mc rcon-cli tps
docker compose exec mc rcon-cli mspt
docker compose exec mc rcon-cli "spark profiler start --timeout 300"
Deixe o problema realmente ocorrer durante o período de amostragem de 5 minutos e depois verifique o link do relatório retornado pelo spark. Não adicione RAM imediatamente só porque o uso de memória está alto; geração de chunks, entidades, funis, redstone, um plugin específico e E/S de disco podem ser gargalos.
Priorize nesta ordem:
- Reduza
VIEW_DISTANCEde 8 para 6; - Reduza
SIMULATION_DISTANCEde 6 para 4; - Limite farms densas em entidades e chunks carregados continuamente;
- Atualize ou remova plugins de alto consumo conforme o relatório do spark;
- Pré-gere a borda do mundo para servidores com exploração frequente;
- Confirme que a VPS não tem problemas de CPU steal, E/S de disco ou swapping de memória.
Aumentar simplesmente o heap do Java pode prolongar os tempos de coleta de lixo. Após ajustar a memória, passe por pelo menos um período de pico antes de comparar TPS, MSPT e relatórios do spark.
docker compose ps
docker compose logs --tail=200 mc
sudo ss -lntp | grep ':25565'
Se a máquina local está escutando mas as conexões externas expiram, verifique o firewall em nuvem, as regras de encaminhamento do host e a resolução do domínio. Se o domínio tiver o proxy normal do Cloudflare ativado por engano, mude para DNS only.
O cliente precisa usar uma versão do Minecraft Java compatível com o servidor. Verifique:
docker compose exec mc rcon-cli version
grep '^VERSION' compose.yaml
Não conecte um cliente Bedrock diretamente a um servidor Java. Se precisar de interoperabilidade entre versões ou com Bedrock, avalie separadamente a compatibilidade e a segurança de identidade do ViaVersion, Geyser e Floodgate.
docker compose logs --tail=300 mc
docker compose config
As causas comuns incluem não aceitar o EULA, versão do Paper inexistente, versão do Java errada, caminho do Secret errado e problemas de permissão no diretório de dados. Não apague o diretório data para "reinstalar"; ele contém o mundo e os dados dos jogadores.
Confirme que os dois serviços montam o mesmo Secret rcon_password, e que RCON_HOST=mc. Após alterar o Secret, reconstrua os dois contêineres:
docker compose up -d --force-recreate mc backups
docker compose logs --tail=100 backups
Não mapeie a 25575 para a internet pública para testar; diagnostique dentro da rede interna do Compose.
O percentual de CPU da máquina inteira esconde o caso em que um único núcleo já está no máximo. Execute o spark para analisar a thread principal e verifique chunks recém-gerados, IA de entidades, funis, redstone e tarefas de plugins. Comprar mais núcleos lentos normalmente não resolve gargalos da thread principal.
- A versão do Minecraft Java, a versão do Paper e o Java 25 são compatíveis
- A 25565/TCP é acessível de redes externas, a RCON 25575 não está exposta à internet pública
- O domínio usa DNS only e resolve para a VPS correta
- A whitelist está ativada e os nomes de jogador de exemplo foram substituídos
-
ONLINE_MODE=TRUE, apenas administradores confiáveis têm OP -
dataé persistente, o mundo continua existindo após reconstruir o contêiner - Os backups automáticos são executados com sucesso e têm cópias externas
- Um teste de restauração foi concluído em um diretório de teste
- As origens, versões e compatibilidade dos plugins estão registradas
- O backup foi concluído antes da atualização e o risco de não poder fazer downgrade foi verificado
- O TPS em horário de pico está próximo de 20, o MSPT fica abaixo de 50
Somente após concluir essas verificações esta VPS é um servidor Minecraft Java sustentável a longo prazo, e não apenas um servidor temporário. Para um servidor survival pequeno, o mais importante não é enchê-lo de plugins ou adicionar memória sem limite, mas sim desempenho single-core estável, distância de visão razoável, whitelist rigorosa e backups do mundo que realmente possam ser restaurados.