rodri's place

Instalación de un Servidor ARK: Survival Evolved

Nota: Las líneas de código donde el prompt es "#" requieren de root para su ejecución, ya sea a través de su(1) o prefijando con sudo(8) cada programa de la línea.

Requerimientos

Parte I: SteamCMD

SteamCMD es un programa de Valve que se utiliza para la distribución de contenido relacionado con videojuegos de Steam, incluído servidores y sus extensiones.

Para instalarlo vamos a hacerlo por el método manual, ya que algunos paquetes daban problemas al instalar desde la PPA, y además es más fácil de gestionar.

Primero instalamos la versión de 32 bits de libgcc (necesitas actuar como root):

# apt install lib32gcc-s1

Luego creamos un directorio para almacenar el programa (para ello tienes que actuar como el usuario que va a arrancar el servidor, por ejemplo el usuario que añadiste al instalar Ubuntu):

$ mkdir $HOME/steam

Ahora descargamos el programa y lo desempaquetamos:

$ cd $HOME/steam
$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
$ tar xvf steamcmd_linux.tar.gz

Listo. A por el siguiente paso.

Parte II: Instalando ARK

Ahora vamos a descargar ARK a través de SteamCMD. Para ello hace falta autenticarse con una cuenta de Steam, ya que ARK no soporta la instalación a través de un usuario anónimo:

$ cd $HOME/steam
$ ./steamcmd.sh
Steam> force_install_dir /home/<TU-USUARIO>/server
Steam> login <TU-USUARIO-DE-STEAM>
Password: ****
Steam> app_update 376030

Esto le va a llevar un buen rato, ya que no sólo tiene que descargar todos los archivos, si no verificar que la descarga ha ido correctamente para cada uno de ellos. En mi caso duró unos 50 minutos; tu experiencia puede ser distinta.

Parte III: Instalación del servicio de systemd

Ya tenemos instalado el servidor, pero no hemos terminado. Lo siguiente es expandir algunos de los límites preestablecidos por el sistema para sus procesos (programas en ejecución). Nos interesa la cantidad de descriptores de fichero abiertos en cada uno—no sé para qué ARK necesita tantos, seguramente para enviar estadísticas a todo quisque :/.

# echo "fs.file-max=100000" >> /etc/sysctl.conf && sysctl -p
# echo "* soft nofile 1000000" >> /etc/security/limits.conf
# echo "* hard nofile 1000000" >> /etc/security/limits.conf
# echo "session required pam_limits.so" >> /etc/pam.d/common-session

Hecho esto, toca crear el servicio de systemd:

# cat <<EOF >/lib/systemd/system/ark.service
[Unit]
Description=ARK Survival Evolved
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3
User=<TU-USUARIO>
Group=<TU-USUARIO>
LimitNOFILE=100000
ExecStartPre=/home/<TU-USUARIO>/steam/steamcmd.sh +force_install_dir /home/<TU-USUARIO>/server +login <TU-USUARIO-DE-STEAM> +app_update 376030 +quit
ExecStart=/home/<TU-USUARIO>/server/ShooterGame/Binaries/Linux/ShooterGameServer <NOMBRE-DEL-MAPA>?listen?SessionName=<NOMBRE-DEL-SERVIDOR> -server -log -crossplay -NoBattlEye
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s INT $MAINPID
[Install]
WantedBy=multi-user.target
EOF

Refrescamos la DB de servicios de systemd y lo habilitamos:

# systemctl daemon-reload
# systemctl enable ark.service
# systemctl start ark

Y ya lo tenemos. Ahora puedes ir al cliente de ARK y buscar tu servidor en la lista. Recuerda establecer SESSION FILTER a LOCAL si lo haces desde la misma LAN.

De momento el servidor arranca con la configuración por defecto, por lo que no tiene contraseña, así que cualquiera puede entrar. Si esta no es tu intención, tumba el servidor con:

# systemctl stop ark

y continúa con la siguiente parte.

Parte IV: Configuración (Opcional)

La configuración del servidor de ARK se encuentra en /home/<TU-USUARIO>/server/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini. Para establecer una contraseña a compartir con tu círculo de confianza, hay que añadir las siguientes líneas al final de archivo—yo lo pongo a modo de cat(1):

$ cat <<EOF >>/home/<TU-USUARIO>/server/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini
[ServerSettings]
ServerPassword=<CONTRASEÑA-A-COMPARTIR>
ServerAdminPassword=<CONTRASEÑA-A-ESCONDER>
EOF

La <CONTRASEÑA-A-ESCONDER> la necesitarás si utilizas comandos de consola para manipular los parámetros de ARK en vivo, mientras juegas.

Finalmente arrancamos ARK:

# systemctl start ark

Si quieres cambiar los parámetros por defecto, debes hacerlo desde este mismo archivo, ya sabes: multiplicadores, duración de determinados eventos, límites, etc. Normalmente en la sección [ServerSettings].

Referencias

  1. https://www.linode.com/docs/guides/install-steamcmd-for-a-steam-game-server
  2. https://www.linode.com/docs/guides/create-an-ark-server-on-ubuntu/
  3. https://ark.fandom.com/wiki/Dedicatedserversetup
  4. https://developer.valvesoftware.com/wiki/DedicatedServersList#LinuxDedicatedServers