Cómo elegir un VPS para servidores de juegos
Aprende qué necesita un VPS para juegos: buen rendimiento por núcleo y RAM suficiente. Incluye puertos, reinicios con systemd, copias de seguridad y ubicación para reducir la latencia.
¿A qué tipo de VPS para juegos se refiere?
Un VPS para servidores de juegos es una buena opción para una tarea: ejecutar un servidor dedicado al que usted y sus amigos se conectan desde sus propios equipos. Es una mala opción para la otra actividad que algunas personas asocian con esta expresión: jugar en el propio VPS mediante un escritorio remoto. Estas dos tareas requieren hardware opuesto. Un servidor dedicado necesita un núcleo de CPU rápido y suficiente RAM para cargar el mundo del juego. Para jugar se necesita una GPU (unidad de procesamiento gráfico), y un plan VPS estándar no incluye una.
Todo lo que sigue se refiere a la primera tarea. La segunda merece dos minutos de su tiempo, porque muchas personas compran el equipo equivocado para ella.
Por qué no puedes jugar en un VPS
Un VPS estándar proporciona núcleos de CPU virtuales y ninguna tarjeta gráfica. No se expone ningún recurso del host físico, por lo que no hay un renderizador de hardware que pueda utilizar el juego. Puedes comprobar lo que realmente has obtenido:
sudo apt install -y pciutils
lspci | grep -iE "vga|3d"La respuesta es un adaptador de pantalla virtual, como un dispositivo Cirrus Logic o una GPU virtio. Existe para que la consola web del proveedor pueda mostrarte una pantalla y no tiene aceleración 3D. Si instalas un escritorio y un servidor VNC encima, glxinfo -B informa de que su renderizador es llvmpipe, el renderizador por software de Mesa que se ejecuta en la CPU. Un juego 3D moderno renderizado por la CPU funciona a unos pocos fotogramas por segundo, por lo que no se puede jugar antes de que nada salga siquiera del servidor. Las instancias de Windows encuentran el mismo problema desde el otro lado. Muchos títulos se cierran al iniciarse e indican que no pudieron crear un dispositivo Direct3D, porque no hay ningún adaptador de pantalla donde crearlo.
El segundo problema es el trayecto de vuelta hasta ti. Jugar en un equipo remoto significa que cada fotograma se codifica como vídeo, se envía por Internet y se descodifica en tu pantalla. Esto añade el tiempo de codificación y descodificación a la latencia de entrada propia del juego, y RDP y VNC se diseñaron para escritorios, no para mostrar movimiento a 60 fotogramas por segundo. Los servicios de juego en la nube resuelven este problema con hardware de GPU real y un protocolo de streaming diseñado para ese fin. Un VPS convencional no tiene ninguna de las dos cosas. Si quieres jugar, alquila tiempo de GPU. Si quieres alojar juegos, sigue leyendo.
Qué necesita realmente un servidor de juegos dedicado
Un servidor de juegos ejecuta un bucle de simulación. Mantiene el mundo en memoria y lo actualiza un número fijo de veces por segundo. Después envía a cada jugador conectado la parte del mundo que puede ver.
Este funcionamiento determina el hardware. El bucle usa principalmente un solo hilo, por lo que la velocidad de los núcleos importa más que su cantidad. El mundo reside en la memoria, así que la RAM suele ser el primer límite que se alcanza. El disco apenas trabaja durante la partida y tiene más actividad al cargar y guardar. La ruta de red determina el ping y ningún nivel del plan puede cambiarlo.
La velocidad de un solo núcleo supera al número de núcleos
La mayoría de los servidores de juegos avanzan el mundo en un único subproceso principal. El bucle de ticks de Minecraft y el frame del servidor del motor Source funcionan así. Cada tick tiene un plazo límite. Minecraft Java ejecuta 20 ticks por segundo, por lo que cada tick dispone de 50 milisegundos. Si el trabajo no cabe en ese plazo, el servidor muestra exactamente esto:
[12:04:51] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2547ms or 50 ticks behindEsa línea indica que un subproceso se quedó sin tiempo. Añadir núcleos no da más tiempo a ese subproceso. Un plan con 2 vCPU rápidas mantendrá una tasa de ticks que un plan con 8 vCPU lentas no puede mantener, porque sólo una de esas 8 ejecuta el trabajo importante.
Mida la velocidad de un solo subproceso antes de contratar un plan:
sudo apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runLea la línea events per second. El número no significa nada por sí solo, pero sí sirve para comparar. Ejecute la prueba en dos planes candidatos y coloque los resultados uno junto al otro. Una ejecución completa de benchmark de VPS cubre el disco y la red de la misma forma.
Los núcleos adicionales siguen siendo útiles. Ejecutan el segundo servidor de juegos, la base de datos, la copia de seguridad nocturna y el pre-generador de chunks sin quitar tiempo al subproceso de ticks. El software de servidores también ha aprendido a distribuir el trabajo, y Paper, una bifurcación popular de servidores de Minecraft, mueve parte del trabajo fuera del subproceso principal de ticks. Por tanto, debe elegir unos pocos núcleos rápidos, no muchos núcleos lentos.
Hay un dato que nunca aparece en la página de un plan y que determina si el núcleo rápido que ha pagado es realmente suyo:
vmstat 1 5La columna st indica el porcentaje de tiempo durante el que su CPU virtual estaba lista para ejecutarse, pero el host físico asignó el núcleo a otro usuario. Un valor estable de st por encima de unos pocos puntos porcentuales indica que el host está sobreasignado. Los jugadores lo perciben como tirones mientras top en su servidor sigue mostrando CPU inactiva, porque ese tiempo inactivo no está disponible para usted.
¿Cuánta RAM necesita un servidor de juegos?
The data behind this chart
[
{
"label": "Minecraft Java, vanilla",
"players": 10,
"ram_gb": 2
},
{
"label": "Minecraft Java, large modpack",
"players": 10,
"ram_gb": 8
},
{
"label": "Valheim",
"players": 10,
"ram_gb": 4
},
{
"label": "Palworld",
"players": 32,
"ram_gb": 16
}
]Esas son las asignaciones iniciales que publica la documentación de cada juego y modpack, a fecha de agosto de 2026. Son valores orientativos, no mediciones realizadas en un servidor concreto. Vanilla Minecraft Java funciona bien con 2 GB de heap para unos 10 jugadores. La misma cantidad de jugadores en un modpack grande necesita 8 GB, porque los mods añaden entidades y estructuras generadas que permanecen en ese heap. El mínimo indicado por Valheim es de 2 GB, pero los administradores de servidores con un mundo pequeño informan de que el proceso se estabiliza cerca de 3 GB, así que 4 GB es un punto de partida razonable. Palworld es la excepción, con 16 GB para su máximo de 32 jugadores, que es la cantidad recomendada por Pocketpair.
La RAM no aumenta según el número de conexiones. Aumenta según el mundo cargado. Cada jugador mantiene cargada la región que lo rodea, por lo que dos jugadores juntos consumen mucho menos que dos jugadores que exploran extremos opuestos del mapa. Por eso, la «RAM por jugador» es sólo una orientación aproximada, mientras que la «RAM por zona activa» es el factor real. También explica por qué un grupo pequeño al que le gusta explorar puede superar los recursos de un plan dimensionado para el doble de jugadores.
Los servidores Java necesitan dos reglas adicionales. Establezca el heap mínimo y máximo con el mismo valor para que la JVM no se detenga para redimensionarlo:
java -Xms4G -Xmx4G -jar server.jar noguiDespués, deje margen. La JVM usa memoria fuera del heap asignado, para las pilas de los hilos y los búferes nativos, y el kernel necesita page cache para leer rápidamente los archivos del mundo. En un servidor con 6 GB, un heap de 4 GB es razonable y uno de 6 GB no lo es.
Los dos fallos de memoria son muy diferentes, así que debe reconocer ambos mensajes. Un heap demasiado pequeño produce un error dentro de Java y el servidor normalmente continúa funcionando con problemas:
java.lang.OutOfMemoryError: Java heap spaceSi el heap es mayor que la memoria disponible en el servidor, un proceso externo termina todo el proceso. La consola sólo muestra Killed y las pruebas aparecen en el registro del kernel:
sudo dmesg -T | grep -i "out of memory"Añadir swap evita la terminación, pero no soluciona el problema. Si el bucle de ticks tiene que leer de nuevo el mundo desde swap, incumple todos los plazos y los jugadores obtienen un servidor congelado en lugar de uno detenido por un error.
Una nota sobre las versiones, vigente en agosto de 2026: Minecraft Java 1.20.5 y posteriores requieren Java 21. Un runtime antiguo se inicia y después falla con un error de versión de archivo de clase no compatible. El mensaje parece propio de un compilador y confunde a todo el mundo la primera vez que aparece.
sudo apt install -y openjdk-21-jre-headless
java -version¿Importa la velocidad del disco en un servidor de juegos?
Importa menos de lo que muchos esperan durante la partida, pero mucho en dos momentos concretos. El mundo se carga en memoria al iniciar y se vuelve a escribir durante el guardado automático. Por eso, la velocidad del disco se nota en un arranque lento y en una pausa cuando se ejecuta el guardado. Entre esos momentos, la mayoría de las lecturas se sirven desde la RAM.
Hay dos factores que hacen que el disco importe más de lo que indica ese resumen. La exploración carga chunks o zonas nuevas desde el disco mientras los jugadores se desplazan, y esa lectura se realiza dentro del presupuesto de ticks. El guardado automático de un mundo grande escribe muchos datos de una vez. En un volumen lento, la escritura bloquea el bucle durante el tiempo suficiente para mostrar el aviso "Can't keep up" mencionado antes. Ambos son problemas de latencia, no de rendimiento secuencial. Por eso, la diferencia entre NVMe y SATA SSD en un VPS importa más de lo que sugieren los megabytes por segundo anunciados. Lo importante es cuánto tarda una operación pequeña.
Dimensione el volumen pensando en el crecimiento. Un mundo crece cada vez que alguien se desplaza a un lugar nuevo, y las copias de seguridad multiplican el espacio que ocupa. Ejecute du -sh world una vez por semana durante un mes. Así conocerá su tasa de crecimiento real.
Frecuencia de actualización, ping y diferencia entre ambos
La frecuencia de actualización indica cuántas veces por segundo recalcula el servidor el mundo. Minecraft Java funciona a 20. Los servidores del motor Source suelen funcionar a 64. En Minecraft no se puede comprar una frecuencia mayor, porque forma parte del diseño del juego. Por tanto, el objetivo es mantener 20, no superarla.
El ping es el tiempo de ida y vuelta entre un jugador y el servidor. Estos dos problemas generan quejas diferentes. Distíngalos antes de gastar dinero. Cuando el servidor pierde actualizaciones, todos sufren retrocesos al mismo tiempo y el registro del servidor lo indica claramente. Cuando un jugador tiene una ruta de red larga, sólo ese jugador experimenta retrasos y el resto del grupo funciona con normalidad. Una CPU más potente nunca resolverá el segundo caso.
La latencia depende de la ubicación, no del nivel del plan
La luz viaja por la fibra a unos 200 kilómetros por milisegundo. Un viaje de ida y vuelta recorre la distancia dos veces, por lo que el mínimo es de aproximadamente 1 ms por cada 100 km entre el jugador y el servidor. Ningún proveedor puede superar ese límite y ninguna mejora del plan lo modifica.
The data behind this chart
[
{
"label": "Toronto to New York",
"distance_km": 550,
"rtt_floor_ms": 5.5
},
{
"label": "Dallas to Chicago",
"distance_km": 1290,
"rtt_floor_ms": 12.9
},
{
"label": "Dallas to Los Angeles",
"distance_km": 1990,
"rtt_floor_ms": 19.9
},
{
"label": "New York to London",
"distance_km": 5570,
"rtt_floor_ms": 55.7
},
{
"label": "Los Angeles to Sydney",
"distance_km": 12070,
"rtt_floor_ms": 120.7
}
]Estos mínimos se calculan a partir de la distancia del círculo máximo. La fibra real no sigue una línea recta y cada router del trayecto añade un poco de latencia, por lo que un buen resultado real suele situarse cerca del doble del mínimo. Un jugador de Toronto que se conecta a un servidor de Nueva York, a 550 km, tiene un mínimo de 5.5 ms y normalmente verá valores de dos cifras en la decena. El trayecto de Los Ángeles a Sídney tiene un mínimo de 120.7 ms, y ninguna cantidad de dinero puede reducirlo.
Por tanto, coloque el servidor cerca de las personas que juegan en él. Si el grupo está dividido entre dos continentes, alguien tendrá que recorrer el trayecto largo. La opción más justa suele ser la región donde se encuentra la mayoría de los jugadores.
Mida el trayecto en lugar de hacer suposiciones:
sudo apt install -y mtr-tiny
mtr -rwzc 100 203.0.113.10Lea primero la última línea. Esa línea corresponde al servidor, y su pérdida y latencia son las únicas que determinan cómo se siente el juego. La pérdida que aparece en un salto intermedio con un salto final limpio casi siempre se debe a la limitación de tasa de ICMP en ese router, porque los routers dan menor prioridad a las respuestas de los paquetes de prueba mientras reenvían el tráfico real con normalidad. Haga que cada jugador ejecute la prueba hacia el servidor, ya que cada uno seguirá un trayecto diferente.
Cómo se calcula el mínimo del viaje de ida y vuelta
La luz se desplaza por el vidrio aproximadamente a dos tercios de su velocidad en el vacío, lo que equivale a cerca de 200 km por milisegundo. Un viaje de ida y vuelta recorre la distancia dos veces, por lo que el mínimo en milisegundos se obtiene dividiendo la distancia de ida en kilómetros entre 100. Nueva York está a 5,570 km de Londres, y 5570 dividido entre 100 da 55.7 ms. Todos los valores medidos son superiores a este, porque los cables siguen las costas y los routers necesitan tiempo para procesar los paquetes.
Abrir sólo los puertos que necesita el juego
Un servidor de juegos necesita uno o dos puertos abiertos y nada más. Valores predeterminados habituales:
- Minecraft Java Edition: TCP 25565
- Minecraft Bedrock Edition: UDP 19132
- Valheim: UDP 2456 y UDP 2457
- Palworld: UDP 8211
- Juegos basados en Source, como Counter-Strike 2: UDP 27015
Consulte la documentación del juego, porque algunos títulos usan un puerto de consulta adicional. Valheim es el ejemplo más claro: 2456 transporta el tráfico del juego y 2457 responde a la consulta del servidor de Steam que hace que el servidor aparezca en la lista del navegador. Abrir esos números en TCP no sirve de nada, porque Valheim sólo usa UDP.
Permita SSH antes de activar el firewall. De lo contrario, perderá el acceso a su propio servidor:
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verboseMuchos proveedores también ejecutan un firewall de red en su panel de control, separado del firewall del servidor. Un puerto abierto en ufw y cerrado en ese firewall seguirá rechazando las conexiones. Desde el exterior, el síntoma es el mismo. Compruebe ambos lugares antes de editar archivos de configuración.
Comprobar un puerto TCP desde otra máquina es sencillo:
sudo apt install -y netcat-openbsd
nc -vz 203.0.113.10 25565UDP no se puede probar de esa forma. Un puerto UDP cerrado normalmente no responde. Por tanto, una prueba que no recibe respuesta no le confirma nada. Compruébelo desde el propio servidor y busque el proceso del juego asociado al puerto esperado:
sudo ss -lunp | grep 2456Nunca exponga RCON, el protocolo de consola remota, a Internet. Es una única contraseña enviada mediante una conexión sin cifrar, normalmente en el puerto 25575. Asócielo a 127.0.0.1 y acceda mediante un túnel SSH. Ejecute también el servidor de juegos con su propio usuario sin privilegios, para que un error en un mod no pueda acceder al resto del equipo. Los primeros diez minutos en un VPS nuevo cubre la cuenta de usuario y el refuerzo de SSH que esta sección da por configurados.
Ejecute el servidor con systemd para que se reinicie
Un servidor iniciado manualmente en una sesión SSH muere cuando se cierra la sesión y permanece detenido después de un reinicio. systemd resuelve ambos problemas. Escriba /etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft Java server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar server.jar nogui
Restart=on-failure
RestartSec=15
TimeoutStopSec=180
[Install]
WantedBy=multi-user.targetRestart=on-failure vuelve a iniciar el servidor después de un fallo y lo deja detenido después de un apagado limpio, que es el comportamiento deseado. Restart=always interfiere cada vez que detiene el servidor deliberadamente. TimeoutStopSec=180 es más importante de lo que parece. systemctl stop envía SIGTERM, el servidor vanilla de Minecraft captura esa señal y guarda el mundo antes de salir; cuando vence el tiempo de espera, systemd envía SIGKILL. Un mundo grande puede tardar más de los 90 segundos predeterminados en guardarse, y todo lo que no haya llegado al disco cuando se envía SIGKILL se pierde.
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo journalctl -u minecraft -fUn arranque correcto termina con una línea como Done (12.345s)! For help, type "help". Si la unidad alterna entre los estados activating y failed, journalctl -u minecraft -n 50 contiene el motivo. Normalmente se debe a una ruta incorrecta en WorkingDirectory o a un heap mayor que la memoria disponible en el servidor.
systemd no proporciona una consola interactiva, así que debe planificarlo de antemano. Use RCON en localhost para ejecutar comandos o ejecute el servidor dentro de una sesión de tmux, el mismo método que mantiene una sesión prolongada de Claude Code activa en un VPS entre inicios de sesión.
Los servidores de juegos distribuidos mediante Steam necesitan SteamCMD antes de todo esto. El paquete de Ubuntu es un binario de 32 bits, por eso aparece la línea de arquitectura. Si omite esa línea, apt indica que no existe ningún candidato de instalación:
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmdAlgunos servidores de juegos aumentan el uso de memoria cuanto más tiempo permanecen activos. Un reinicio programado durante una hora de poca actividad es la solución habitual, aunque no corrige la causa. Un temporizador de systemd que invoque systemctl restart es más fácil de analizar que una entrada de cron, porque systemctl list-timers muestra exactamente cuándo se ejecutará la próxima vez.
Haga copias de seguridad del mundo según un programa
En un servidor de juego, todo se puede reemplazar, excepto el directorio del mundo y los datos de los jugadores. Reinstalar el juego lleva minutos. Reconstruir lo que ha creado su grupo lleva meses.
Una copia de seguridad segura se crea cuando ningún proceso está escribiendo. Detener el servidor durante un minuto es la forma más sencilla de garantizarlo:
sudo systemctl stop minecraft
sudo tar czf /var/backups/mc-$(date +%F).tgz -C /opt/minecraft world world_nether world_the_end
sudo systemctl start minecraftSi no puede aceptar una pausa nocturna, vacíe primero los datos pendientes del mundo. En la consola de Minecraft, save-off detiene el guardado automático, save-all flush escribe todo lo que sigue pendiente y save-on vuelve a activar el guardado automático cuando termina la copia. Copiar un mundo mientras el servidor está escribiendo puede capturar un archivo de región escrito sólo parcialmente. No lo descubrirá hasta el día en que necesite restaurarlo.
Conserve al menos una copia fuera de la máquina. Una copia de seguridad en el mismo disco no sobrevive a un fallo del disco. Una instantánea del proveedor es una comodidad, no una copia de seguridad, porque permanece en la misma cuenta que podría perder. Copias de seguridad programadas de restic en almacenamiento externo gestionan la retención y la deduplicación. Así, un mes de copias nocturnas del mundo no llena el volumen.
Después, restaure una copia. Una copia de seguridad que nunca ha restaurado es sólo una suposición. Extraiga el archivo de anoche en un directorio auxiliar, configure un servidor de prueba para usarlo y confirme que el mundo carga y que las construcciones siguen donde las dejó.
Compruebe el servicio antes de contratarlo
Contrate un mes en lugar de un año y haga una prueba con jugadores reales durante una tarde. Ejecute la prueba de un solo hilo sysbench y, después, pida a todos los jugadores que ejecuten mtr hacia el servidor. El procedimiento completo para evaluar una VPS explica paso a paso estas herramientas y muestra cómo es un resultado deficiente. El coste mensual real de una VPS le ayuda a comprobar que paga por el recurso que limita el servidor, no por el que aparece con la cifra más alta en la página del plan.
Dos artículos continúan a partir de este punto. Cómo crear un servidor de Minecraft en una VPS es la versión paso a paso de todo lo anterior, aplicada al juego con el que empieza la mayoría. La lista más amplia de servicios que puede ejecutar una VPS merece la pena si prefiere que el servidor haga algo útil entre las sesiones de juego.
FAQ
¿Puedo jugar a videojuegos en un VPS en lugar de comprar un PC para juegos?
No. Un VPS estándar no tiene GPU, sólo un adaptador de pantalla virtual para la consola del proveedor. Por eso, después de instalar un entorno de escritorio, glxinfo -B informa del renderizador de software llvmpipe y un juego 3D funciona a unos pocos fotogramas por segundo. Incluso con una GPU conectada, el juego remoto añade la codificación y decodificación de vídeo al viaje de ida y vuelta de cada fotograma, y RDP y VNC nunca se diseñaron para eso. Un VPS sirve para alojar el servidor dedicado al que se conecta vuestro grupo. Alquila tiempo de GPU o usa un servicio de juego en la nube si lo que quieres es jugar.
¿Cuántos núcleos de CPU necesita un servidor de videojuegos?
Para la mayoría de los juegos, dos núcleos rápidos ofrecen un mejor resultado que ocho lentos, porque la simulación del mundo se ejecuta en un único hilo principal y los núcleos adicionales no pueden ayudar a ese hilo a cumplir su límite de 50 ms. Compara los planes candidatos con sysbench cpu --cpu-max-prime=20000 --threads=1 run y consulta la cifra de eventos por segundo. Merece la pena pagar por núcleos adicionales si también ejecutas un segundo servidor o una base de datos en el mismo equipo, porque esas cargas pueden ejecutarse sin quitar tiempo al hilo de los ticks.
¿Cuánta RAM necesita un servidor de Minecraft?
Aproximadamente 2 GB de heap para un mundo vanilla con unos 10 jugadores, y 8 GB para un modpack grande con el mismo número de jugadores. Configura -Xms y -Xmx con el mismo valor y deja entre 1 GB y 2 GB libres en la máquina para el sistema operativo, porque la JVM utiliza memoria fuera del heap y el kernel necesita la caché de páginas. Si el heap es mayor que la memoria disponible en el equipo, el kernel termina el proceso. En dmesg esto aparece como una línea de falta de memoria, no como un error de Java.
¿Por qué sufren lag mis jugadores si al servidor le sobran CPU y RAM?
Hay dos causas que encajan con esa descripción. Comprueba el registro del servidor en busca de Can't keep up! Is the server overloaded?. Esto significa que el hilo principal no cumplió su presupuesto de 50 ms por tick mientras los demás núcleos permanecían inactivos. Si esa línea no aparece, el problema está en la ruta de red. Haz que cada jugador ejecute mtr -rwzc 100 203.0.113.10 contra la dirección de tu servidor y lea la última línea. Comprueba también la columna st en vmstat 1: un steal time superior a unos pocos porcentajes significa que el host está sobredimensionado, por lo que la CPU inactiva que ves no está realmente disponible para ti.
¿Qué puertos debo abrir para un servidor de videojuegos?
Sólo el puerto propio del juego, además de SSH. Minecraft Java usa TCP 25565, Minecraft Bedrock usa UDP 19132, Valheim usa UDP 2456 y 2457, y Palworld usa UDP 8211. Añade la regla de SSH antes de ejecutar ufw enable, o perderás el acceso al equipo. Recuerda que muchos proveedores ejecutan un segundo firewall en su panel de control, y el puerto debe estar abierto en ambos. Nunca expongas RCON en el puerto 25575 a Internet, porque envía una única contraseña en texto plano.