Como criar servidor Minecraft Java em VPS Linux Ubuntu do zero

Passo a passo pra criar servidor Minecraft Java Edition em VPS Linux Ubuntu 24.04, com Paper, systemd, firewall, backup e plugins prontos pra produção.

Subir um servidor Minecraft Java Edition em VPS Linux dá controle total que servidores compartilhados não oferecem — porta dedicada, RAM garantida, root pra instalar plugins e mods customizados, e backups quando você quiser. Mas o caminho do zero envolve detalhes que erram muitos owners de primeira viagem: rodar como root, deixar a JVM default, esquecer firewall, ou fechar o SSH e ver o servidor morrer.

Este tutorial cobre o setup completo pra produção real numa VPS Ubuntu 24.04 LTS: instalação do Java 21 (requisito do Minecraft 1.20.5+), download do Paper (o servidor que praticamente todo servidor Java sério roda hoje), criação de usuário dedicado, configuração do systemd pra o serviço subir sozinho, firewall UFW, e script de backup automático. O tempo estimado é 25-35 minutos pra alguém familiar com terminal Linux.

A persona alvo é quem nunca rodou servidor Minecraft em Linux mas tem experiência básica de SSH. Não vamos cobrir Bedrock Edition (Geyser é outro tutorial), nem mods Forge (idem) — foco em Java Edition vanilla ou com plugins Bukkit/Paper.

Pré-requisitos

O que você precisa antes de começar

VPS rodando Ubuntu 24.04 LTS (22.04 também serve), acesso root via SSH, no mínimo 2 GB de RAM dedicados ao servidor, 20 GB de disco livre, e conhecimento básico de comandos Linux. Se a VPS é nova, faça antes o hardening mínimo: troque a senha do root, crie usuário com sudo, e desative login root por senha no SSH.

Sistema Ubuntu 24.04 LTS
RAM mínima 2 GB
Java 21 (Temurin)
Porta padrão 25565

A versão do Java importa: Minecraft 1.20.5 e superiores exigem Java 21. Versões antigas (1.17 a 1.20.4) rodam em Java 17. Servidores 1.16 e abaixo aceitam Java 8 ou 11. Este tutorial assume 1.21.x — a versão atual estável — então Java 21 é o caminho.

Preparando o sistema base

Antes de baixar o Paper, atualize o sistema e instale dependências. Rodar como root direto é desnecessário e perigoso — o serviço vai rodar com usuário dedicado depois.

01

Conecte na VPS via SSH e atualize os pacotes:

sudo apt update && sudo apt upgrade -y

Esse comando lê os repositórios e aplica todas as atualizações de segurança pendentes. Se for a primeira vez na VPS, o upgrade pode demorar 2-5 minutos.

02

Instale dependências básicas: utilitários de download, screen pra sessões persistentes (fallback caso systemd não rode bem), e o repositório do Adoptium (Eclipse Temurin) pra Java 21:

sudo apt install -y wget curl screen ca-certificates apt-transport-https gnupg
03

Adicione o repositório Adoptium e instale Java 21:

wget -qO- https://packages.adoptium.net/artifactory/api/gpg/key/public | \
  sudo gpg --dearmor -o /etc/apt/keyrings/adoptium.gpg

echo "deb [signed-by=/etc/apt/keyrings/adoptium.gpg] \
https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | \
  sudo tee /etc/apt/sources.list.d/adoptium.list

sudo apt update
sudo apt install -y temurin-21-jre

Confirme com java -version — deve aparecer “Temurin-21”.

Por que Temurin e não OpenJDK do Ubuntu?

O Temurin (antigo AdoptOpenJDK) é a distribuição oficial do projeto Eclipse Adoptium, mantida pela mesma equipe que cuida do OpenJDK original. Performance idêntica, mas com releases mais previsíveis e suporte LTS estendido. Servidores Minecraft de produção rodam Temurin ou Azul Zulu — raramente o openjdk-21-jre do Ubuntu, que pode demorar pra receber patches críticos.

Criando usuário dedicado e estrutura de diretórios

Rodar Minecraft como root é um anti-padrão clássico. Se um plugin malicioso é instalado, ele tem acesso root ao sistema inteiro. Usuário dedicado isola o processo.

04

Crie usuário sem login interativo e diretório base:

sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
sudo mkdir -p /opt/minecraft/server
sudo chown -R minecraft:minecraft /opt/minecraft

A flag -r cria usuário de sistema (sem UID humano), -m cria o home diretório, -U cria um grupo com o mesmo nome.

