Tutoriales de VPS
Montar un servidor dedicado de Project Zomboid en un VPS (2026): Build 42, puertos, configuración, copias de seguridad y actualizaciones
Crea desde cero un servidor dedicado de Project Zomboid Build 42 en un VPS Ubuntu con SteamCMD, cubriendo App ID 380870, UDP 16261/16262, configuración, administradores, lista blanca, copia y restauración del mundo y actualizaciones automáticas.

Si quieres mantener a largo plazo un mundo de apocalipsis zombi con amigos y no quieres que el anfitrión tenga que estar en línea cada vez que se continúa la partida, un servidor dedicado de Project Zomboid es la opción más estable. El mundo, las cuentas de personaje, los parámetros del sandbox, la lista blanca, los mods y las copias de seguridad se guardan en el VPS, y los compañeros pueden entrar según su propio horario.
Este artículo usa Ubuntu 24.04 LTS, SteamCMD, la rama estable actual de Build 42 y systemd como ejemplo para completar desde cero la instalación del servidor, UDP 16261/16262, firewall, configuración del servidor, administradores, lista blanca, copia de seguridad del mundo, restauración y actualizaciones automáticas. El texto principal no usa imágenes de juego de origen desconocido y no aplica directamente tutoriales antiguos de Build 41 o de las primeras versiones Unstable de Build 42 a la versión estable actual.
A agosto de 2026, Project Zomboid ha publicado oficialmente Build 42.20 en la rama estable de Steam y ha lanzado el hotfix 42.20.1. Por lo tanto, un servidor nuevo puede usar la rama estable predeterminada de Steam, y no es necesario añadir -beta unstable, b42multiplayer ni parámetros de Build 41 de tutoriales antiguos.
Este punto es muy importante:
- El cliente del juego y el servidor dedicado deben estar en versiones compatibles.
NONEen las propiedades de Steam significa la rama estable actual.- Antes de actualizar de Build 41 a Build 42 hay que hacer copia de seguridad; no asumas que los mundos, mods y configuraciones antiguos migrarán sin pérdidas.
- Las actualizaciones de seguridad oficiales y las correcciones multijugador cambian los archivos del servidor, por lo que mantener las actualizaciones desactivadas durante mucho tiempo no es seguro.
Todos los comandos de este artículo apuntan a la rama estable actual. Cuando el equipo oficial publique una nueva versión estable en el futuro, primero lee las notas del parche, haz copia de seguridad del mundo y luego actualiza durante una ventana de mantenimiento.
Project Zomboid no ha publicado un conjunto de especificaciones mínimas de VPS que garantice cualquier mapa, cantidad de mods y número de jugadores. Los jugadores que exploran por separado, conducen para cargar rápidamente nuevos fragmentos, grandes cantidades de zombis, mods de mapas y contenido de Workshop aumentan la presión sobre CPU, memoria, disco y red. Los siguientes son puntos de partida prácticos para comprar y hacer pruebas de carga, no promesas oficiales de rendimiento:
| Escala de uso | Punto de partida sugerido del VPS | Disco | Escenarios adecuados |
|---|---|---|---|
| Servidor vanilla de 2–4 jugadores | 4 vCPU de alto rendimiento, 6–8 GB de memoria | 50 GB NVMe | Lista blanca privada, partida de supervivencia |
| Servidor a largo plazo de 5–10 jugadores | 4–6 vCPU de alto rendimiento, 10–12 GB de memoria | 80 GB NVMe | Exploración multijugador, vehículos, mapa a largo plazo |
| Más de 10 jugadores o servidor con mods | 6–8 núcleos, 16 GB+ de memoria | 120 GB+ NVMe | Mods de mapas, mayor cantidad de zombis, servidor público |
Prefiere nodos con rendimiento estable de un solo núcleo, baja latencia NVMe y buena calidad UDP. No mires solo el número de vCPU; un 8 núcleos con sobreventa grave puede ser peor que un 4 núcleos estable. El centro de datos debe estar cerca de los jugadores principales, y confirma que el proveedor permite servidores de juegos, ofrece tráfico suficiente y tiene una política clara de manejo de DDoS. Antes de comprar, puedes consultar Configuración de VPS para servidores de juegos y selección de líneas de red.
| Método | Ventajas | Coste | Para quién |
|---|---|---|---|
| SteamCMD + systemd | Rutas transparentes, bajo consumo de recursos, registros directos | Gestión principalmente por SSH | Un solo VPS, un mundo |
| Host en el juego | Configuración sencilla, adecuado para cooperativo temporal | El anfitrión debe estar en línea, no es un servicio real de 24 horas | Partida temporal de un equipo pequeño |
| Pterodactyl | Panel web, usuarios, cuotas y múltiples instancias | Mantenimiento adicional de Panel, Wings, base de datos | Varios mundos u operación multiusuario |
Este artículo usa SteamCMD + systemd. Si planeas alojar Minecraft, Valheim, CS2 y Project Zomboid en la misma máquina, considera la guía de despliegue del panel de servidores de juegos Pterodactyl.
El servidor dedicado regular de Steam actual debe desplegarse primero con el conjunto mínimo de puertos:
| Puerto | Protocolo | Uso | Público |
|---|---|---|---|
| 16261 | UDP | Conexión principal y Steam Relay | Sí |
| 16262 | UDP | Conexión directa | Sí |
| 22 | TCP | Gestión SSH | Solo IP del administrador, o usa el puerto SSH real |
| 27015 | TCP | RCON, solo necesario si se habilita | No abierto por defecto |
El personal de soporte oficial de Project Zomboid indicó claramente en la resolución de problemas de puertos que el juego actual solo necesita abrir UDP 16261 y 16262; el contenido en línea que exige una serie de puertos TCP por jugador proviene en su mayoría de versiones antiguas. Este artículo no habilita RCON, por lo que no se abre 27015.
El nombre de configuración del servidor usa survival. Determina los nombres del archivo de configuración y del directorio del mundo, por ejemplo:
survival.ini
survival_SandboxVars.lua
Zomboid/Saves/Multiplayer/survival
Usa solo letras minúsculas, números y guiones en el nombre de configuración para evitar que espacios y caracteres especiales causen confusión en scripts, copias de seguridad o nombres de servicio.
Primero actualiza el sistema e instala los componentes básicos que requiere SteamCMD:
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl ca-certificates tar lib32gcc-s1 ufw
Crea una cuenta de servicio que no pueda iniciar sesión directamente con contraseña y un directorio fijo:
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
No ejecutes el servicio de juego Java como root. Un usuario dedicado limita los permisos del proceso y también evita archivos propiedad de root tras una actualización de SteamCMD, lo que haría fallar la siguiente actualización.
Cambia al usuario pz y descarga SteamCMD oficial de Linux de 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
Confirma que existe el archivo de entrada:
test -x /opt/steamcmd/steamcmd.sh
El App ID de Steam de Project Zomboid Dedicated Server es 380870. El inicio de sesión anónimo es suficiente para descargar el servidor:
/opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/pzserver \
+login anonymous \
+app_update 380870 validate \
+quit
El comando no tiene el parámetro -beta, por lo que obtiene la rama estable actual. Usa validate para la primera instalación o para reparar archivos dañados; las actualizaciones diarias normalmente no necesitan revalidar todos los archivos cada vez.
Comprueba el script de inicio y el tamaño de la instalación:
test -x /opt/pzserver/start-server.sh
grep -nE -- '-Xm[sx]' /opt/pzserver/start-server.sh
du -sh /opt/pzserver
Si ves otros tutoriales que todavía exigen descargar Build 41 o añadir el parámetro beta Unstable para Build 42, comprueba primero la fecha de publicación. Build 42.20 ya está en la rama estable predeterminada, y copiar parámetros de ramas antiguas provocará una discrepancia de versión entre cliente y servidor.
El heap de Java predeterminado en el script de inicio puede no ser adecuado para tu VPS. A continuación se usa una máquina de 8 GB de memoria como ejemplo, estableciendo el heap inicial en 2 GB y el máximo en 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
La salida final debe contener -Xms2g y -Xmx6g. No establezcas -Xmx con toda la memoria del VPS; Ubuntu, la caché de archivos, SteamCMD y la compresión de copias de seguridad todavía necesitan espacio. Un VPS de 10–12 GB puede empezar desde -Xms2g -Xmx8g, un VPS de 16 GB puede empezar desde -Xms4g -Xmx12g, y luego ajustar según los picos reales.
Las actualizaciones de SteamCMD pueden sobrescribir start-server.sh, así que vuelve a comprobar los parámetros del heap después de cada actualización. El script de actualización posterior los restablecerá y verificará automáticamente.
La primera ejecución debe completarse en una terminal interactiva, porque el servidor pedirá crear una contraseña de cuenta admin:
cd /opt/pzserver
./start-server.sh -servername survival
Introduce una contraseña fuerte usada solo para el administrador de Project Zomboid cuando se solicite. No la reutilices con SSH, Steam u otros sitios web. Espera a que el registro muestre:
*** SERVER STARTED ****
Luego introduce en la consola del servidor:
quit
Espera a que el proceso guarde el mundo y salga normalmente. No cierres SSH directamente ni envíes una señal de terminación forzada. La primera ejecución genera la configuración, la base de datos, los registros y los directorios del mundo bajo /home/pz/Zomboid.
Sal de la cuenta de servicio:
exit
Abre la configuración principal:
sudo -u pz nano /home/pz/Zomboid/Server/survival.ini
Busca y ajusta los siguientes elementos en el archivo existente; no sobrescribas el archivo generado automáticamente por Build 42 con una configuración completa de una versión antigua:
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=
Estos ajustes logran: lista de servidores pública, límite de 8 jugadores, pausa cuando está vacío, creación de cuenta en el primer inicio de sesión, verificación Lua y Steam VAC. Mantén RCONPassword vacío; este artículo no habilita el puerto de control remoto.
Si quieres una lista blanca estricta, establece Open=false, y luego haz que el administrador cree cuentas de jugador o las añada a la lista blanca. No creas que establecer solo una contraseña pública del servidor significa que hay lista blanca; ambas controlan capas diferentes.
Genera una contraseña de jugador independiente:
openssl rand -base64 24
Escribe el resultado en Password. El archivo de configuración pertenece al usuario pz:
sudo chown pz:pz /home/pz/Zomboid/Server/survival.ini
sudo chmod 600 /home/pz/Zomboid/Server/survival.ini
Las reglas del mundo de Build 42 se encuentran en:
/home/pz/Zomboid/Server/survival_SandboxVars.lua
Haz primero copia de seguridad del archivo generado automáticamente:
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
Los campos del sandbox cambian con las actualizaciones de versión, por lo que no se recomienda copiar un archivo Lua completo de un tutorial antiguo de Build 41. El método más seguro es crear una plantilla en la interfaz de configuración Host de un cliente de la misma versión, luego comparar el *_SandboxVars.lua generado y migrar solo los campos que entiendas.
Haz copia de seguridad del mundo antes de modificar la cantidad de zombis, el botín, los vehículos, la infección o las reglas de reaparición. Algunas reglas solo surten efecto completo en áreas nuevas o mundos nuevos; no tomes "el archivo se guardó correctamente" como prueba de que la partida ha migrado sin pérdidas.
Crea la unit:
sudo nano /etc/systemd/system/project-zomboid.service
Escribe:
[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
Carga, inicia y comprueba el estado:
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
El registro debe mostrar *** SERVER STARTED **** y la información de que Steam está habilitado. La primera inicialización en primer plano ya creó el administrador, por lo que systemd no se quedará atascado en la solicitud de contraseña.
Después de detener el servicio, espera a que el proceso Java guarde y salga:
sudo systemctl stop project-zomboid
sudo systemctl status project-zomboid --no-pager
Si después de 180 segundos aún no ha salido, revisa primero los registros y el espacio en disco; no uses kill -9 de inmediato. La terminación forzada puede dañar fragmentos o datos de jugador que se están escribiendo.
Mantén abierta la sesión SSH actual, permite primero SSH y luego abre los dos puertos del juego:
sudo ufw allow OpenSSH
sudo ufw allow 16261/udp
sudo ufw allow 16262/udp
sudo ufw status numbered
sudo ufw enable
El grupo de seguridad del proveedor de nube también debe añadir las mismas reglas UDP. Comprueba la escucha del servicio:
sudo ss -lunp | grep -E ':16261|:16262'
No abras 16261–16300 para todos los protocolos por comodidad, ni copies las reglas antiguas de "un puerto TCP por jugador". La respuesta de soporte oficial actual define 16261 como conexión principal/Steam Relay y 16262 como conexión directa.
Si usas pz.example.com, crea un registro A que apunte a la IPv4 del VPS. Un proxy HTTP normal de Cloudflare con nube naranja no puede reenviar UDP de juegos; configúralo como solo DNS, o haz que los jugadores se conecten directamente a la IP pública.
En el menú principal de Project Zomboid, selecciona Join y añade un favorito:
IP: 203.0.113.20
Port: 16261
Server Password: 你在 survival.ini 设置的 Password
Account Username: 玩家自己的服务器用户名
Account Password: 玩家自己的服务器账号密码
Al probar por internet pública, sustituye la IP de ejemplo por la dirección real del VPS. La contraseña del servidor y la contraseña de la cuenta de jugador no son el mismo campo; los jugadores deben usar nombres de usuario y contraseñas independientes, y no deben compartir la cuenta de administrador.
Cuando la conexión falla, revisa 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
La cuenta admin creada en el primer arranque es solo para gestión, no para juego diario. Después de iniciar sesión con admin en el cliente, puedes gestionar jugadores y el servidor en el panel de administración del juego.
Cuando necesites dar derechos de administrador a otro jugador, ejecuta el comando de administrador del juego:
/setaccesslevel "username" admin
Revocar derechos:
/setaccesslevel "username" none
Al habilitar una lista blanca estricta, mantén Open=false, y crea o permite cuentas específicas a través de la interfaz de administración. Comprueba periódicamente:
sudo ls -lh /home/pz/Zomboid/db
sudo ls -lh /home/pz/Zomboid/Server
La base de datos de cuentas de jugador y permisos también forma parte del alcance de la copia de seguridad. No hagas copia de seguridad solo del directorio del mapa, de lo contrario la lista blanca, los administradores o la información de inicio de sesión de los jugadores podrían perderse tras la restauración.
Este artículo usa el nombre de configuración survival; los datos clave suelen estar en:
/home/pz/Zomboid/Server/
/home/pz/Zomboid/Saves/Multiplayer/survival/
/home/pz/Zomboid/db/
/home/pz/Zomboid/Logs/
Confirma con archivos reales; no dependas solo de las rutas del tutorial:
sudo -u pz find /home/pz/Zomboid -maxdepth 3 -type f | sort | head -n 120
sudo du -sh /home/pz/Zomboid
/opt/pzserver son archivos de programa que SteamCMD puede volver a descargar; /home/pz/Zomboid son los datos del mundo, configuración, base de datos de cuentas y registros que deben protegerse.
Durante una ventana de mantenimiento, detén el servidor y empaqueta todo el directorio de datos:
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
Comprueba el archivo:
sudo ls -lh /var/backups/project-zomboid
sudo tar -tzf /var/backups/project-zomboid/pz-data-YYYYMMDDTHHMMSSZ.tar.gz | head -n 100
Sustituye el nombre de archivo de ejemplo por el archivo real. Sincroniza al menos una copia a otra máquina o almacenamiento de objetos, y establece un período de retención. Para un plan completo fuera del sitio, consulta la guía de copias de seguridad y simulacros de restauración de VPS.
Antes de restaurar, detén el servicio y conserva el directorio actual:
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
Verifica el servicio, el mapa y las cuentas:
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
Inicia sesión con un jugador de prueba y confirma que los puntos de aparición, personajes, vehículos, contenedores, lista blanca y permisos de administrador funcionan correctamente. Conserva Zomboid.before-restore-* antes de la aceptación; no elimines de inmediato la única copia de reversión.
Haz primero copia de seguridad del mundo, detén el servicio y luego actualiza el App ID 380870. Crea el script:
sudo nano /usr/local/sbin/update-project-zomboid-server
Escribe:
#!/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
Establece permisos y prueba 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
El script no usa validate, lo que reduce el tiempo de actualización diaria; valida manualmente cuando se detecten archivos dañados. Si falla SteamCMD o la validación de parámetros del heap, el script sale con estado distinto de cero e intenta restaurar el estado de ejecución anterior a la actualización.
Las actualizaciones de Project Zomboid pueden cambiar la compatibilidad del mundo o de los mods. Un servidor vanilla privado puede actualizarse automáticamente en una ventana fija de baja carga; los servidores públicos y con mods son más adecuados para ejecución manual tras notificar a los jugadores.
Crea el 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
Crea el 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
Carga y comprueba la programación:
sudo systemctl daemon-reload
sudo systemctl enable --now project-zomboid-update.timer
systemctl list-timers project-zomboid-update.timer
No fuerces una actualización mientras los jugadores están en línea, los vehículos circulan a alta velocidad o el mundo se está guardando. Los cambios grandes de versión estable deben desactivar el timer y probarse primero en una copia de seguridad.
No hagas pruebas directamente sobre la única partida de Build 41. El proceso seguro es:
- Detén el servidor antiguo y haz copia de seguridad de todo el directorio
Zomboid. - Guarda la versión del servidor antiguo, la configuración y la lista de mods.
- Copia la partida en un directorio independiente y prueba la conversión con la versión estable actual.
- Desactiva temporalmente todos los mods y confirma que el mundo vanilla puede cargarse.
- Comprueba personajes, vehículos, contenedores, fragmentos del mapa y cuentas de administrador.
- Solo después de una aceptación completa debe cambiar el servidor de producción.
Durante el desarrollo de Build 42, el equipo oficial advirtió repetidamente que las actualizaciones de versión pueden romper partidas antiguas, y recomendó partidas nuevas, reproducción sin mods y copia de seguridad antes de actualizar. Aunque Build 42 ya está en la versión estable, no significa que todos los mods de Build 41 o las partidas antiguas sean necesariamente compatibles.
Si quieres conservar un mundo a largo plazo, la capacidad de copia y restauración es más importante que "si se puede convertir con éxito de una vez". Puedes consultar el proceso de copia de seguridad del mundo del servidor dedicado de Valheim para establecer los mismos hábitos de detener el servicio, archivar, copiar fuera de la máquina y aceptar la restauración.
Deja primero que el servidor vanilla funcione de forma estable y luego añade mods. El equipo oficial emitió en 2026 un aviso de seguridad relacionado con contenido malicioso de Workshop y sigue parcheando problemas de seguridad de Build 41/42; por lo tanto, el número de suscripciones de Workshop no puede considerarse una auditoría de seguridad.
Antes de añadir mods:
- Comprueba si el mod admite explícitamente la versión estable actual de Build 42.
- Registra el orden y las versiones de
WorkshopItemsyMods. - Revisa el autor, el historial de actualizaciones, los comentarios y los requisitos de descarga externa.
- No ejecutes scripts o binarios de origen desconocido que exijan los mods.
- Prueba en una copia de seguridad; no contamines directamente el mundo de producción.
- Tras actualizar, reproduce primero los fallos con un mundo sin mods y luego determina si es un problema del juego o del mod.
No dejes que un timer desatendido cruce automáticamente actualizaciones importantes de versión. La ventana de actualización de un servidor con mods debe incluir copia de seguridad, comprobación de compatibilidad de mods y tiempo de reversión.
Registra datos durante los picos de jugadores, al conducir por nuevos fragmentos y al guardar el 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
Presta atención a:
- Saturación de un solo núcleo al conducir hacia nuevos fragmentos: cambia a un nodo con mayor rendimiento de un solo núcleo y menor latencia de disco.
- Memoria que sube rápidamente cuando los jugadores se dispersan: reduce el número de jugadores, el alcance del mapa o la cantidad de mods, y luego evalúa ampliar.
- Tirones o reversión al guardar: revisa la latencia NVMe, el espacio libre y los registros de terminación forzada.
- Latencia evidente en horas punta de la noche: revisa la pérdida de paquetes UDP, las líneas de red del centro de datos y la sobreventa de vecinos.
- Registros o copias de seguridad que llenan la partición raíz: establece un período de retención y mueve las copias fuera del sitio fuera de la máquina local.
No ocultes las fugas de memoria de los mods aumentando sin fin -Xmx. El hotfix oficial 42.20.1 incluye correcciones de descarga de fragmentos multijugador y uso de memoria; mantenerse en la versión estable segura actual es en sí mismo parte del mantenimiento del rendimiento.
Esto significa que omitiste la primera inicialización en primer plano. Detén systemd y ejecuta en primer plano como el usuario pz:
sudo systemctl stop project-zomboid
sudo -iu pz
cd /opt/pzserver
./start-server.sh -servername survival
Establece la contraseña de admin, espera SERVER STARTED, introduce quit, sal de la cuenta y luego inicia systemd.
Comprueba el manifiesto de instalación del servidor y actualiza la rama estable:
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
Confirma que la selección de Betas del cliente es NONE. No dejes que el cliente use Build 41 o Unstable antiguo mientras el servidor usa la versión estable actual; tampoco resuelvas la discrepancia de versión eliminando el mundo.
Revisa en orden la configuración, la escucha y el grupo de seguridad:
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
Únete directamente usando la IP pública y 16261 para descartar problemas de actualización de la lista. Confirma que tanto UFW como el grupo de seguridad de la nube permiten UDP 16261/16262, y que el dominio no tiene habilitado un proxy HTTP normal.
Esto suele ser un problema de UDP 16261/16262, grupo de seguridad de la nube, versión o estado de Steam. Primero prueba con un cliente sin mods, luego revisa los registros en busca de errores de Steam, RakNet y conexión:
sudo journalctl -u project-zomboid -n 300 --no-pager | \
grep -iE 'steam|raknet|connect|error|failed'
No abras todos los puertos 50000–65000 sin fundamento. La respuesta de soporte oficial indica que el juego en sí solo necesita 16261 y 16262; los requisitos adicionales de puertos altos probablemente provengan de anomalías de configuración del proveedor de alojamiento, NAT o firewall.
SteamCMD puede sobrescribir el script de inicio. Comprueba los parámetros del 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'
Vuelve a establecer -Xms/-Xmx adecuado para el VPS y confirma que pasan las dos validaciones grep -q del script de actualización. No establezcas el heap máximo con toda la memoria física.
Primero restaura la copia de seguridad anterior a los mods, vacía temporalmente WorkshopItems y Mods en la configuración, y reproduce con el 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
Después de confirmar que vanilla funciona, restaura los mods por lotes. Habilitar decenas de mods a la vez hace imposible localizar conflictos, contenido malicioso y errores de versión.
- SteamCMD instaló el App ID 380870 sin añadir parámetros beta Unstable antiguos.
- Tanto el cliente como el servidor usan la rama estable actual de Build 42.
- El servicio se ejecuta como el usuario dedicado
pz, no como root. - El primer arranque en primer plano ha creado el admin, y systemd no esperará entrada interactiva.
-
systemctl is-active project-zomboiddevuelveactive. - El registro muestra
*** SERVER STARTED ****y la información de Steam habilitado. - UDP 16261/16262 están permitidos tanto en UFW como en el grupo de seguridad de la nube.
- No hay RCON sin usar ni grandes rangos de puertos altos abiertos.
-
survival.iniy el Lua del sandbox provienen de archivos generados automáticamente por la versión actual. - Los parámetros del heap de Java son adecuados para el VPS y se revalidarán tras las actualizaciones.
- La cuenta de admin no se usa para el juego diario, y el servidor público tiene configurada una política de lista blanca.
- El mundo, la configuración, la base de datos de cuentas y los registros se respaldan juntos.
- Se ha completado una restauración y verificado personajes, vehículos, contenedores y permisos.
- Los mods compatibles con Build 42 se añaden solo después de la aceptación del servidor vanilla.
- Antes de actualizaciones importantes se pausa el timer, se notifica a los jugadores y se conserva una copia de reversión.
Ejecutar Project Zomboid Build 42 en un VPS no consiste en copiar un solo comando de SteamCMD, sino en mantener el cliente y el App ID 380870 en la misma rama estable, abrir correctamente UDP 16261/16262, completar primero la inicialización interactiva del administrador y luego entregarlo a systemd para su ejecución persistente.
Lo que realmente hay que proteger es el mundo, la configuración, la base de datos de jugadores y los permisos bajo /home/pz/Zomboid. Detener el servidor y hacer copia de seguridad antes de cada actualización, revalidar los parámetros del heap de Java y reproducir primero los problemas con un mundo sin mods puede reducir significativamente el riesgo de reversión causado por la migración de versión, el contenido de Workshop y la terminación forzada.