Cómo crear un servidor de Palworld en VPS Linux paso a paso

Tutorial técnico para montar un servidor dedicado de Palworld en VPS Ubuntu 24.04 LTS: SteamCMD, systemd, firewall, PalWorldSettings.ini y ajuste de RAM.

Montar un servidor dedicado de Palworld en VPS Linux exige atención a dos puntos donde suelen tropezar quienes vienen de servidores más simples: el consumo agresivo de RAM (el proceso fácilmente supera los 8 GB con el mundo poblado) y el hecho de que el juego usa UDP en un único puerto principal, sin TCP secundario para HTTP o queries. Configurar mal el firewall impide que el servidor aparezca en la lista, un síntoma habitual en owners primerizos.

Este tutorial cubre la instalación desde cero en Ubuntu 24.04 LTS vía SteamCMD oficial, la configuración completa del PalWorldSettings.ini, el aislamiento por usuario dedicado, la supervisión por systemd con reinicio automático, el firewall UFW y el ajuste de memoria. Tiempo estimado de ejecución: 30-45 minutos. Terminás con un servidor de Palworld online, registrado en la lista comunitaria y reiniciando automáticamente tras reboot o crash.

La persona objetivo es un owner nuevo que está montando su primer servidor dedicado de Palworld. No se requiere experiencia previa con Linux — todos los comandos vienen explicados, y los errores más comunes tienen una sección dedicada al final.

Prerrequisitos

Lo que necesitas antes de empezar

VPS con Ubuntu 24.04 LTS (Server, no Desktop), acceso SSH como usuario sudo, mínimo 8 GB de RAM (16 GB recomendados para 16+ jugadores), 4 vCPUs con clock alto y 30 GB de disco libre. CPU x86_64 obligatoria. Conexión estable para descargar ~5 GB del servidor vía SteamCMD.

Confirma los parámetros técnicos antes de continuar:

Sistema Ubuntu 24.04 LTS x86_64
RAM mínima 8 GB (16 GB recomendados)
Disco 30 GB libres
Puerto juego 8211/UDP
Puerto RCON 25575/TCP (opcional)

El puerto 8211/UDP es el único obligatorio — toda la comunicación cliente-servidor pasa por él. El 25575/TCP es opcional y solo necesita estar abierto si quieres administración remota vía RCON (recomendado para moderación). No expongas RCON a internet abierto — restríngelo por IP o usa un túnel SSH.

Instalación de PalServer vía SteamCMD

Esta sección cubre desde la creación del usuario dedicado hasta el servidor descargado e iniciado por primera vez. Correr servicios de juego con usuario propio (no root) limita el impacto de cualquier falla o exploit — y mantiene los archivos del juego aislados en un home dedicado.

01

Actualiza el índice de paquetes e instala las dependencias básicas:

sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common
sudo add-apt-repository -y multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 libsdl2-2.0-0:i386 curl wget ca-certificates

La arquitectura i386 es necesaria porque SteamCMD se distribuye como binario de 32 bits, aunque el propio PalServer sea de 64 bits. Sin lib32gcc-s1 SteamCMD falla en la primera ejecución con error de biblioteca.

02

Crea un usuario dedicado palworld sin privilegios de login:

sudo useradd -r -m -d /opt/palworld -s /bin/bash palworld
sudo su - palworld

La flag -r crea un usuario de sistema, -m crea el home en /opt/palworld. Ahora estás operando como palworld — todos los próximos comandos corren en ese contexto hasta nueva indicación.

03

Descarga y prepara SteamCMD dentro del home del usuario:

cd /opt/palworld
mkdir -p steamcmd && cd steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
./steamcmd.sh +quit

La primera ejecución descarga las actualizaciones del propio SteamCMD y sale. Si aparece un error de “Steam Guard” o similar, ignóralo — no estamos iniciando sesión en una cuenta de Steam (Palworld dedicado es anónimo).

04

Instala el servidor dedicado de Palworld (AppID 2394010):

cd /opt/palworld/steamcmd
./steamcmd.sh +force_install_dir /opt/palworld/server \
  +login anonymous \
  +app_update 2394010 validate \
  +quit

