Passo a passo: configurar servidor de Minecraft do zero
Servidores de jogos · Por Kevin Marcondes · Publicado em · Atualizado em · 10 min de leitura
Quer saber como configurar um servidor de Minecraft do zero em Linux? Este passo a passo cobre instalação do Java, firewall, serviço com systemd, propriedades do mundo, DNS, otimizações (Paper + Aikar flags) e backups. No fim, você valida portas e conexão externa para jogar com segurança.
1) Pré‑requisitos e planejamento do servidor
Antes de digitar comandos, defina objetivo: quantos jogadores, mods/plugins e hospedagem. Isso orienta CPU, RAM, disco e rede.
Estimativas variam com mapa, redstone, entidades e plugins. Comece simples, monitore e ajuste ao uso real.
Hospedagem pode ser computador doméstico, VPS ou nuvem. VPS facilita IP público e uptime. Em contêiner, garanta volumes persistentes.
Em casa, considere NAT/port forwarding e qualidade do link. Em nuvem, revise regras de firewall e IPv4/IPv6.
Se for preparar o SO do zero, siga o guia de instalação do Ubuntu Server e, para dimensionar recursos, veja como escolher o tamanho da VPS.
- Acesso: usuário com sudo e SSH habilitado.
- Sistema: Linux 64‑bit atualizado (ex.: Ubuntu Server LTS).
- Java: OpenJDK 17 para versões modernas.
- Rede: porta TCP 25565 liberada de fora para dentro.
- Domínio opcional: cria um endereço fácil para o servidor.
- Segurança: hardening básico e atualizações regulares.
2) Preparar o Linux e instalar o Java (OpenJDK 17)
Crie um usuário dedicado, instale o Java e configure o firewall. Você precisa de acesso sudo. Use UFW para limitar portas abertas.
A porta SSH (22) deve permanecer liberada para não perder acesso remoto. A 25565 é a porta padrão do Minecraft (Java Edition). Para detalhes do firewall, siga o guia de UFW no Ubuntu.
Se usar IPv6 público, libere também o tráfego TCP na 25565 para v6.
# Atualize pacotes e instale Java 17 e UFW
sudo apt update && sudo apt -y upgrade
sudo apt -y install openjdk-17-jre-headless ufw
# Crie usuário e diretório do servidor
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
# Firewall básico: mantém SSH e abre porta do Minecraft
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status numbered
# Verifique a versão do Java
java -version
3) Baixar o servidor, primeira execução e EULA
Você precisa do arquivo do servidor (server.jar). Pode ser Vanilla ou uma distribuição otimizada como Paper/Purpur para melhor desempenho com plugins.
A primeira execução cria eula.txt e server.properties. Leia a EULA e aceite conscientemente. Depois, defina a memória (-Xms/-Xmx) de acordo com seu hardware.
Dica: renomeie o arquivo baixado para server.jar e mantenha tudo em /opt/minecraft/server para simplificar updates.
- Se transferir do seu PC: use scp ou SFTP para /opt/minecraft/server.
- A primeira execução pode falhar pedindo EULA: é esperado.
- Ajuste -Xms e -Xmx conforme a RAM disponível (ex.: 2G, 4G).
- Paper/Purpur costuma reduzir uso de CPU e melhorar TPS sob carga.
# Entre na pasta do servidor
sudo -u minecraft bash -lc 'cd /opt/minecraft/server && pwd'
# Exemplo: transfira o jar do seu computador (rode no seu computador)
# scp SEU_SERVER_JAR usuario@SEU_SERVIDOR:/opt/minecraft/server/server.jar
# Primeira execução para gerar arquivos (pode encerrar com erro pedindo EULA)
sudo -u minecraft bash -lc 'cd /opt/minecraft/server && java -Xms2G -Xmx2G -jar server.jar nogui || true'
# Aceite a EULA após ler (edite manualmente ou use sed)
sudo -u minecraft bash -lc 'cd /opt/minecraft/server && sed -i "s/eula=false/eula=true/" eula.txt'
# Segunda execução de teste
sudo -u minecraft bash -lc 'cd /opt/minecraft/server && java -Xms2G -Xmx2G -jar server.jar nogui'
4) Executar o servidor como serviço (systemd)
Para rodar em background e reiniciar automaticamente, crie um serviço systemd. Isso facilita start/stop, logs e boot automático.
Você pode usar flags de otimização de GC (Aikar flags) em servidores Paper/Purpur. Evite alocar 100% da RAM para sobrar memória ao sistema.
Use journalctl para inspecionar logs e ver TPS, erros de plugins e aviso de memória.
- Início automático no boot com systemctl enable.
- Reinício on-failure cobre travamentos ocasionais.
- LimitNOFILE evita gargalo em descritores de arquivo.
# Crie o unit file do systemd com Aikar flags (ajuste memória)
sudo tee /etc/systemd/system/minecraft.service > /dev/null <<'EOF'
[Unit]
Description=Minecraft Server (Paper/Purpur/Vanilla)
After=network.target
[Service]
WorkingDirectory=/opt/minecraft/server
User=minecraft
Group=minecraft
Restart=on-failure
RestartSec=10
# Ajuste -Xms/-Xmx (ex.: 2G, 4G, 6G)
ExecStart=/usr/bin/java -Xms2G -Xmx2G \
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:InitiatingHeapOccupancyPercent=15 \
-XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
-Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true \
-jar server.jar nogui
SuccessExitStatus=143
TimeoutStopSec=20
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
# Recarregue, habilite e inicie
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
# Acompanhe os logs
journalctl -u minecraft -f -n 50
5) Ajustes úteis no server.properties
O arquivo server.properties define modo online, distância de visão, MOTD e mais. Distâncias menores reduzem consumo de CPU e RAM.
Se usar plugins e otimizações, considere Paper ou Purpur. Mantêm compatibilidade com plugins comuns e melhoram desempenho.
RCON permite administrar o servidor remotamente. Se habilitar, proteja com senha forte e restrinja a porta no firewall (não exponha para a internet aberta).
- online-mode=true mantém verificação de contas oficiais.
- view-distance e simulation-distance afetam desempenho.
- motd exibe a mensagem na lista de servidores.
- white-list=true restringe a jogadores aprovados.
- Defina level-seed para um mundo com semente específica.
# /opt/minecraft/server/server.properties (exemplo)
server-port=25565
online-mode=true
motd=Servidor Survival BR \u2013 boas vindas!
view-distance=8
simulation-distance=8
difficulty=normal
gamemode=survival
max-players=20
white-list=false
enable-command-block=false
spawn-protection=16
allow-nether=true
hardcore=false
max-world-size=29999984
# RCON (opcional; proteja no firewall!)
rcon.port=25575
rcon.password=TroqueEstaSenhaForte
enable-rcon=false
6) Abrir portas, DNS e testes de conexão
Garanta a porta 25565 aberta em todos os níveis: UFW, firewall da nuvem e roteador/NAT. Em cloud, adicione regra de entrada TCP 25565.
Crie um registro DNS A apontando domínio ou subdomínio para o IP público. Isso facilita que os jogadores encontrem o servidor.
Teste a escuta local e conectividade. Se a porta não aparecer como LISTEN, verifique os logs do serviço e o caminho do server.jar. Para reforçar segurança do host, aplique o checklist de segurança para VPS.
- No roteador residencial, faça port forwarding 25565/TCP para o IP interno do servidor.
- Em nuvem, revise regras por origem (0.0.0.0/0) e restrinja se quiser whitelists de IP.
- DNS pode levar minutos para propagar; teste com dig/nslookup.
- Se habilitar RCON, não exponha a porta; limite a IPs de administração.
# Libere a 25565/TCP e confira o estado do UFW
sudo ufw allow 25565/tcp
sudo ufw status
# Verifique se está escutando localmente na 25565
sudo ss -tulpn | grep 25565 || true
# Teste DNS (substitua pelo seu domínio)
nslookup mc.seudominio.com || dig +short mc.seudominio.com
7) Backups, atualização segura e automação
Mantenha backups regulares do diretório do mundo. Não copie mundos com o servidor escrevendo: pare o serviço para evitar corrupção.
Para atualizar, troque o server.jar e reinicie o serviço. Faça backup antes. Em plugins, teste compatibilidade com a nova versão.
Agende backups diários com cron e mantenha versões. Para estratégia avançada (snapshots + S3), veja nosso tutorial de LVM snapshots com Restic.
- Pare o serviço antes de backups e atualizações.
- Compacte com tar.gz para reduzir espaço.
- Teste a restauração periodicamente, não só a criação.
- Considere cópia offsite em outro servidor ou storage.
# Pare, compacte e reinicie (backup manual)
sudo systemctl stop minecraft
sudo mkdir -p /opt/minecraft/backups
sudo tar -czf /opt/minecraft/backups/mc-$(date +%F-%H%M).tar.gz -C /opt/minecraft server
sudo systemctl start minecraft
# Script simples de backup rotativo (mantém 7 arquivos)
sudo tee /usr/local/bin/backup-minecraft.sh > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
BKPDIR=/opt/minecraft/backups
SRCDIR=/opt/minecraft/server
mkdir -p "$BKPDIR"
systemctl stop minecraft
ARCHIVE="$BKPDIR/mc-$(date +%F-%H%M).tar.gz"
tar -czf "$ARCHIVE" -C /opt/minecraft server
systemctl start minecraft
# remove backups antigos, mantém 7
ls -1t "$BKPDIR"/mc-*.tar.gz | tail -n +8 | xargs -r rm -f
EOF
sudo chmod +x /usr/local/bin/backup-minecraft.sh
# Cron diário às 3h (executa como root)
( crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/backup-minecraft.sh" ) | sudo crontab -
8) Como confirmar que funcionou e resolver problemas comuns
Valide logs, escuta de porta e conexão externa. Peça a um amigo para testar com seu IP ou domínio.
Para alertas e bloqueio de tentativas de invasão (ex.: SSH), configure o fail2ban com alertas, seguindo este tutorial de fail2ban + Telegram.
- journalctl mostra erros de Java, memória ou jar inválido.
- Se LISTEN não aparecer na 25565, revise o systemd e o caminho do jar.
- Se conexão externa falhar, verifique firewall da nuvem e NAT no roteador.
- TPS baixo com muitos chunks? Reduza view/simulation-distance e use Paper/Purpur.
| Sintoma | Causa provável | Como resolver |
|---|---|---|
| Jogadores não conectam de fora | Porta 25565 bloqueada em cloud/NAT | Abra 25565/TCP no provedor e faça port forwarding no roteador |
| Servidor cai ao carregar | Pouca RAM ou plugins pesados | Reduza view-distance, aumente RAM, use distribuição otimizada como Paper |
| Mensagem de EULA | eula.txt ainda false | Defina eula=true após ler os termos e reinicie o serviço |
| Latência alta | Rede/rota, região distante | Escolha região próxima dos jogadores; evite Wi‑Fi no host |
| Address already in use | Outra app usando 25565 | Altere server-port ou pare o processo conflitante e reinicie o serviço |
| Sem logs no journalctl | Unit com erro de caminho | Cheque WorkingDirectory/ExecStart e permissões do usuário minecraft |
# Logs recentes do serviço
journalctl -u minecraft --since "15 minutes ago" -n 200 --no-pager
# Verifique escuta da porta
sudo ss -ltnp | grep 25565 || true
# Descubra quem usa a porta (se houver conflito)
sudo lsof -iTCP:25565 -sTCP:LISTEN -P -n || true
Perguntas frequentes
Qual versão do Java usar no servidor de Minecraft?
OpenJDK 17 é a escolha comum para versões modernas do Minecraft Java Edition. Mantenha-o atualizado via apt e teste após cada update para garantir compatibilidade com o server.jar e plugins usados.
Quanta RAM preciso para o servidor?
Depende do número de jogadores, do mundo e de plugins. Para servidores pequenos, 2 a 4 GB costumam funcionar. Com mais jogadores, farms e redstone, aumente a memória e reduza view‑distance. Monitore uso e ajuste -Xms/-Xmx no systemd.
Como mudar a porta padrão 25565?
Edite server.properties (server-port=NUMERO) e ajuste o firewall para a nova porta TCP. Atualize o port forwarding no roteador ou regras de segurança no provedor de nuvem. Avise os jogadores para conectar usando host:porta.
Posso usar domínios tipo play.seudominio.com?
Sim. Crie um registro DNS A apontando para o IP público do servidor. A propagação pode levar alguns minutos. Se mudar a porta padrão, os jogadores devem informar host:porta na conexão, a menos que você use um registro SRV configurado.
Como atualizar o server.jar com segurança?
Pare o serviço, faça backup do diretório do servidor, substitua o server.jar pela nova versão e inicie novamente. Verifique os logs. Com plugins, valide compatibilidade da nova versão em ambiente de teste quando possível.
Vale habilitar Paper/Purpur e Aikar flags?
Para servidores com mais jogadores e plugins, sim. Paper/Purpur trazem otimizações e controles extras. As Aikar flags ajustam o garbage collector, reduzindo pausas. Teste em seu ambiente, pois o ganho real depende da carga e dos plugins.
Precisa de uma mão com Linux, automação ou monitoramento?
Quer acelerar a configuração, hardening, backups ou migração para nuvem do seu servidor de Minecraft? Fale com um especialista e caminhe com segurança.
Falar sobre meu servidorVeja também
- tutorial: implementar Canary releases com Traefik em Docker Compose usando headers e weight routing para deploys graduais de aplicações PHP
- Tutorial: configurar HAProxy com Let's Encrypt e healthchecks para balanceamento de tráfego entre containers Docker em VPS (passo a passo)
- Tutorial prático: implementar mTLS entre Nginx e microserviços usando smallstep CA em Docker Compose
- Tutorial: configurar cgroup v2 e systemd ResourceControl para limitar CPU, memória e I/O de containers Docker no Debian