Saltar al contenido principal

Servidor Dedicado: Configura tu Servidor de Juegos Dedicado como un Servicio en Linux

Esta guía fue creada con los siguientes productos:

(Los detalles pueden variar según los productos de diferentes proveedores, pero los conceptos principales permanecen igual)

Introducción

Los servicios son una parte fundamental de Linux y se refieren a un proceso o aplicación que se ejecuta en segundo plano, ya sea una tarea predefinida o basada en eventos. Esto ofrece varios beneficios, incluyendo el lanzamiento automático del servidor al iniciar, actualizaciones automáticas, gestión sencilla y acceso a los logs, ¡y mucho más! En esta guía, exploraremos el proceso para crear un servicio para tu servidor de juegos dedicado.

Preparación

Para empezar, conéctate a tu servidor dedicado vía SSH. Usa nuestra guía de Acceso Inicial SSH si necesitas ayuda para hacerlo.

También deberías seguir alguna de nuestras guías de servidores de juegos dedicados en esta sección para instalar y configurar un servidor de juegos en tu sistema Linux. En esta guía, usaremos el servidor de juegos dedicado Palworld como ejemplo, pero las instrucciones se pueden adaptar para todas nuestras guías.

Creando un Servicio

Comienza creando un nuevo archivo de servicio para el servidor de juegos dedicado que hayas configurado. Reemplaza [your_game] con el nombre que prefieras. Recomendamos usar el nombre del juego para mantener todo organizado, por lo que usaremos palworld.service.

sudo nano /etc/systemd/system/[your_game].service

Configurando el Servicio

Con el editor nano abierto, copia el siguiente contenido base del archivo, que es una plantilla de servicio que puedes reutilizar. Tenemos dos versiones, una para guías que usan SteamCMD y otra para juegos que no usan SteamCMD.

[Unit]
Description=[your_server] Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/[your_server_folder]
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/[your_server_folder]' +login anonymous +app_update [your_game_steamid] +quit
ExecStart=/home/steam/[your_server_folder]/[your_path_to_start_file]
Restart=always

[Install]
WantedBy=multi-user.target

Vamos a desglosar el contenido del archivo para entenderlo mejor:

  • Description: Puede ser cualquier cosa, útil para distinguir fácilmente el propósito del servicio.
  • User: Siguiendo nuestras guías, deberías haber configurado un usuario separado steam para usar con SteamCMD, o el usuario gameservers para juegos sin SteamCMD. Si no, debe ser el usuario que ejecutará el servicio.
  • WorkingDirectory: Es la ruta al directorio principal que contiene todo lo que el servicio necesita.
  • ExecStartPre (solo SteamCMD): En este campo, configuramos el mismo comando de instalación de SteamCMD que antes, que se ejecutará cada vez que el servidor se reinicie para asegurarse de que esté actualizado. Debes copiar esto de la guía respectiva del servidor de juegos dedicado, o reemplazar los valores manualmente con los del juego.
  • ExecStart: Este campo determina la tarea predefinida que debe ejecutarse con el servicio. Nuevamente, debes copiar la ruta de la guía respectiva del servidor de juegos dedicado, o reemplazar los valores manualmente para navegar al archivo de inicio.
Capa de Compatibilidad Wine

Para juegos que requieren la capa de compatibilidad Wine para poder ejecutarse, debes incluir los comandos xvfb-run y wine dentro del parámetro ExecStart. Por ejemplo, para V-Rising:

/usr/bin/xvfb-run wine /home/steam/V-Rising-Server/start_server.bat

También asegúrate de que tu comando de instalación ExecStartPre de SteamCMD incluya el parámetro +@sSteamCmdForcePlatformType si es necesario para forzar una versión de plataforma.

Con todos los valores adaptados a tu servidor de juegos dedicado, guarda el archivo y sal de nano usando CTRL + X, luego Y para confirmar y finalmente ENTER.

Usando nuestro ejemplo de Palworld, el archivo quedaría así:

[Unit]
Description=Palworld Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/Palworld-Server
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/Palworld-Server' +login anonymous +app_update 2394010 +quit
ExecStart=/home/steam/Palworld-Server/PalServer.sh
Restart=always

[Install]
WantedBy=multi-user.target

Gestionando el Servicio

Con el archivo de servicio creado, necesitas habilitarlo. En el ejemplo palworld.service, [your_service] se reemplaza simplemente por palworld.

sudo systemctl enable [your_service]
consejo

Si en algún momento haces cambios en tu archivo de servicio, asegúrate de ejecutar systemctl daemon-reload después para que los cambios tengan efecto.

Ahora puedes iniciar el servidor con el comando systemctl start. De igual forma, puedes detener y reiniciar el servidor con comandos similares.

sudo systemctl start [your_service]
sudo systemctl stop [your_service]
sudo systemctl restart [your_service]
consejo

Para ver detalles sobre el servicio, usa el comando systemctl status. Si necesitas logs para depurar, usa journalctl -u [your_service].service para ver los logs más recientes del servicio.

Por último, si alguna vez quieres evitar que el servicio se inicie automáticamente, simplemente deshabilítalo.

sudo systemctl disable [your_service]

Conclusión

Ya configuraste con éxito un servicio para tu servidor de juegos dedicado. Ahora el servidor arrancará automáticamente al iniciar el servidor dedicado.

También aprendiste sobre el contenido del archivo de servicio y cómo gestionar el servicio usando varios comandos.