La descarga es de aproximadamente 5 GB. En VPS con 1 Gbps la operación tarda 1-3 minutos. Confirma al final el mensaje Success! App '2394010' fully installed. antes de continuar. Si la conexión se cae durante el proceso, ejecuta el mismo comando otra vez — SteamCMD retoma desde donde se interrumpió.

05

Haz la primera ejecución del servidor para generar los archivos de configuración por defecto:

cd /opt/palworld/server
./PalServer.sh

El servidor arranca, genera el directorio Pal/Saved/Config/LinuxServer/ con los archivos default y queda corriendo. Espera a que aparezca el mensaje Setting breakpad minidump AppID en la consola — significa que está listo. Detén con Ctrl+C. Vamos a configurarlo antes de levantarlo de nuevo.

Configuración del PalWorldSettings.ini

El archivo PalWorldSettings.ini controla todo el comportamiento del servidor: nombre, descripción, contraseña, slots, RCON, anuncio público, dificultad y tasas de XP/captura. Está en /opt/palworld/server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini y usa formato clave=valor.

06

Copia el template por defecto antes de editar — así siempre tienes referencia de lo que cambiaste:

cd /opt/palworld/server/Pal/Saved/Config/LinuxServer
cp PalWorldSettings.ini PalWorldSettings.ini.default
nano PalWorldSettings.ini

El archivo tiene una única línea gigante que comienza con OptionSettings=(...). No rompas esa línea en múltiples — el parser de Palworld es estricto y romperla invalida toda la configuración.

07

Ajusta los campos críticos dentro del paréntesis de OptionSettings. Los más importantes para un servidor público:

ServerName="Mi Servidor Palworld",
ServerDescription="Servidor latinoamericano 24/7",
AdminPassword="TU_CONTRASEÑA_ADMIN_FUERTE_AQUI",
ServerPassword="",
PublicIP="IP_PUBLICA_DE_TU_VPS",
PublicPort=8211,
ServerPlayerMaxNum=16,
bIsMultiplay=True,
bEnableInvaderEnemy=True,
RCONEnabled=True,
RCONPort=25575

Deja ServerPassword="" (vacío) para servidor público, o define contraseña para acceso privado. El PublicIP es lo que aparece en el anuncio comunitario — llénalo con la IP que aparece en curl ifconfig.me ejecutado en la VPS.

Cuidado con las comillas y las comas

El PalWorldSettings.ini es particularmente frágil. Las cadenas deben ir entre comillas dobles. Los booleanos son True/False (con mayúscula). Los números no llevan comillas. Olvidar una coma entre campos hace que el servidor ignore todo lo que viene después del error y vuelva a los valores por defecto.

08

Ajusta las tasas de progresión para balancear el ritmo de juego. Los defaults están pensados para single-player; en un servidor multijugador con sesiones más cortas, tasas levemente aumentadas evitan frustración:

ExpRate=1.500000,
PalCaptureRate=1.500000,
PalSpawnNumRate=1.000000,
PalDamageRateAttack=1.000000,
PalDamageRateDefense=1.000000,
PlayerDamageRateAttack=1.000000,
PlayerDamageRateDefense=1.000000,
DeathPenalty="All"

ExpRate=1.5 da 50% más XP. PalCaptureRate=1.5 aumenta la probabilidad de captura. DeathPenalty="All" mantiene el default (pierdes todo al morir) — otras opciones son "Item", "ItemAndEquipment" y "None" para servidores más casuales.

Firewall y supervisión por systemd

El servidor corriendo manualmente sirve para probar la configuración, pero en producción necesitas un supervisor (para reiniciar tras crash) y firewall (para bloquear lo que no es juego). Vuelve a tu usuario sudo ahora — sal del contexto palworld con exit.

09

Abre los puertos necesarios en UFW:

sudo ufw allow 8211/udp comment 'Palworld game port'
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw enable
sudo ufw status verbose

No habilites RCON (25575/tcp) hacia 0.0.0.0 — si lo vas a usar, restríngelo a tu IP de admin: sudo ufw allow from TU_IP to any port 25575 proto tcp. RCON expuesto + contraseña débil = takeover del servidor.

