Cómo desplegar un servidor de CSGO (Counter Strike Global Offensive) en Docker
Te muestro como configurar un servidor de CSGO para que juegues con tus amigos a través de Internet, todo, de manera rápida y fácil en Docker.
Estamos en tiempos donde la comunidad científica, médicos y Estados están trabajando a contrarreloj para que el COVID-19 no se siga desparramando. Nosotros, como simples ciudadanos, podemos colaborar no saliendo de casa, si por algún motivo debemos hacerlo, que sea por cosas puntuales, evitando la aglomeraciones.
Pero Nacho, Si estoy en casa todo el día me aburro. ¿Qué hago?
Eso es un tema, es verdad, a mi particularmente me toca trabajar de manera remota, así que gran parte del día está dedicada a eso, el resto lo divido entre un curso de GO que estoy haciendo en Udemy y otra parte jugando al Counter Strike con compañeros de trabajo. Sobre esto último, es este artículo. Vamos a ver como crear un servidor de CSGO para jugar con amigos.
¿Qué necesitamos?
Lo primero que necesitamos es tener un servidor que sea accesible a través de Internet. Esto puede ser un VPS en una empresa de hosting local, qué es lo más recomendable por un tema de latencia hacia al servidor. Recorda que mientras menos tengas con ese servidor, mejor va a "performar" el juego y tu experiencia con él.
Acerca de los requerimientos, el este contenedor lo estoy corriendo en un servidor que tiene 2GB de RAM, 2 vCPU y 200GB de disco, que para la cantidad de personas que somos es más que suficiente.
Lo otro que necesitamos es un "token" que lo sacamos desde esta página.
Este "token" va a hacer la llave que nos va a autenticar contra los servidores de Steam, esto va a permitir que el servidor se pueda acceder a través de Internet. Si no especificamos esta llave en el servidor, este puede ser accesible pero solo de manera local. Esto puede servir si estás montando el servidor en tu casa y todos se juntan a hacer una Lan Party (No recomendable, evitar aglomeraciones).
Atención: No divulgues la llave, es como una contraseña.
Una vez que tenemos estos dos requerimientos y por supuesto, una instancia de sistema operativo parcheado, con firewall activado y Docker corriendo. Estamos listos para desplegar.
¡Ya despliega el maldito contenedor!
Bueno che, estoy aprovechando para concientizar y explicar bien que se necesita, no me apuren.
Ahora si, para desplegar vamos a usar la imágen de este Github, donde no solo tienen la imágen para desplegar un servidor de Global Offensive, sino también del viejo Counter 1.6.
Ahora bien, lo vamos a desplegar con el famoso "docker run" lo que hay que tener en cuenta es que en la misma línea, podemos especificar opciones y modos de juego. Por ejemplo, para solo arrancar el servidor y que esté pronto, corremos los siguiente:
docker run -d -it -p 27015:27015/udp sourceservers/csgo:latest 'srcds_linux -game csgo -port 27015 +game_type 1 +game_mode 2 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount "tu-token-steam"'
Lo que hacemos con este "run" es desplegar el contenedor con lo siguiente:
- Corremos el contenedor como un "demonio", de manera interactiva.
- Exponemos el puerto 27015/udp.
- Indicamos la imágen a descargar "sourceservers/csgo:latest"
- Con "+game_type" y "+game_mode" indicamos el tipo y modo de juego. En el ejemplo está el modo "Deathmatch" pero acá les dejo la lista completa de los modos de juego que pueden usar.
- Con "+mapgroup" el grupo de mapas que quiero.
- Con "+map" especificamos el primer mapa, en este caso es "de_dust2"
- Por último pero no menos importante con "+sv_setsteamaccount" especificamos sin comillas el "Token" de Steam.
Ahora bien, esas son algunas opciones. Por ejemplo, así como está va a crear un servidor para 16 jugadores. Si solo entra uno, el resto de "slots" los va a rellenar con Bots. En mi caso, no los quería, así como también quería habilitar a los demás usuarios a usar la consola y especificar un nombre de servidor que sea "identificable" (Esto es importante, porque tu "servidor" aparecerá en la lista de servidores comunitarios en el juego) con lo cual, el comando, como lo tengo corriendo, quedó así:
docker run -d -it -p 27015:27015/udp sourceservers/csgo:latest 'srcds_linux -game csgo -port 27015 +game_type 1 +game_mode 2 +mapgroup mg_active +map de_dust2 -nobots -console -usercon +hostname "CSGO_40tena_by_cduser.com" +sv_setsteamaccount "mi-token"'
Si querés conocer todos los comandos que podés pasarle a servidor en el "docker run" podés verlos en este enlace.
Para ir cerrando les dejo la Wiki de Valve donde hay más información sobre cómo correr un servidor dedicado.
Bueno, eso es todo, aunque lo seguiré toqueteando por que quiero hacer dos cosas, armar un "docker-compose.yml" y montar un volumen para que se pueda meter mano directamente a los archivos de configuración y que esos cambios persistan, si lo logro hacer, seguramente verán otro artículo al respecto.
Espero que esto te sirva para pasar un poco de tiempo con amigos, sin necesidad de estar todos juntos y así, atravesar este tiempo difícil.
Si no tenés ganas de montar un servidor y unirte a una partida, te invito que te conectes al servidor de CDUser.