05

Mude pra o usuário minecraft e entre no diretório do servidor:

sudo -u minecraft -i
cd /opt/minecraft/server

Todos os comandos a partir daqui rodam como minecraft até reiniciar sessão. Pra sair, exit.

Baixando e configurando o Paper

Paper é distribuído via API oficial — sempre pegue o build mais recente da versão alvo.

06

Baixe o Paper 1.21.x (substitua VERSION e BUILD pelos valores atuais da PaperMC downloads):

PAPER_VERSION="1.21.4"
PAPER_BUILD="latest"
wget -O paper.jar \
  "https://api.papermc.io/v2/projects/paper/versions/${PAPER_VERSION}/builds/${PAPER_BUILD}/downloads/paper-${PAPER_VERSION}-${PAPER_BUILD}.jar"

Se o build “latest” não funcionar, consulte a API manualmente em https://api.papermc.io/v2/projects/paper/versions/1.21.4 pra pegar o número do build mais recente.

07

Aceite o EULA. Sem isso, o servidor recusa a iniciar:

echo "eula=true" > eula.txt
08

Faça a primeira execução pra gerar arquivos de configuração:

java -Xms1G -Xmx2G -jar paper.jar nogui

Ele vai gerar server.properties, criar a pasta world/, e parar no prompt do servidor. Digite stop e pressione Enter pra encerrar.

Ajuste Xmx ao seu plano de VPS

-Xmx2G aloca 2 GB de heap pra JVM. Se sua VPS tem 4 GB de RAM total, use -Xmx3G deixando 1 GB pro sistema. Nunca aloque 100% da RAM — o sistema operacional e a própria JVM (metaspace, threads, GC) precisam de overhead. Se a VPS tem 2 GB, use -Xmx1500M no máximo.

Configurando systemd pra rodar 24/7

Sem systemd, fechar o SSH derruba o servidor. Com systemd, o serviço sobe sozinho no boot, reinicia em caso de crash, e logs vão pro journalctl.

09

Saia do usuário minecraft (exit) e crie o unit file como root:

sudo nano /etc/systemd/system/minecraft.service

Cole o conteúdo abaixo:

[Unit]
Description=Minecraft Java Server (Paper)
After=network.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/java -Xms1G -Xmx2G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -jar paper.jar nogui
Restart=on-failure
RestartSec=15s
SuccessExitStatus=0 143

[Install]
WantedBy=multi-user.target
10

Recarregue systemd, habilite o serviço, e inicie:

sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft
11

Confirme que está rodando:

sudo systemctl status minecraft
sudo journalctl -u minecraft -f

O segundo comando mostra logs em tempo real — Ctrl+C pra sair. Procure pela linha “Done (X.XXXs)! For help, type help” — é o sinal de servidor operacional.

Liberando a porta no firewall

UFW vem instalado no Ubuntu mas geralmente desativado. Ative com cuidado pra não se trancar fora.

12

Libere SSH antes de qualquer coisa, depois a porta do Minecraft:

sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable

Confirme com sudo ufw status. Deve listar 22/tcp e 25565/tcp como ALLOW IN.

Cuidado ao trocar a porta SSH

Se a VPS tem SSH em porta não-padrão (ex: 2222), libere ela ANTES de ufw enable. Habilitar UFW sem liberar a porta SSH ativa te tranca fora — só recuperando via console da web do provedor.

Script de backup automático

Mundo Minecraft corrompe. Plugin quebra mundo. Player com WorldEdit deleta a spawn. Backup diário é seguro de noite tranquila.

13

Crie o script como usuário minecraft:

sudo -u minecraft -i
mkdir -p /opt/minecraft/backups
nano /opt/minecraft/backup.sh

Conteúdo:

#!/bin/bash
BACKUP_DIR="/opt/minecraft/backups"
SERVER_DIR="/opt/minecraft/server"
DATE=$(date +%Y%m%d-%H%M)
tar -czf "${BACKUP_DIR}/world-${DATE}.tar.gz" -C "${SERVER_DIR}" world world_nether world_the_end
find "${BACKUP_DIR}" -name "world-*.tar.gz" -mtime +7 -delete

Torne executável:

chmod +x /opt/minecraft/backup.sh
14

Agende com cron pra rodar diariamente às 4h da manhã:

crontab -e

Adicione:

0 4 * * * /opt/minecraft/backup.sh

O script mantém 7 dias de backup automático, apagando o mais antigo.