Confirma SSH antes de habilitar UFW

Antes de ejecutar ufw enable, confirma que la regla 22/tcp (o tu puerto SSH personalizado) esté agregada. Habilitar UFW sin regla SSH te deja fuera de la VPS. Si eso pasa, solo se recupera vía consola out-of-band del panel del hosting.

10

Crea el archivo de unit systemd en /etc/systemd/system/palworld.service:

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

Contenido:

[Unit]
Description=Palworld Dedicated Server
After=network.target

[Service]
Type=simple
User=palworld
Group=palworld
WorkingDirectory=/opt/palworld/server
ExecStart=/opt/palworld/server/PalServer.sh
Restart=on-failure
RestartSec=15
LimitNOFILE=65536
StandardOutput=append:/var/log/palworld/server.log
StandardError=append:/var/log/palworld/server.log

[Install]
WantedBy=multi-user.target

Crea el directorio de log y habilita el servicio:

sudo mkdir -p /var/log/palworld
sudo chown palworld:palworld /var/log/palworld
sudo systemctl daemon-reload
sudo systemctl enable --now palworld

El LimitNOFILE=65536 aumenta el límite de file descriptors — Palworld abre muchos sockets simultáneos con varios jugadores y choca con el límite default de 1024 cuando hay 16+ players.

11

Configura reinicio automático cada 12 horas para mitigar la fuga de memoria. Crea un timer systemd:

sudo nano /etc/systemd/system/palworld-restart.service
[Unit]
Description=Restart Palworld server

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart palworld
sudo nano /etc/systemd/system/palworld-restart.timer
[Unit]
Description=Restart Palworld every 12h

[Timer]
OnBootSec=12h
OnUnitActiveSec=12h
Persistent=true

[Install]
WantedBy=timers.target

Habilítalo:

sudo systemctl daemon-reload
sudo systemctl enable --now palworld-restart.timer
El reinicio programado evita el OOM

Palworld tiene una fuga de memoria progresiva documentada por la comunidad. Reiniciar cada 12 horas lo resuelve sin que los jugadores lo noten (la transición tarda 30-40 segundos). Comunica el horario a los players — un reinicio en medio de un raid frustra.

Verificación

Confirma que el servidor está corriendo como servicio supervisado y respondiendo en la red.

sudo systemctl status palworld
sudo ss -ulnp | grep 8211
tail -f /var/log/palworld/server.log

El systemctl status debe mostrar active (running) desde hace algunos minutos. El ss -ulnp debe listar el proceso PalServer-Linux escuchando en el puerto 8211/UDP. El log debe contener líneas con Setting breakpad minidump AppID y actividad de arranque sin errores de configuración.

Para una prueba real, abre Palworld en el cliente, ve a “Join Multiplayer Game” → “Community Server List” y busca el nombre que definiste en ServerName. Puede tardar entre 1 y 3 minutos en propagarse. Antes de aparecer en la lista, la conexión directa por IP funciona: en la misma pantalla, usa “Connect by IP” y escribe IP_DE_TU_VPS:8211.

Resolución de problemas

”Address already in use” al iniciar

Otra instancia sigue corriendo. Detén con sudo systemctl stop palworld y sudo pkill -u palworld PalServer-Linux. Espera 30 segundos antes de reiniciar — el socket UDP tarda en liberarse cuando el proceso se traba sin cierre graceful.

El servidor arranca pero no aparece en la lista comunitaria

Causa más común: PublicIP vacío o incorrecto en el PalWorldSettings.ini. Confirma ejecutando curl ifconfig.me en la VPS y comparando con el valor configurado. Segunda causa: puerto 8211/UDP bloqueado. Prueba con nmap -sU -p 8211 TU_IP desde otra máquina — si muestra closed o filtered, es firewall (UFW o bloqueo en el borde del hosting).

Los jugadores se conectan pero se caen tras unos minutos

Casi siempre es falta de RAM. Verifica con free -h mientras el servidor está poblado. Si la columna available queda por debajo de 500 MB y swap se usa intensamente, necesitas upgrade de plan o reducir ServerPlayerMaxNum. Palworld es particularmente sensible al swap — el uso pesado provoca stutter de movimiento visible.

