Es posible ejecutar dos servidores de juegos, como Core Keeper e Icarus, en un mismo VPS sin conflictos si se configuran correctamente usuarios de sistema separados, puertos únicos (por ejemplo, 27015 para Core Keeper y 7778 para Icarus) y se utilizan unidades systemd con cgroups para gestionar los recursos de CPU y RAM, lo que evita ralentizaciones mutuas.
En el mundo de los juegos online, donde todos quieren tener su propio servidor dedicado para jugar cómodamente con amigos, a menudo surge un dilema: ¿ejecutar un VPS separado para cada juego o intentar alojar varios en la misma máquina? Si usted y su grupo de amigos disfrutan de diferentes proyectos, como el juego de supervivencia y aventura Core Keeper y el desafiante simulador de supervivencia Icarus, pagar por dos hostings puede resultar costoso. Afortunadamente, un VPS moderno permite alojar varios servidores de juegos en un mismo VPS de manera eficiente, si se aborda la configuración de forma inteligente. En este artículo, analizaremos en detalle cómo iniciar un Core Keeper dedicated server y un Icarus dedicated server en una misma máquina virtual, evitando conflictos y asegurando un funcionamiento estable.
¿Por qué ejecutar varios servidores de juegos en un mismo VPS es rentable y eficiente?
La decisión de alojar varios servidores de juegos en una misma máquina virtual ofrece una serie de ventajas que la hacen atractiva para las comunidades de jugadores y pequeños grupos de amigos. No solo se trata de ahorro de costos, sino también de una gestión simplificada.
Ahorro de recursos y presupuesto al ejecutar dos servidores en un mismo VPS
La razón principal para la consolidación es el beneficio financiero. En lugar de alquilar dos o más VPS separados, cada uno de los cuales estará inactivo la mayor parte del tiempo o utilizará solo una pequeña fracción de sus recursos, puede elegir un VPS único y más potente. Esto reducirá significativamente los gastos mensuales de hosting. Por ejemplo, un VPS con 8 GB de RAM y 4 vCPU a menudo es más económico que dos VPS con 4 GB de RAM y 2 vCPU cada uno. El ahorro puede alcanzar entre el 20% y el 40% del costo total, lo que es especialmente notable a largo plazo.
Gestión centralizada y flexibilidad
Administrar varios servidores de juegos desde un único punto de entrada simplifica la gestión. No necesita conectarse a diferentes servidores para actualizar juegos, reiniciar servicios o configurar el firewall. Todas las operaciones se realizan en una sola máquina. Esto también proporciona una mayor flexibilidad en la asignación de recursos. Si un juego requiere temporalmente más potencia (por ejemplo, durante una actualización importante o un evento), puede reasignar dinámicamente los recursos disponibles sin afectar a otros VPS.
Preparación del VPS: sistema operativo, usuarios y directorios para Core Keeper e Icarus
Antes de proceder con la instalación de los servidores de juegos, es necesario preparar correctamente el sistema operativo de su VPS. Este es un paso clave para garantizar la seguridad, la estabilidad y la prevención de conflictos.
Elección del sistema operativo y configuraciones básicas
Para servidores de juegos, se recomienda utilizar distribuciones de Linux como Ubuntu Server (20.04 LTS o 22.04 LTS) o Debian (11 o 12). Estas se caracterizan por su estabilidad, rendimiento y amplio soporte de la comunidad. Después de desplegar el VPS, realice una actualización básica del sistema:
sudo apt update && sudo apt upgrade -y
Instale las utilidades necesarias, como `screen` (para ejecutar aplicaciones de consola en segundo plano), `git` (si necesita clonar repositorios) y `htop` (para monitorear recursos):
sudo apt install screen git htop -y
También recomendamos encarecidamente configurar el firewall UFW para restringir el acceso a los puertos. Por defecto, UFW bloquea todas las conexiones entrantes excepto las que están explícitamente permitidas, lo que aumenta significativamente la seguridad de su servidor. Permita el acceso SSH:
sudo ufw allow ssh
sudo ufw enable
Más adelante, añadiremos reglas para los puertos de los juegos.
Creación de usuarios y directorios separados para Core Keeper e Icarus
Una de las formas más efectivas de aislar los servidores de juegos entre sí es ejecutar cada uno bajo un usuario de sistema diferente. Esto previene posibles conflictos de archivos, simplifica la gestión de permisos y aumenta la seguridad, limitando el área de impacto en caso de compromiso de uno de los servidores.
Usuario y directorio para Core Keeper
Cree un nuevo usuario `corekeeper` sin acceso a un shell interactivo (para mayor seguridad) y su directorio home:
sudo adduser --system --no-create-home --group corekeeper
sudo mkdir /opt/corekeeper
sudo chown corekeeper:corekeeper /opt/corekeeper
El directorio `/opt/corekeeper` se utilizará para la instalación del servidor Core Keeper.
Usuario y directorio para Icarus
De manera similar, cree el usuario `icarus` y su directorio:
sudo adduser --system --no-create-home --group icarus
sudo mkdir /opt/icarus
sudo chown icarus:icarus /opt/icarus
El directorio `/opt/icarus` se utilizará para la instalación del servidor Icarus.
Ahora tenemos dos entornos aislados, lo que constituye una excelente base para futuras configuraciones.
¿Busca un servidor fiable para sus proyectos?
VPS desde $10/mes y servidores dedicados desde $9/mes con NVMe, protección DDoS y soporte 24/7.
Ver ofertas →Servidores de juegos: puertos, conflictos y cómo resolverlos
Los conflictos de puertos son el problema más común al intentar ejecutar dos servidores en un mismo VPS. Cada servicio que espera conexiones entrantes debe "escuchar" en un puerto único. Si dos servicios intentan usar el mismo puerto, solo uno de ellos podrá ocuparlo, y el otro terminará con un error.
Comprendiendo los puertos de red
Los puertos de red son puntos lógicos a través de los cuales los programas intercambian datos en la red. Son números del 1 al 65535. Los servidores de juegos suelen utilizar puertos específicos para el tráfico del juego (UDP/TCP) y para las solicitudes de estado (Query UDP). Por ejemplo:
- Core Keeper Dedicated Server:
- Puerto del juego (Game): 27015 (UDP/TCP)
- Puerto de consultas (Query): 27016 (UDP)
- Icarus Dedicated Server:
- Puerto del juego (Game): 7777 (UDP)
- Puerto de consultas (Query): 27015 (UDP)
Como se ve en el ejemplo anterior, las configuraciones estándar de Icarus y Core Keeper entran en conflicto en el puerto 27015 (Icarus Query y Core Keeper Game). Este es un escenario ideal para demostrar la solución al problema.
Elección de puertos no superpuestos para Core Keeper e Icarus
Para evitar conflictos, cambiaremos los puertos para Icarus:
- Core Keeper:
- Game Port: 27015 (UDP/TCP)
- Query Port: 27016 (UDP)
- Icarus:
- Game Port: 7778 (UDP)
- Query Port: 27017 (UDP)
Ahora todos los puertos son únicos. Esto es críticamente importante para el correcto funcionamiento de ambos servidores.
Configuración del firewall (UFW) para servidores de juegos
Después de seleccionar los puertos, es necesario permitir las conexiones entrantes a estos puertos a través del firewall UFW. Ejecute los siguientes comandos:
sudo ufw allow 27015/tcp comment 'Core Keeper Game TCP'
sudo ufw allow 27015/udp comment 'Core Keeper Game UDP'
sudo ufw allow 27016/udp comment 'Core Keeper Query UDP'
sudo ufw allow 7778/udp comment 'Icarus Game UDP'
sudo ufw allow 27017/udp comment 'Icarus Query UDP'
sudo ufw status verbose
Verifique que UFW esté activo y que las nuevas reglas se hayan añadido. Ahora su VPS está listo para aceptar conexiones a ambos servidores de juegos.
Cómo instalar Core Keeper Dedicated Server en un VPS
Ahora que el VPS está preparado y los puertos distribuidos, procederemos con la instalación del Core Keeper dedicated server. Utilizaremos SteamCMD para descargar los archivos del servidor.
Descarga de SteamCMD y Core Keeper
Cambie al usuario `corekeeper` y descargue SteamCMD. Si aún no ha instalado SteamCMD, hágalo:
sudo apt install steamcmd -y
Luego, vaya al directorio `/opt/corekeeper` y descargue los archivos del servidor. Dado que el usuario `corekeeper` es un usuario del sistema y no tiene un directorio home, ejecutaremos los comandos en su nombre a través de `sudo -u`:
sudo -u corekeeper mkdir -p /opt/corekeeper/steamcmd
sudo -u corekeeper /usr/games/steamcmd +force_install_dir /opt/corekeeper +login anonymous +app_update 1963720 validate +quit
El App ID para Core Keeper Dedicated Server es 1963720.
Para obtener más información sobre la instalación y configuración de Core Keeper, puede consultar nuestro artículo: Su propio servidor Core Keeper: instalación y configuración en VPS/dedicado.
Configuración básica del servidor Core Keeper
Después de descargar los archivos del servidor Core Keeper, es necesario crear o editar el archivo de configuración. Esto generalmente se hace en el archivo `server_settings.json` o a través de parámetros de línea de comandos. Ejemplo de configuración mínima:
sudo -u corekeeper nano /opt/corekeeper/server_settings.json
Contenido del archivo (reemplace `YourWorldName` y `YourPassword`):
{
"world_name": "MyValebyteCoreKeeperWorld",
"world_seed": "",
"max_players": 10,
"server_password": "StrongPassword123",
"game_port": 27015,
"query_port": 27016,
"save_interval": 300
}
Asegúrese de que `game_port` y `query_port` coincidan con los puertos que hemos elegido (27015 y 27016).
Inicio automático de Core Keeper a través de systemd con limitación de recursos
Para el inicio automático del servidor y la gestión de sus recursos, crearemos una unidad systemd. Esto permitirá que Core Keeper se inicie al arrancar el sistema, así como limitar el consumo de CPU y memoria para que no "ahogue" a Icarus.
sudo nano /etc/systemd/system/corekeeper.service
Contenido del archivo unit:
[Unit]
Description=Core Keeper Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
User=corekeeper
Group=corekeeper
ExecStart=/opt/corekeeper/CoreKeeperServer -settings /opt/corekeeper/server_settings.json
WorkingDirectory=/opt/corekeeper
StandardOutput=journal
StandardError=journal
Restart=always
RestartSec=5
# Opciones de cgroups para limitar recursos
CPUWeight=500 # 50% del CPU disponible por defecto (1024)
MemoryMax=4G # Consumo máximo de memoria 4GB
IOWeight=500 # 50% del I/O disponible
[Install]
WantedBy=multi-user.target
Explicación de las limitaciones:
- `CPUWeight=500`: Establece el peso de la CPU para esta unidad. Por defecto, el peso es 1000. Un valor de 500 significa que Core Keeper recibirá aproximadamente el 50% de la CPU disponible si hay otros procesos con un peso de 1000. Si no hay otros procesos con carga, puede usar el 100%.
- `MemoryMax=4G`: Limita estrictamente el consumo de memoria RAM a 4 gigabytes. Si el servidor intenta usar más, se terminará.
- `IOWeight=500`: Similar a la CPU, regula la prioridad de las operaciones de disco.
Guarde el archivo, luego habilite e inicie el servicio:
sudo systemctl daemon-reload
sudo systemctl enable corekeeper.service
sudo systemctl start corekeeper.service
sudo systemctl status corekeeper.service
Asegúrese de que el servidor Core Keeper esté iniciado y funcionando correctamente.
Cómo instalar Icarus Dedicated Server en un VPS
Ahora instalaremos el Icarus dedicated server, siguiendo la misma lógica de aislamiento de recursos y usuarios.
Descarga de SteamCMD y Icarus
Cambie al usuario `icarus` y descargue los archivos del servidor Icarus:
sudo -u icarus mkdir -p /opt/icarus/steamcmd
sudo -u icarus /usr/games/steamcmd +force_install_dir /opt/icarus +login anonymous +app_update 2089300 validate +quit
El App ID para Icarus Dedicated Server es 2089300.
Una guía más detallada para la instalación de Icarus está disponible aquí: Su propio servidor Icarus: instalación y configuración en VPS/dedicado.
Configuración básica del servidor Icarus
La configuración de Icarus se realiza a través de los archivos `Game.ini` y `ServerSettings.ini`. Cree estos en el directorio `Icarus/Saved/Config/LinuxServer/` dentro de su instalación de Icarus.
sudo -u icarus mkdir -p /opt/icarus/Icarus/Saved/Config/LinuxServer/
sudo -u icarus nano /opt/icarus/Icarus/Saved/Config/LinuxServer/Game.ini
Ejemplo de `Game.ini` (en este archivo se suelen configurar los parámetros del juego):
[/Script/Icarus.IcarusServerSettings]
ServerName="MyValebyteIcarusServer"
ServerPassword="AnotherStrongPassword456"
MaxPlayers=8
Difficulty="Medium"
AllowPvP=False
EnableProximityVoiceChat=True
Ahora cree `ServerSettings.ini` para los puertos:
sudo -u icarus nano /opt/icarus/Icarus/Saved/Config/LinuxServer/ServerSettings.ini
Contenido de `ServerSettings.ini`:
[IcarusServerSettings]
Port=7778
QueryPort=27017
Asegúrese de que `Port` y `QueryPort` coincidan con los puertos que hemos elegido (7778 y 27017).
Inicio automático de Icarus a través de systemd con limitación de recursos
Cree una unidad systemd para Icarus:
sudo nano /etc/systemd/system/icarus.service
Contenido del archivo unit:
[Unit]
Description=Icarus Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
User=icarus
Group=icarus
ExecStart=/opt/icarus/Icarus/Binaries/Linux/IcarusServer -Port=7778 -QueryPort=27017 -log
WorkingDirectory=/opt/icarus/Icarus/Binaries/Linux/
StandardOutput=journal
StandardError=journal
Restart=always
RestartSec=5
# Opciones de cgroups para limitar recursos
CPUWeight=500 # 50% del CPU disponible por defecto (1024)
MemoryMax=6G # Consumo máximo de memoria 6GB
IOWeight=500 # 50% del I/O disponible
[Install]
WantedBy=multi-user.target
Explicación de las limitaciones:
- `CPUWeight=500`: Similar a Core Keeper, Icarus recibirá aproximadamente el 50% de la CPU disponible.
- `MemoryMax=6G`: Icarus normalmente requiere más memoria que Core Keeper, por lo que aquí se establecen 6 GB.
Guarde el archivo, luego habilite e inicie el servicio:
sudo systemctl daemon-reload
sudo systemctl enable icarus.service
sudo systemctl start icarus.service
sudo systemctl status icarus.service
Ahora ambos servidores deberían estar iniciados y funcionando bajo sus respectivos usuarios, con puertos únicos y limitaciones de recursos individuales.
Monitoreo y diagnóstico: ¿quién consume la memoria y carga la CPU?
Cuando ejecuta varios servidores de juegos en un mismo VPS, es crucial tener herramientas para monitorear su rendimiento y consumo de recursos. Esto permitirá identificar y resolver rápidamente los problemas si un servidor comienza a "ahogar" a otro.
Herramientas de monitoreo (htop, glances, systemd-cgtop)
- `htop`: Un monitor de procesos interactivo que muestra el consumo de CPU, memoria, así como una lista de los procesos en ejecución. Ejecute `htop` en la terminal. Podrá ver cuánto CPU y RAM consume cada proceso, incluidos sus servidores de juegos.
- `glances`: Una herramienta de monitoreo más avanzada que proporciona información completa del sistema: CPU, RAM, E/S de disco, red, procesos, etc. Instálela con el comando `sudo apt install glances` y ejecute `glances`.
- `systemd-cgtop`: Esta herramienta es especialmente útil cuando utiliza cgroups para limitar recursos. Muestra el consumo de recursos por los grupos de control (cgroups) a los que están vinculadas nuestras unidades systemd. Ejecute `systemd-cgtop` para ver cuánto CPU y RAM consumen los grupos `corekeeper.service` e `icarus.service`. Esto permite rastrear con precisión cómo se cumplen los límites establecidos.
Registro y depuración
Systemd por defecto dirige la salida estándar y los errores (StandardOutput, StandardError) de sus unidades al journal de systemd. Puede ver los logs de cada servidor por separado:
sudo journalctl -u corekeeper.service -f
sudo journalctl -u icarus.service -f
El flag `-f` permite seguir los logs en tiempo real. Estos logs ayudarán a identificar errores de inicio, problemas de configuración o fallos en el funcionamiento del servidor de juegos.
¿Cuántos servidores de juegos pueden coexistir realmente en un mismo VPS?
La pregunta de cuántos servidores de juegos se pueden ejecutar en un mismo VPS no tiene una respuesta única. Depende en gran medida de varios factores.
Factores que influyen en el rendimiento
- El juego en sí: Algunos juegos, como Icarus, son significativamente más exigentes en CPU y RAM que otros, por ejemplo, Core Keeper o Terraria.
- Número de jugadores: Cuantos más usuarios jueguen simultáneamente, mayor será la carga en el servidor.
- Modificaciones y plugins: El contenido adicional puede aumentar considerablemente el consumo de recursos.
- Configuración del mundo: El tamaño del mundo, la densidad de objetos, la frecuencia de guardado, todo esto influye en la carga.
- Características del VPS: Número de vCPU, cantidad de RAM, tipo de disco (NVMe SSD es significativamente más rápido que un SSD normal) y ancho de banda de red.
Para 5-10 jugadores simultáneos en Core Keeper y 4-6 jugadores en Icarus (considerando sus requisitos), es suficiente con 4 vCPU, 8 GB de RAM y un disco NVMe de 80 GB.
| Jugadores (Core Keeper + Icarus) | vCPU | RAM | Disco | Ancho de banda | Precio estimado del VPS (Valebyte, $/mes) |
|---|---|---|---|---|---|
| 5 + 4 | 4 | 8 GB | 80 GB NVMe | 1 Gbps | Desde $25 |
| 10 + 6 | 6 | 12 GB | 120 GB NVMe | 1 Gbps | Desde $40 |
| 15 + 8 | 8 | 16 GB | 160 GB NVMe | 1 Gbps | Desde $60 |
| 20 + 10 | 12 | 24 GB | 240 GB NVMe | 1 Gbps | Desde $90 |
Los precios son orientativos para las ofertas de Valebyte en julio de 2024 y pueden variar según la promoción y la ubicación.
Recomendaciones para elegir un VPS
Para alojar con éxito dos servidores en un mismo VPS (especialmente los tan exigentes como Icarus), es crucial contar con un procesador potente con alta frecuencia de reloj y un disco NVMe rápido. Aunque el número de vCPU es importante, su rendimiento (frecuencia y arquitectura) juega un papel igualmente significativo. Valebyte ofrece VPS de alto rendimiento con discos NVMe, ideales para estas tareas.
Al elegir un plan de tarifas, siempre prevea un pequeño margen de recursos, especialmente de RAM. Si uno de los servidores utiliza periódicamente más memoria de lo esperado, esto puede provocar inestabilidad o la terminación de procesos. La presencia de cgroups con `MemoryMax` ayudará a prevenir estos problemas, pero es mejor tener suficiente memoria para todos los servicios en ejecución.
Preguntas frecuentes
¿Es posible ejecutar Core Keeper e Icarus en un mismo VPS sin conflictos?
Sí, es totalmente posible e incluso recomendable para ahorrar recursos. La clave es asegurar puertos de red únicos para cada servidor, utilizar usuarios de sistema y directorios de archivos separados, y configurar unidades systemd con limitaciones de recursos (CPUWeight, MemoryMax) a través de cgroups. Esto evitará conflictos y garantizará el funcionamiento estable de ambos servidores de juegos en la misma máquina.
¿Qué puertos debo abrir para Core Keeper e Icarus en un mismo VPS?
Para Core Keeper, normalmente se utilizan los puertos 27015 (UDP/TCP para el juego) y 27016 (UDP para consultas). Para Icarus, en nuestro escenario, hemos cambiado los puertos estándar a 7778 (UDP para el juego) y 27017 (UDP para consultas) para evitar conflictos con Core Keeper. Todos estos puertos deben permitirse a través del firewall, por ejemplo, UFW, para que los jugadores puedan conectarse.
¿Cuánta RAM y CPU se requieren para dos servidores de juegos?
Los requisitos dependen de los juegos y la cantidad de jugadores. Para Core Keeper (hasta 10 jugadores) e Icarus (hasta 6 jugadores) en un mismo VPS, se recomienda un mínimo de 8 GB de RAM y 4 vCPU. Icarus es más exigente en CPU y RAM, así que asegúrese de tener suficiente margen. Para un mayor número de jugadores o juegos más exigentes, puede ser necesario 12-16 GB de RAM y 6-8 vCPU.
¿Cómo limitar los recursos de un servidor de juegos para que no interfiera con otro?
Para limitar los recursos, utilice unidades systemd con directivas cgroups. Por ejemplo, `CPUWeight=500` establecerá el peso de la CPU, y `MemoryMax=4G` limitará el consumo de memoria RAM a 4 gigabytes para un servicio específico. Esto garantiza que un servidor no pueda utilizar todos los recursos disponibles y, por lo tanto, ralentizar o "ahogar" al otro.
¿Se puede usar systemd para el inicio y reinicio automático de los servidores?
Sí, systemd es la forma estándar y más eficiente de gestionar servicios en Linux. La creación de archivos de servicio para Core Keeper e Icarus permite no solo iniciarlos automáticamente al arrancar el sistema, sino también configurar el reinicio automático en caso de fallos (usando `Restart=always` y `RestartSec=5`), así como gestionar centralizadamente su estado y recursos.
Conclusiones
Ejecutar dos servidores de juegos, como Core Keeper e Icarus, en un mismo VPS no solo es una solución económicamente viable, sino también técnicamente factible. La clave del éxito reside en una cuidadosa separación de recursos mediante usuarios de sistema individuales, puertos de red únicos y una gestión eficiente con unidades systemd y cgroups. Se recomienda utilizar un VPS con discos NVMe y suficiente RAM (a partir de 8 GB) y vCPU (a partir de 4) para garantizar el funcionamiento estable de ambos servidores bajo carga.
VPS NVMe con activación en 60 segundos: acceso root completo, más de 20 ubicaciones, pago con tarjeta o cripto.
Elegir plan