Guia passo a passo para instalar, configurar e rodar um servidor dedicado de Project Zomboid no Ubuntu 22.04 / 24.04 / 26.04 LTS com SteamCMD. Cobre configuração de firewall, RAM, instalação de mods, recuperação e os erros mais comuns. Funciona em qualquer provedor de VPS (Hostinger, DigitalOcean, Hetzner, Vultr, AWS, Linode, etc.).
A maioria dos tutoriais para hospedar um servidor de Project Zomboid no Linux pula detalhes importantes como alocação de RAM, regras de firewall e gerenciamento de mods. Este guia foi feito com experiência real hospedando servidores e cobre tudo o que você precisa:
ProjectZomboid64.jsonscreensystemd testadoAntes de começar, certifique-se de ter:
sudo no servidorsudo apt-get update && sudo apt-get upgrade -y
Ativar o UFW (firewall):
sudo ufw enable
⚠️ Importante: Se você está conectado via SSH, libere a porta SSH antes de ativar o firewall, senão você perderá o acesso:
sudo ufw allow 22 # SSH (porta padrão, altere se você usa outra porta)
Liberar as portas do servidor de Project Zomboid:
sudo ufw allow 16261/udp # Porta principal do jogo (UDP)
sudo ufw allow 16262/udp # Porta de conexão direta (UDP)
sudo ufw reload
Verificar se as regras estão ativas:
sudo ufw status
Você deve ver 16261 e 16262 listados como ALLOW.
É uma boa prática rodar servidores de jogos com um usuário separado (não root):
sudo adduser steam
sudo usermod -aG sudo steam
sudo chown steam:steam /home/steam/ -R
sudo chmod -R 755 /home/steam/
Ir para o diretório do usuário steam:
cd /home/steam
Ativar o repositório multiverse e suporte a 32-bit (necessário para o SteamCMD):
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd -y
Trocar para o usuário steam:
su - steam
cd ~
steamcmd
Dentro do SteamCMD, execute:
force_install_dir /home/steam/pzsteam
login anonymous
app_update 380870 validate
exit
380870é o App ID do Project Zomboid Dedicated Server na Steam. É gratuito e pode ser baixado anonimamente, sem precisar ter o jogo.
Navegar até o diretório do servidor:
cd /home/steam/pzsteam
Editar o arquivo de configuração da JVM:
nano ProjectZomboid64.json
Encontre o parâmetro -Xmx e defina a quantidade de RAM desejada:
-Xmx4g → 4 GB de RAM-Xmx8g → 8 GB de RAM (recomendado para a maioria dos servidores)-Xmx16g → 16 GB de RAM (para modpacks grandes ou muitos jogadores)A forma mais fácil de configurar as opções do servidor (mapa, loot, dificuldade, sandbox) é:
C:\Users\<SeuUsuario>\Zomboid\Server\
<nomeservidor>.ini<nomeservidor>_SandboxVars.lua<nomeservidor>_spawnregions.lua/home/steam/Zomboid/Server/
Usando SCP:
scp C:\Users\<SeuUsuario>\Zomboid\Server\<nomeservidor>* steam@<ip-da-sua-vps>:/home/steam/Zomboid/Server/
Ou use o FileZilla via SFTP (porta 22).
O screen mantém o servidor rodando mesmo depois de você desconectar do SSH:
screen -S zomboid
cd /home/steam/pzsteam
./start-server.sh -servername <nomeservidor>
Substitua <nomeservidor> pelo nome do seu arquivo .ini (sem a extensão).
Pressione Ctrl + A, depois D.
screen -r zomboid
Reconecte com screen -r zomboid e digite:
quit
Aguarde o save do mundo completar antes de fechar.
O método com screen acima exige que você entre por SSH e suba o servidor na mão. Se a
máquina reiniciar (queda de energia, atualização de kernel, sudo reboot), o servidor fica
no chão até alguém subir de novo.
Um serviço do systemd resolve isso: o servidor sobe no boot, reinicia se cair, e o
systemctl stop desliga usando o mesmo comando quit documentado acima, então o mundo
é sempre salvo. O console interativo continua funcionando igual, com screen -r zomboid.
sudo nano /etc/systemd/system/zomboid.service
Cole o conteúdo abaixo, trocando <nomedoseuservidor> pelo nome do seu arquivo .ini
(sem a extensão):
[Unit]
Description=Project Zomboid Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/pzsteam
Environment=HOME=/home/steam
ExecStart=/usr/bin/screen -DmS zomboid /home/steam/pzsteam/start-server.sh -servername <nomedoseuservidor>
ExecStop=/bin/bash -c 'screen -S zomboid -p 0 -X stuff "quit\r" || exit 0; while kill -0 $MAINPID 2>/dev/null; do sleep 2; done'
Restart=always
RestartSec=15
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
Uma cópia deste arquivo está em misc/zomboid.service.
Por que ele é escrito assim (cada item abaixo foi verificado em servidor real, não suposto):
screen -DmS cria a sessão sem fazer fork, então o systemd acompanha o processo de
verdade. O screen -dmS comum faz fork e o systemd perde o rastro.ExecStop digita quit no console, exatamente o que o guia manda fazer na mão. Sem
isso, o systemd mandaria sinal direto para a JVM. A linha é submetida com \r (um retorno
de carro de verdade, o byte que a tecla Enter realmente envia), não \n: \n funcionou no
24.04 mas deixava o comando parado sem submeter no 26.04.ExecStop espera o servidor sair. Essa segunda metade importa tanto quanto
a primeira. Um ExecStop de uma linha só, que apenas injeta o quit, retorna na hora, o
systemd conclui que a parada terminou e sinaliza o servidor no meio do save.Restart=always, e não on-failure. O start-server.sh termina com exit 0 mesmo
quando o jogo é morto, então o systemd sempre vê uma saída bem-sucedida e o on-failure
nunca dispararia. Um systemctl stop manual não é considerado falha, então não reinicia
o servidor.TimeoutStopSec=300 limita a parada inteira, incluindo o save. Um mundo vazio salva em
uns 10 segundos; um mundo grande com jogadores demora mais.Não rode uma cópia no screen e outra no systemd no mesmo mundo. Se você subiu o servidor
na mão, volte para ele e digite quit antes:
screen -r zomboid
sudo systemctl daemon-reload
sudo systemctl enable zomboid
sudo systemctl start zomboid
sudo systemctl status zomboid # deve mostrar "active (running)"
sudo -u steam screen -r zomboid # o console, igual a antes
O servidor leva um ou dois minutos carregando antes de aceitar jogadores. Espere aparecer
*** SERVER STARTED *** no console.
| Tarefa | Comando |
|---|---|
| Iniciar | sudo systemctl start zomboid |
| Parar (salva o mundo) | sudo systemctl stop zomboid |
| Reiniciar | sudo systemctl restart zomboid |
| Ver estado | sudo systemctl status zomboid |
| Abrir o console | sudo -u steam screen -r zomboid |
| Sair do console sem derrubar | Ctrl + A, depois D |
| Desligar o início automático | sudo systemctl disable zomboid |
⚠️ Pare o servidor com
systemctl stop, e não digitandoquitno console. ComRestart=always, o systemd entende umquitmanual como saída inesperada e sobe o servidor de novo 15 segundos depois.
Parar com jogadores online é seguro. O encerramento roda o
Saving playersantes de desconectar qualquer um, então os personagens conectados são gravados noplayers.dbprimeiro e só depois os jogadores caem. Mesmo assim, avise-os: do lado deles o servidor simplesmente some.
Onde ficam os logs? O
journalctl -u zomboidmostra só as mensagens do próprio systemd, porque o console do jogo vive dentro doscreen. A saída real do servidor está em/home/steam/Zomboid/server-console.txte em/home/steam/Zomboid/Logs/.
O repositório traz um teste automatizado que sobe o serviço, confere as portas, para o serviço, verifica que o mundo foi salvo sem kill forçado, sobe de novo, confirma que o save foi recarregado, e mata o processo para testar a recuperação de crash:
sudo ./misc/test-zomboid-service.sh
Rode sem jogadores conectados, porque ele sobe e desce o servidor várias vezes.
C:\Users\<SeuUsuario>\Zomboid\mods\
scp -r "C:\Users\<SeuUsuario>\Zomboid\mods\<NomeMod>" steam@<ip-da-sua-vps>:/home/steam/Zomboid/mods/
Ou use o FileZilla via SFTP.
.ini do servidor:
Mods=<ModID>;<OutroModID>
WorkshopItems=<WorkshopID>;<OutroWorkshopID>
Os IDs do mod e da Workshop estão na URL da página do mod na Steam e no arquivo
mod.infodo mod.
Dentro do SteamCMD (logado como anônimo):
workshop_download_item 108600 <WorkshopID>
Os mods são baixados em /home/steam/.steam/steamapps/workshop/content/108600/<WorkshopID>/.
Copie ou crie um link simbólico para /home/steam/Zomboid/mods/.
screen -ls
steamcmd
login anonymous
app_update 380870 validate
exit
Depois reinicie o servidor.
ls -lt /home/steam/Zomboid/Logs/ # encontrar o log mais recente
cat /home/steam/Zomboid/Logs/<arquivo>.txt | tail -100
cp -r /home/steam/Zomboid/Saves/ /home/steam/Zomboid/Saves_backup_$(date +%Y%m%d)/
sudo ufw status, procure por 16261 e 16262screen -lscurl ifconfig.mefree -h, reduza o -Xmx em ProjectZomboid64.json se necessáriols -lt /home/steam/Zomboid/Logs/ e faça cat no arquivo mais novoapp_update 380870 validate no SteamCMDÉ um aviso inofensivo em ambientes VPS Linux. O servidor roda normalmente.
Mods= quanto WorkshopItems= estão configurados corretamente no .ini/home/steam/Zomboid/mods/<ModID>/0x202 ou 0x212Timeout de rede da Steam. Aguarde alguns minutos e tente novamente. Se persistir:
rm -rf /home/steam/.steam/steamcmd/appcache
steamcmd +login anonymous +app_update 380870 +quit
Seu provedor de VPS provavelmente tem um firewall próprio no painel (Hostinger hPanel, DigitalOcean Firewall, AWS Security Groups). Acesse o painel do seu provedor e adicione as regras UDP para as portas 16261 e 16262 lá também.
P: Preciso ter o Project Zomboid para rodar o servidor?
R: Não. O servidor dedicado (App ID 380870) é gratuito e pode ser baixado anonimamente via SteamCMD. Apenas os jogadores que vão se conectar precisam ter o jogo.
P: Quantos jogadores o servidor suporta?
R: Oficialmente até 32 jogadores. Com 8 GB de RAM e uma CPU moderna, 8 a 16 jogadores simultâneos funciona muito bem.
P: Qual versão do Ubuntu usar?
R: Ubuntu 22.04, 24.04 ou 26.04 LTS. Evite versões não-LTS para servidores em produção.
P: Posso rodar em Raspberry Pi ou ARM?
R: Não. O servidor dedicado do Project Zomboid é apenas para arquitetura x86-64.
P: Dá para rodar sem o screen, usando systemd?
R: Sim. Veja Iniciar Automaticamente no Boot (systemd) para um arquivo de serviço pronto. Ele roda o servidor dentro do screen, então o console continua acessível e o systemctl stop ainda salva o mundo com o comando quit documentado.
P: Como definir a senha de administrador do servidor?
R: O servidor pede para você definir na primeira inicialização. Para redefinir depois, edite o arquivo <nomeservidor>.ini e atualize o campo AdminPassword=.
P: Qual provedor de VPS é recomendado?
R: Hetzner (Europa/EUA) e Vultr oferecem ótimo custo-benefício. Hostinger é mais econômico. DigitalOcean tem excelente documentação. Escolha o datacenter mais próximo dos seus jogadores para menor ping.
P: O servidor inicia mas ninguém consegue entrar, o que verificar primeiro?
R: Em ordem: (1) Firewall no painel do seu provedor de VPS, (2) regras UFW com sudo ufw status, (3) IP correto do servidor, (4) console do servidor para erros via screen -r zomboid.
Se este guia te ajudou, considere dar uma ⭐ no repositório, isso ajuda outras pessoas a encontrá-lo!
Encontrou um erro no guia ou tem uma dica para adicionar?
👉 Abra uma issue, todo feedback é bem-vindo.
Pull requests também são bem-vindos!
Este projeto é open-source sob a Licença MIT.