”Failed to initialize Steam connection”

El servidor no logra alcanzar la infraestructura de Steam. Verifica que la VPS tenga internet saliente (curl -I https://steamcdn-a.akamaihd.net) y que no haya firewall bloqueando egreso. En algunos hostings con firewall de borde, libera outbound UDP/TCP hacia los rangos de Steam.

Próximos pasos

Con el servidor base en el aire, los puntos típicos de evolución:

  • Configurar backup automático del mundo (Pal/Saved/SaveGames/) con rsync programado por cron
  • Implementar moderación remota vía RCON usando herramientas como rcon-cli
  • Agregar Discord webhook para notificar cuando un jugador entra/sale (vía parser de log)
  • Configurar monitoreo de RAM y CPU para alertar antes del OOM
  • Levantar un segundo servidor en otro puerto UDP (8212) para modo PVP separado

Si vas a llevar esto a producción y quieres baja latencia para jugadores de Latinoamérica, una VPS Hostini en São Paulo entrega típicamente 5-15 ms para la mayor parte de Brasil y latencias competitivas hacia el resto del continente, con protección DDoS en el borde dimensionada para picos UDP — el perfil exacto que los servidores de Palworld exigen en horario de pico.

Preguntas frecuentes

¿Cuánta RAM y CPU necesito para un servidor de Palworld?

El servidor dedicado de Palworld consume entre 6 y 12 GB de RAM en uso real, según el número de jugadores y el tamaño del mundo. Para 4-8 jugadores, 8 GB de RAM y 4 vCPUs dan estabilidad. Para 16-32 jugadores, considera 16 GB de RAM y 6 vCPUs. El proceso es predominantemente single-thread, por lo que el clock alto importa más que muchos núcleos.

¿El servidor de Palworld corre en ARM64 (Ampere, Graviton)?

No. El binario oficial PalServer de Pocketpair está compilado para x86_64 Linux con dependencias glibc. ARM64 no funciona ni mediante emulación práctica. Usa VPS con CPU Intel o AMD x86_64 — cualquier plan estándar sirve.

¿Por qué mi servidor no aparece en la lista comunitaria del juego?

Confirma que PublicIP y PublicPort estén llenos en el PalWorldSettings.ini con la IP real de la VPS y el puerto UDP 8211. Servidores detrás de NAT estricto o sin PublicIP correcto no logran anunciarse. La propagación tarda entre 1 y 3 minutos tras el arranque. La conexión directa por IP funciona aunque no aparezca en la lista pública.

El servidor se cae solo o se cuelga con OOM (out of memory), ¿cómo evitarlo?

Palworld tiene una fuga de memoria conocida en sesiones largas — el proceso crece gradualmente. Configura reinicio programado cada 12 o 24 horas vía cron o systemd timer. También asegúrate de tener swap configurado (4-8 GB) como red de seguridad, pero no como solución principal — el swap pesado provoca stutter en el juego.

¿Puedo correr el servidor de Palworld en un contenedor Docker?

Sí, existen imágenes comunitarias funcionales. Para producción en VPS dedicada, correr directamente en el host con systemd es más predecible — menos capas de red, debug de UDP más simple y actualización vía SteamCMD directa. Docker tiene sentido si gestionas múltiples servidores en la misma máquina.

¿Cómo hago backup del mundo del servidor sin necesidad de parar el servicio?

Los datos del mundo están en Pal/Saved/SaveGames/0/<WorldID>/. Puedes copiar esa carpeta con el servidor corriendo, pero hay riesgo de capturar un estado inconsistente. Lo ideal es ejecutar el save manualmente vía RCON (comando Save), esperar 5 segundos y luego copiar. Para automatizar, programa un script bash que haga Save + rsync + rotación diaria.

Temas:
Próximos pasos VPS, dedicado o panel gestionado para FiveM, SAMP, MTA, Tibia y más.Aloja tu servidor de juegos con Hostini →
¿Te resultó útil este tutorial?
Hablar por WhatsApp