Tutoriais de VPS
Montar um servidor dedicado de Project Zomboid em VPS (2026): Build 42, portas, configuração, backup e atualizações
Crie do zero um servidor dedicado de Project Zomboid Build 42 em um VPS Ubuntu com SteamCMD, cobrindo App ID 380870, UDP 16261/16262, configuração, administradores, lista de permissões, backup e restauração do mundo e atualizações automáticas.

Se você quer manter um mundo de apocalipse zumbi com amigos a longo prazo e não quer que o anfitrião precise estar online toda vez que o jogo continuar, um servidor dedicado de Project Zomboid é a opção mais estável. O mundo, as contas de personagem, os parâmetros do sandbox, a lista de permissões, os mods e os backups ficam todos no VPS, e os colegas podem entrar no horário que preferirem.
Este artigo usa Ubuntu 24.04 LTS, SteamCMD, a branch estável atual do Build 42 e systemd como exemplo para concluir do zero a instalação do servidor, UDP 16261/16262, firewall, configuração do servidor, administradores, lista de permissões, backup do mundo, restauração e atualizações automáticas. O texto principal não usa imagens de jogo de origem desconhecida e não aplica diretamente tutoriais antigos do Build 41 ou das primeiras versões Unstable do Build 42 à versão estável atual.
Em agosto de 2026, o Project Zomboid já enviou oficialmente o Build 42.20 para a branch estável do Steam e lançou o hotfix 42.20.1. Portanto, um servidor novo pode usar a branch estável padrão do Steam, e não é necessário adicionar -beta unstable, b42multiplayer nem parâmetros do Build 41 de tutoriais antigos.
Esse ponto é muito importante:
- O cliente do jogo e o servidor dedicado devem estar em versões compatíveis.
NONEnas propriedades do Steam significa a branch estável atual.- Antes de atualizar do Build 41 para o Build 42, é preciso fazer backup; não presuma que mundos, mods e configurações antigos migrarão sem perdas.
- Atualizações de segurança oficiais e correções multijogador alteram os arquivos do servidor, então manter as atualizações desativadas por muito tempo não é seguro.
Todos os comandos deste artigo têm como alvo a branch estável atual. Quando a equipe oficial lançar uma nova versão estável no futuro, leia primeiro as notas do patch, faça backup do mundo e só então atualize durante uma janela de manutenção.
O Project Zomboid não publicou um conjunto de especificações mínimas de VPS que garanta qualquer mapa, quantidade de mods e número de jogadores. Jogadores explorando separadamente, dirigindo para carregar rapidamente novos chunks, grandes quantidades de zumbis, mods de mapa e conteúdo da Workshop aumentam a pressão sobre CPU, memória, disco e rede. A seguir estão pontos de partida práticos para compra e teste de carga, não promessas oficiais de desempenho:
| Escala de uso | Ponto de partida sugerido do VPS | Disco | Cenários adequados |
|---|---|---|---|
| Servidor vanilla de 2–4 jogadores | 4 vCPUs de alto desempenho, 6–8 GB de memória | 50 GB NVMe | Lista de permissões privada, save de sobrevivência |
| Servidor de longo prazo de 5–10 jogadores | 4–6 vCPUs de alto desempenho, 10–12 GB de memória | 80 GB NVMe | Exploração multijogador, veículos, mapa de longo prazo |
| Mais de 10 jogadores ou servidor com mods | 6–8 núcleos, 16 GB+ de memória | 120 GB+ NVMe | Mods de mapa, maior quantidade de zumbis, servidor público |
Prefira nós com desempenho estável de núcleo único, baixa latência NVMe e boa qualidade UDP. Não olhe apenas a quantidade de vCPUs; um 8 núcleos com sobrevenda grave pode ser pior que um 4 núcleos estável. O data center deve ficar próximo dos principais jogadores, e confirme que o provedor permite servidores de jogos, oferece tráfego suficiente e tem uma política clara de tratamento de DDoS. Antes de comprar, consulte Configuração de VPS para servidores de jogos e escolha de rotas de rede.
| Método | Vantagens | Custo | Para quem |
|---|---|---|---|
| SteamCMD + systemd | Caminhos transparentes, baixo consumo de recursos, logs diretos | Gerenciamento principalmente via SSH | Um único VPS, um mundo |
| Host no jogo | Configuração simples, adequado para cooperação temporária | O anfitrião precisa estar online, não é um serviço real de 24 horas | Sessão temporária de um grupo pequeno |
| Pterodactyl | Painel web, usuários, cotas e múltiplas instâncias | Manutenção extra de Panel, Wings, banco de dados | Vários mundos ou operação multiusuário |
Este artigo usa SteamCMD + systemd. Se você planeja hospedar Minecraft, Valheim, CS2 e Project Zomboid na mesma máquina, considere o guia de implantação do painel de servidores de jogos Pterodactyl.
O servidor dedicado regular do Steam atual deve ser implantado primeiro com o conjunto mínimo de portas:
| Porta | Protocolo | Uso | Público |
|---|---|---|---|
| 16261 | UDP | Conexão principal e Steam Relay | Sim |
| 16262 | UDP | Conexão direta | Sim |
| 22 | TCP | Gerenciamento SSH | Apenas IP do administrador, ou use a porta SSH real |
| 27015 | TCP | RCON, necessário apenas se habilitado | Não aberta por padrão |
A equipe de suporte oficial do Project Zomboid declarou claramente na solução de problemas de portas que o jogo atual só precisa abrir UDP 16261 e 16262; o conteúdo online que exige uma série de portas TCP por jogador vem em grande parte de versões antigas. Este artigo não habilita RCON, portanto a 27015 não é aberta.
O nome de configuração do servidor usa survival. Ele determina os nomes do arquivo de configuração e do diretório do mundo, por exemplo:
survival.ini
survival_SandboxVars.lua
Zomboid/Saves/Multiplayer/survival
Use apenas letras minúsculas, números e hífens no nome de configuração para evitar que espaços e caracteres especiais causem confusão em scripts, backups ou nomes de serviço.
Primeiro atualize o sistema e instale os componentes básicos exigidos pelo SteamCMD:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl ca-certificates tar lib32gcc-s1 ufw
Crie uma conta de serviço que não possa fazer login diretamente com senha e um diretório fixo:
sudo adduser --disabled-password --gecos "" pz
sudo install -d -o pz -g pz /opt/steamcmd
sudo install -d -o pz -g pz /opt/pzserver
sudo install -d -m 750 -o root -g pz /var/backups/project-zomboid
Não execute o serviço de jogo Java como root. Um usuário dedicado limita as permissões do processo e também evita arquivos de propriedade do root após uma atualização do SteamCMD, o que faria a próxima atualização falhar.
Mude para o usuário pz e baixe o SteamCMD oficial para Linux da Valve:
sudo -iu pz
cd /opt/steamcmd
curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -o steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
./steamcmd.sh +quit
Confirme que o arquivo de entrada existe:
test -x /opt/steamcmd/steamcmd.sh
O App ID do Steam do Project Zomboid Dedicated Server é 380870. O login anônimo é suficiente para baixar o servidor:
/opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/pzserver \
+login anonymous \
+app_update 380870 validate \
+quit
O comando não tem o parâmetro -beta, portanto obtém a branch estável atual. Use validate na primeira instalação ou para reparar arquivos corrompidos; as atualizações diárias normalmente não precisam revalidar todos os arquivos a cada vez.
Verifique o script de inicialização e o tamanho da instalação:
test -x /opt/pzserver/start-server.sh
grep -nE -- '-Xm[sx]' /opt/pzserver/start-server.sh
du -sh /opt/pzserver
Se você vir outros tutoriais ainda exigindo baixar o Build 41 ou adicionar o parâmetro beta Unstable para o Build 42, verifique primeiro a data de publicação. O Build 42.20 já entrou na branch estável padrão, e copiar parâmetros de branches antigas causará incompatibilidade de versão entre cliente e servidor.
O heap Java padrão no script de inicialização pode não ser adequado ao seu VPS. A seguir, usa-se uma máquina com 8 GB de memória como exemplo, definindo o heap inicial em 2 GB e o máximo em 6 GB:
cp /opt/pzserver/start-server.sh /opt/pzserver/start-server.sh.stock
sed -Ei 's/-Xms[0-9]+[gGmM]/-Xms2g/; s/-Xmx[0-9]+[gGmM]/-Xmx6g/' \
/opt/pzserver/start-server.sh
grep -nE -- '-Xm[sx]' /opt/pzserver/start-server.sh
A saída final deve conter -Xms2g e -Xmx6g. Não defina -Xmx com toda a memória do VPS; o Ubuntu, o cache de arquivos, o SteamCMD e a compactação de backup ainda precisam de espaço. Um VPS de 10–12 GB pode começar em -Xms2g -Xmx8g, um VPS de 16 GB pode começar em -Xms4g -Xmx12g, e depois ajustar conforme os picos reais.
As atualizações do SteamCMD podem sobrescrever start-server.sh, então verifique novamente os parâmetros do heap após cada atualização. O script de atualização posterior os redefinirá e validará automaticamente.
A primeira execução deve ser concluída em um terminal interativo, porque o servidor pedirá para criar uma senha de conta admin:
cd /opt/pzserver
./start-server.sh -servername survival
Digite uma senha forte usada apenas para o administrador do Project Zomboid quando solicitado. Não a reutilize com SSH, Steam ou outros sites. Aguarde o log mostrar:
*** SERVER STARTED ****
Depois digite no console do servidor:
quit
Aguarde o processo salvar o mundo e sair normalmente. Não feche o SSH diretamente nem envie um sinal de encerramento forçado. A primeira execução gera a configuração, o banco de dados, os logs e os diretórios do mundo em /home/pz/Zomboid.
Saia da conta de serviço:
exit
Abra a configuração principal:
sudo -u pz nano /home/pz/Zomboid/Server/survival.ini
Encontre e ajuste os itens a seguir no arquivo existente; não sobrescreva o arquivo gerado automaticamente pelo Build 42 com uma configuração completa de versão antiga:
Public=true
PublicName=My Project Zomboid Server
PublicDescription=Private Build 42 survival server
Password=REPLACE_WITH_PLAYER_PASSWORD
DefaultPort=16261
UDPPort=16262
MaxPlayers=8
PauseEmpty=true
Open=true
AutoCreateUserInWhiteList=false
DoLuaChecksum=true
SteamVAC=true
RCONPassword=
Essas configurações proporcionam: lista de servidores pública, limite de 8 jogadores, pausa quando vazio, criação de conta no primeiro login, verificação Lua e Steam VAC. Mantenha RCONPassword vazio; este artigo não habilita a porta de controle remoto.
Se você quiser uma lista de permissões estrita, defina Open=false, e então faça o administrador criar contas de jogador ou adicioná-las à lista de permissões. Não pense que definir apenas uma senha pública do servidor significa que há lista de permissões; as duas controlam camadas diferentes.
Gere uma senha de jogador independente:
openssl rand -base64 24
Grave o resultado em Password. O arquivo de configuração pertence ao usuário pz:
sudo chown pz:pz /home/pz/Zomboid/Server/survival.ini
sudo chmod 600 /home/pz/Zomboid/Server/survival.ini
As regras do mundo do Build 42 ficam em:
/home/pz/Zomboid/Server/survival_SandboxVars.lua
Faça primeiro backup do arquivo gerado automaticamente:
sudo -u pz cp /home/pz/Zomboid/Server/survival_SandboxVars.lua \
/home/pz/Zomboid/Server/survival_SandboxVars.lua.initial
sudo -u pz nano /home/pz/Zomboid/Server/survival_SandboxVars.lua
Os campos do sandbox mudam com as atualizações de versão, então não é recomendado copiar um arquivo Lua inteiro de um tutorial antigo do Build 41. O método mais seguro é criar um modelo na interface de configuração Host de um cliente da mesma versão, depois comparar o *_SandboxVars.lua gerado e migrar apenas os campos que você entende.
Faça backup do mundo antes de modificar a quantidade de zumbis, o loot, os veículos, a infecção ou as regras de respawn. Algumas regras só têm efeito completo em áreas novas ou mundos novos; não trate "o arquivo foi salvo com sucesso" como prova de que o save migrou sem perdas.
Crie a unit:
sudo nano /etc/systemd/system/project-zomboid.service
Escreva:
[Unit]
Description=Project Zomboid Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=pz
Group=pz
WorkingDirectory=/opt/pzserver
ExecStart=/opt/pzserver/start-server.sh -servername survival
Restart=on-failure
RestartSec=15
KillSignal=SIGTERM
TimeoutStopSec=180
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
Carregue, inicie e verifique o status:
sudo systemctl daemon-reload
sudo systemctl enable --now project-zomboid
sudo systemctl status project-zomboid --no-pager
sudo journalctl -u project-zomboid -n 200 --no-pager
O log deve mostrar *** SERVER STARTED **** e a informação de que o Steam está habilitado. A primeira inicialização em primeiro plano já criou o administrador, então o systemd não ficará travado no prompt de senha.
Após parar o serviço, aguarde o processo Java salvar e sair:
sudo systemctl stop project-zomboid
sudo systemctl status project-zomboid --no-pager
Se após 180 segundos ele ainda não tiver saído, verifique primeiro os logs e o espaço em disco; não use kill -9 imediatamente. O encerramento forçado pode corromper chunks ou dados de jogador que estão sendo gravados.
Mantenha a sessão SSH atual aberta, libere primeiro o SSH e depois abra as duas portas do jogo:
sudo ufw allow OpenSSH
sudo ufw allow 16261/udp
sudo ufw allow 16262/udp
sudo ufw status numbered
sudo ufw enable
O grupo de segurança do provedor de nuvem também deve adicionar as mesmas regras UDP. Verifique a escuta do serviço:
sudo ss -lunp | grep -E ':16261|:16262'
Não abra 16261–16300 para todos os protocolos por conveniência, nem copie as regras antigas de "uma porta TCP por jogador". A resposta de suporte oficial atual define 16261 como conexão principal/Steam Relay e 16262 como conexão direta.
Se você usar pz.example.com, crie um registro A apontando para o IPv4 do VPS. Um proxy HTTP normal do Cloudflare com nuvem laranja não consegue encaminhar UDP de jogos; configure como somente DNS, ou faça os jogadores se conectarem diretamente ao IP público.
No menu principal do Project Zomboid, selecione Join e adicione um favorito:
IP: 203.0.113.20
Port: 16261
Server Password: 你在 survival.ini 设置的 Password
Account Username: 玩家自己的服务器用户名
Account Password: 玩家自己的服务器账号密码
Ao testar pela internet pública, substitua o IP de exemplo pelo endereço real do VPS. A senha do servidor e a senha da conta de jogador não são o mesmo campo; os jogadores devem usar nomes de usuário e senhas independentes, e não devem compartilhar a conta de administrador.
Quando a conexão falhar, verifique ambos:
sudo systemctl is-active project-zomboid
sudo journalctl -u project-zomboid -n 250 --no-pager
sudo ss -lunp | grep -E ':16261|:16262'
sudo ufw status numbered
A conta admin criada na primeira inicialização serve apenas para gerenciamento, não para o jogo diário. Depois de fazer login com admin no cliente, você pode gerenciar jogadores e o servidor no painel de administração do jogo.
Quando precisar dar direitos de administrador a outro jogador, execute o comando de administrador do jogo:
/setaccesslevel "username" admin
Revogar direitos:
/setaccesslevel "username" none
Ao habilitar uma lista de permissões estrita, mantenha Open=false, e crie ou permita contas específicas pela interface de administração. Verifique regularmente:
sudo ls -lh /home/pz/Zomboid/db
sudo ls -lh /home/pz/Zomboid/Server
O banco de dados de contas de jogador e permissões também faz parte do escopo do backup. Não faça backup apenas do diretório do mapa, caso contrário a lista de permissões, os administradores ou as informações de login dos jogadores podem ser perdidos após a restauração.
Este artigo usa o nome de configuração survival; os dados principais geralmente ficam em:
/home/pz/Zomboid/Server/
/home/pz/Zomboid/Saves/Multiplayer/survival/
/home/pz/Zomboid/db/
/home/pz/Zomboid/Logs/
Confirme com arquivos reais; não dependa apenas dos caminhos do tutorial:
sudo -u pz find /home/pz/Zomboid -maxdepth 3 -type f | sort | head -n 120
sudo du -sh /home/pz/Zomboid
/opt/pzserver são arquivos de programa que podem ser baixados novamente pelo SteamCMD; /home/pz/Zomboid são os dados do mundo, configuração, banco de dados de contas e logs que precisam ser protegidos.
Durante uma janela de manutenção, pare o servidor e empacote todo o diretório de dados:
sudo systemctl stop project-zomboid
sudo tar -C /home/pz -czf \
"/var/backups/project-zomboid/pz-data-$(date -u +%Y%m%dT%H%M%SZ).tar.gz" \
Zomboid
sudo systemctl start project-zomboid
sudo systemctl is-active project-zomboid
Verifique o arquivo:
sudo ls -lh /var/backups/project-zomboid
sudo tar -tzf /var/backups/project-zomboid/pz-data-YYYYMMDDTHHMMSSZ.tar.gz | head -n 100
Substitua o nome de arquivo de exemplo pelo arquivo real. Sincronize pelo menos uma cópia para outra máquina ou armazenamento de objetos, e defina um período de retenção. Para um plano completo fora do local, consulte o guia de backup e simulação de restauração de VPS.
Antes de restaurar, pare o serviço e preserve o diretório atual:
sudo systemctl stop project-zomboid
sudo tar -tzf /var/backups/project-zomboid/pz-data-YYYYMMDDTHHMMSSZ.tar.gz | head -n 100
sudo mv /home/pz/Zomboid \
"/home/pz/Zomboid.before-restore-$(date -u +%Y%m%dT%H%M%SZ)"
sudo tar -C /home/pz -xzf \
/var/backups/project-zomboid/pz-data-YYYYMMDDTHHMMSSZ.tar.gz
sudo chown -R pz:pz /home/pz/Zomboid
sudo systemctl start project-zomboid
Verifique o serviço, o mapa e as contas:
sudo systemctl status project-zomboid --no-pager
sudo journalctl -u project-zomboid -n 250 --no-pager
sudo du -sh /home/pz/Zomboid/Saves/Multiplayer/survival
Faça login com um jogador de teste e confirme que pontos de spawn, personagens, veículos, contêineres, lista de permissões e permissões de administrador estão todos normais. Mantenha Zomboid.before-restore-* antes da aceitação; não exclua imediatamente a única cópia de reversão.
Faça primeiro backup do mundo, pare o serviço e depois atualize o App ID 380870. Crie o script:
sudo nano /usr/local/sbin/update-project-zomboid-server
Escreva:
#!/usr/bin/env bash
set -euo pipefail
backup_dir=/var/backups/project-zomboid
stamp=$(date -u +%Y%m%dT%H%M%SZ)
was_active=0
install -d -m 750 -o root -g pz "$backup_dir"
if systemctl is-active --quiet project-zomboid; then
was_active=1
systemctl stop project-zomboid
fi
restart_service() {
if [ "$was_active" -eq 1 ]; then
systemctl start project-zomboid
fi
}
trap restart_service EXIT
tar -C /home/pz -czf \
"$backup_dir/pz-before-update-$stamp.tar.gz" \
Zomboid
sudo -u pz /opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/pzserver \
+login anonymous \
+app_update 380870 \
+quit
sed -Ei 's/-Xms[0-9]+[gGmM]/-Xms2g/; s/-Xmx[0-9]+[gGmM]/-Xmx6g/' \
/opt/pzserver/start-server.sh
grep -q -- '-Xms2g' /opt/pzserver/start-server.sh
grep -q -- '-Xmx6g' /opt/pzserver/start-server.sh
chown pz:pz /opt/pzserver/start-server.sh
Defina as permissões e teste manualmente:
sudo chown root:root /usr/local/sbin/update-project-zomboid-server
sudo chmod 750 /usr/local/sbin/update-project-zomboid-server
sudo /usr/local/sbin/update-project-zomboid-server
sudo systemctl is-active project-zomboid
sudo journalctl -u project-zomboid -n 200 --no-pager
O script não usa validate, reduzindo o tempo de atualização diária; valide manualmente quando forem encontrados arquivos corrompidos. Se o SteamCMD ou a validação dos parâmetros do heap falhar, o script sai com status diferente de zero e tenta restaurar o estado de execução anterior à atualização.
As atualizações do Project Zomboid podem alterar a compatibilidade do mundo ou dos mods. Um servidor vanilla privado pode ser atualizado automaticamente em uma janela fixa de baixa carga; servidores públicos e com mods são mais adequados para execução manual após notificar os jogadores.
Crie o service:
sudo nano /etc/systemd/system/project-zomboid-update.service
[Unit]
Description=Update Project Zomboid Dedicated Server
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/update-project-zomboid-server
Crie o timer:
sudo nano /etc/systemd/system/project-zomboid-update.timer
[Unit]
Description=Project Zomboid daily maintenance window
[Timer]
OnCalendar=*-*-* 05:50:00
RandomizedDelaySec=10m
Persistent=true
[Install]
WantedBy=timers.target
Carregue e verifique o agendamento:
sudo systemctl daemon-reload
sudo systemctl enable --now project-zomboid-update.timer
systemctl list-timers project-zomboid-update.timer
Não force uma atualização enquanto os jogadores estiverem online, os veículos estiverem em alta velocidade ou o mundo estiver sendo salvo. Grandes trocas de versão estável devem desativar o timer e ser testadas primeiro em uma cópia de backup.
Não faça testes diretamente no único save do Build 41. O processo seguro é:
- Pare o servidor antigo e faça backup de todo o diretório
Zomboid. - Salve a versão do servidor antigo, a configuração e a lista de mods.
- Copie o save em um diretório separado e teste a conversão com a versão estável atual.
- Desative temporariamente todos os mods e confirme que o mundo vanilla pode carregar.
- Verifique personagens, veículos, contêineres, chunks do mapa e contas de administrador.
- Somente após a aceitação completa o servidor de produção deve mudar.
Durante o desenvolvimento do Build 42, a equipe oficial alertou repetidamente que as atualizações de versão podem quebrar saves antigos, e recomendou saves novos, reprodução sem mods e backup antes de atualizar. Mesmo que o Build 42 já esteja na versão estável, isso não significa que todos os mods do Build 41 ou saves antigos sejam necessariamente compatíveis.
Se você quiser manter um mundo de longo prazo, a capacidade de backup e restauração é mais importante do que "se é possível converter com sucesso de uma vez". Você pode consultar o processo de backup do mundo do servidor dedicado de Valheim para estabelecer os mesmos hábitos de parar o serviço, arquivar, copiar para fora da máquina e aceitar a restauração.
Deixe primeiro o servidor vanilla funcionar de forma estável e depois adicione mods. A equipe oficial emitiu em 2026 um aviso de segurança relacionado a conteúdo malicioso da Workshop e continua corrigindo problemas de segurança do Build 41/42; portanto, a quantidade de inscrições na Workshop não pode ser considerada uma auditoria de segurança.
Antes de adicionar mods:
- Verifique se o mod declara explicitamente suporte à versão estável atual do Build 42.
- Registre a ordem e as versões de
WorkshopItemseMods. - Verifique o autor, o histórico de atualizações, os comentários e os requisitos de download externo.
- Não execute scripts ou binários de origem desconhecida exigidos pelos mods.
- Teste em uma cópia de backup; não contamine diretamente o mundo de produção.
- Após atualizar, reproduza primeiro as falhas com um mundo sem mods e depois determine se é um problema do jogo ou do mod.
Não deixe um timer não assistido cruzar automaticamente grandes atualizações de versão. A janela de atualização de um servidor com mods deve incluir backup, verificação de compatibilidade de mods e tempo de reversão.
Registre dados durante os picos de jogadores, ao dirigir por novos chunks e ao salvar o mundo:
free -h
df -h /opt/pzserver /home/pz/Zomboid /var/backups/project-zomboid
uptime
ps -eo pid,%cpu,%mem,rss,etime,cmd | grep '[z]ombie.network.GameServer'
sudo journalctl -u project-zomboid --since "30 minutes ago" --no-pager
Preste atenção a:
- Saturação de núcleo único ao dirigir para novos chunks: mude para um nó com desempenho de núcleo único mais forte e menor latência de disco.
- Memória subindo rapidamente quando os jogadores se dispersam: reduza o número de jogadores, o escopo do mapa ou a quantidade de mods, e depois avalie ampliar.
- Travamentos ou reversão ao salvar: verifique a latência NVMe, o espaço livre e os registros de encerramento forçado.
- Latência evidente no pico da noite: verifique perda de pacotes UDP, rotas de rede do data center e sobrevenda de vizinhos.
- Logs ou backups enchendo a partição raiz: defina um período de retenção e mova as cópias fora do local para fora da máquina local.
Não mascare vazamentos de memória de mods aumentando sem fim -Xmx. O hotfix oficial 42.20.1 inclui correções de descarregamento de chunks multijogador e uso de memória; manter-se na versão estável segura atual é, por si só, parte da manutenção de desempenho.
Isso significa que você pulou a primeira inicialização em primeiro plano. Pare o systemd e execute em primeiro plano como o usuário pz:
sudo systemctl stop project-zomboid
sudo -iu pz
cd /opt/pzserver
./start-server.sh -servername survival
Defina a senha de admin, aguarde SERVER STARTED, digite quit, saia da conta e depois inicie o systemd.
Verifique o manifesto de instalação do servidor e atualize a branch estável:
grep -n 'buildid' /opt/pzserver/steamapps/appmanifest_380870.acf
sudo /usr/local/sbin/update-project-zomboid-server
sudo journalctl -u project-zomboid -n 200 --no-pager
Confirme que a seleção de Betas do cliente é NONE. Não deixe o cliente usar Build 41 ou Unstable antigo enquanto o servidor usa a versão estável atual; também não resolva a incompatibilidade de versão excluindo o mundo.
Verifique em ordem a configuração, a escuta e o grupo de segurança:
sudo grep -E '^(Public|PublicName|DefaultPort|UDPPort)=' \
/home/pz/Zomboid/Server/survival.ini
sudo ss -lunp | grep -E ':16261|:16262'
sudo ufw status numbered
sudo journalctl -u project-zomboid -n 250 --no-pager
Entre diretamente usando o IP público e 16261 para descartar problemas de atualização da lista. Confirme que tanto o UFW quanto o grupo de segurança da nuvem permitem UDP 16261/16262, e que o domínio não tem um proxy HTTP normal habilitado.
Isso geralmente é um problema de UDP 16261/16262, grupo de segurança da nuvem, versão ou status do Steam. Primeiro teste com um cliente sem mods, depois verifique os logs em busca de erros de Steam, RakNet e conexão:
sudo journalctl -u project-zomboid -n 300 --no-pager | \
grep -iE 'steam|raknet|connect|error|failed'
Não abra todas as portas 50000–65000 sem fundamento. A resposta de suporte oficial indica que o jogo em si só precisa de 16261 e 16262; requisitos adicionais de portas altas provavelmente vêm de anomalias de configuração do provedor de hospedagem, NAT ou firewall.
O SteamCMD pode sobrescrever o script de inicialização. Verifique os parâmetros do heap:
grep -nE -- '-Xm[sx]' /opt/pzserver/start-server.sh
free -h
sudo journalctl -u project-zomboid -n 250 --no-pager | grep -iE 'memory|heap|oom|killed'
Redefina -Xms/-Xmx adequado ao VPS e confirme que as duas validações grep -q do script de atualização passam. Não defina o heap máximo com toda a memória física.
Primeiro restaure o backup anterior aos mods, esvazie temporariamente WorkshopItems e Mods na configuração, e reproduza com o servidor vanilla:
sudo systemctl stop project-zomboid
sudo cp /home/pz/Zomboid/Server/survival.ini \
/home/pz/Zomboid/Server/survival.ini.failed-mods
sudo -u pz nano /home/pz/Zomboid/Server/survival.ini
sudo systemctl start project-zomboid
sudo journalctl -u project-zomboid -n 300 --no-pager
Depois de confirmar que o vanilla está normal, restaure os mods em lotes. Habilitar dezenas de mods de uma vez torna impossível localizar conflitos, conteúdo malicioso e erros de versão.
- O SteamCMD instalou o App ID 380870 sem adicionar parâmetros beta Unstable antigos.
- Tanto o cliente quanto o servidor usam a branch estável atual do Build 42.
- O serviço é executado como o usuário dedicado
pz, não como root. - A primeira inicialização em primeiro plano criou o admin, e o systemd não aguardará entrada interativa.
-
systemctl is-active project-zomboidretornaactive. - O log mostra
*** SERVER STARTED ****e a informação de Steam habilitado. - UDP 16261/16262 estão liberados tanto no UFW quanto no grupo de segurança da nuvem.
- Não há RCON sem uso nem grandes faixas de portas altas abertas.
-
survival.inie o Lua do sandbox vêm de arquivos gerados automaticamente pela versão atual. - Os parâmetros do heap Java são adequados ao VPS e serão revalidados após as atualizações.
- A conta de admin não é usada para o jogo diário, e o servidor público tem uma política de lista de permissões configurada.
- O mundo, a configuração, o banco de dados de contas e os logs são copiados juntos.
- Uma restauração foi concluída e personagens, veículos, contêineres e permissões foram verificados.
- Mods compatíveis com o Build 42 são adicionados somente após a aceitação do servidor vanilla.
- Antes de grandes atualizações, o timer é pausado, os jogadores são notificados e uma cópia de reversão é mantida.
Executar o Project Zomboid Build 42 em um VPS não consiste em copiar um único comando do SteamCMD, mas em manter o cliente e o App ID 380870 na mesma branch estável, abrir corretamente UDP 16261/16262, concluir primeiro a inicialização interativa do administrador e depois entregá-lo ao systemd para execução persistente.
O que realmente precisa ser protegido é o mundo, a configuração, o banco de dados de jogadores e as permissões em /home/pz/Zomboid. Parar o servidor e fazer backup antes de cada atualização, revalidar os parâmetros do heap Java e reproduzir primeiro os problemas com um mundo sem mods pode reduzir significativamente o risco de reversão causado pela migração de versão, pelo conteúdo da Workshop e pelo encerramento forçado.