Verificação final

Pra confirmar que tudo funciona:

# Status do serviço
sudo systemctl status minecraft

# Porta escutando
sudo ss -tlnp | grep 25565

# Conectividade externa (do seu desktop)
nc -vz <IP_DA_VPS> 25565

Abra o cliente Minecraft Java, vá em “Multiplayer”, “Add Server”, e use o IP da VPS. Se conecta sem timeout, está pronto.

Resolução de problemas comuns

Servidor inicia mas crasha em segundos

Verifique logs com sudo journalctl -u minecraft -n 100. Causas frequentes: Java na versão errada (1.21+ exige Java 21), Xmx maior que RAM disponível, ou EULA não aceito.

”Connection refused” no cliente

Geralmente firewall — confirme sudo ufw status lista 25565. Se a VPS tem firewall externo (no painel do provedor), libere também lá. UFW local não vê o firewall do provedor.

Lag intenso com poucos jogadores

Antes de upgradar plano, ajuste view-distance em server.properties pra 8 ou 6 (default é 10). Cada redução corta drasticamente o uso de CPU em chunks. Ative simulation-distance=6 também.

Próximos passos

  • Instale o plugin EssentialsX pra comandos básicos (/home, /spawn, /tpa) — vai em /opt/minecraft/server/plugins/ e reinicia o serviço.
  • Configure RCON pra administração remota sem precisar SSH — enable-rcon=true no server.properties.
  • Adicione anti-cheat (Matrix, Vulcan) se o servidor for público.
  • Configure DNS A record pra apontar seu domínio na VPS — jogadores conectam por nome em vez de IP.
  • Se vai escalar pra 30+ jogadores ou hospedar comunidade séria, uma VPS dedicada da Hostini com proteção DDoS é o piso técnico — servidor Minecraft público é alvo constante de ataques L4 que derrubam o port 25565 inteiro sem proteção adequada.

Perguntas frequentes

Quanta RAM o servidor Minecraft Java precisa?

Pra 5-10 jogadores sem mods pesados, 2 GB são suficientes com Paper. Pra 10-20 jogadores ou mundos grandes, planeje 4 GB. Mods complexos (forge com 50+ mods) podem exigir 6-8 GB. A regra prática é dimensionar 256-512 MB por jogador ativo, somados ao baseline de 1 GB do servidor.

Posso rodar Minecraft Java em VPS de 1 GB de RAM?

Tecnicamente sim, mas com restrições severas — view-distance 4, no máximo 3 jogadores, e zero plugins pesados. A JVM precisa de overhead, então com 1 GB você aloca no máximo 768 MB pro servidor e o sistema fica apertado. Pra qualquer servidor com pretensão de uso real, 2 GB é o piso prático.

Qual a diferença entre Paper, Spigot e Vanilla?

Vanilla é o servidor oficial da Mojang — referência, mas lento e sem suporte a plugins. Spigot é um fork otimizado com API de plugins. Paper é um fork do Spigot com otimizações de performance significativas (chunks assíncronos, redstone reescrito) e correções de exploits — é o padrão de fato pra servidores Java desde 2018.

Preciso abrir a porta 25565 no firewall mesmo se a VPS for pública?

Sim. A interface de rede da VPS aceita pacotes vindos da internet, mas o iptables/UFW do Linux bloqueia portas não-liberadas por padrão. Sem `ufw allow 25565`, jogadores tentando conectar recebem timeout — a porta nem responde. Se você muda a porta default no server.properties, libere a nova porta antes de reiniciar.

Como mantenho o servidor rodando depois que fecho o SSH?

Não use `java -jar paper.jar` direto na sessão SSH — fechar o terminal mata o processo. Use systemd (cobre o tutorial) ou screen/tmux. Systemd é superior porque reinicia automático se o servidor crashar, registra logs no journalctl e sobe junto com o boot da VPS depois de um reboot.

Backup do mundo precisa parar o servidor?

Não — mas você precisa avisar o servidor pra flushar dados em disco antes. O comando `save-off` desativa salvamentos automáticos, `save-all flush` força gravação pendente, aí você tar o diretório, e `save-on` reativa. O script de backup do tutorial faz isso via RCON sem desconectar jogadores.

Tópicos:
Próximos passos VPS, dedicado ou painel gerenciado para FiveM, SAMP, MTA, Tibia e mais.Hospede seu servidor de jogos com a Hostini →
Esse tutorial foi útil?
Falar no WhatsApp