Post rápido – para ir al grano (Pendiente de mejorarlo)
Dado que el usuario creado por la interfaz del servidor no tiene permisos para instalar programas, se hace desde root pero luego se ejecutan con la cuenta de usuario que se ha dado de alta con los privilegios restringidos.
Doy por hecho que conoces el uso del SSH y de las herramientas de acceso como putty en windows o herramientas similares. No dudes en consultar en los comentarios cualquier duda que te surja.
Desde root:
Añadir los repositorios multiverse al final del fichero
# nano /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu bionic main universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates main universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-security main universe multiverse
Actualizar repositorios
# apt-get update
Instalar el programa
# apt-get install steamcmd
Salir de root y entramos con la cuenta de usuario normal
Llamamamos al steamcmd con estos parámetros para instalar el servidor (desconozco por qué hay que indicarle que es una plataforma windows, supongo por por dar compatibilidad en un sistema operativo diferente)
$ steamcmd +@sSteamCmdForcePlatformType windows
Tras ello se accede a la consola de Steam
Nos logueamos
Steam> login TU_NOMBRE_DE_USUARIO_DE_STEAM
Te pedirá la contraseña, y si hay factor de doble autenticación, sms o codigo enviado al e-mail lo metemos.
Si te ha logueado correctamente, te guardará las credenciales, de forma que si tienes que entrar las veces que sean necesarias para actualizar el servidor por futuras actualizaciones u otros motivos, solo con poner el comando inicial de arriba, accederá sin pedir contraseña ni factor de doble autenticación.
Proseguimos indicando la ruta donde queremos almacenar los ficheros del servidor
Steam> force_install_dir ./assetto
Instalamos el servidor, indicando el ID que el servidor dedicado tiene en Steam (Esto puede averiguarse en http://www.steamdb.info)
Steam> app_update 302550
Salimos de steamcmd
Steam> exit
Una vez en la consola nos vamos a la ruta del servidor de assetto corsa
Para evitar que al cerrar la ventana del SSH se nos cierre el servidor, vamos a usar la aplicación screen.
Screen suele estar instalado, sino lo instalamos:
$ apt-get install screen
Iniciamos una sesión de screen (Esto solo se hace una vez, de lo contrario duplicamos las sesiones)
$ screen -S AssettoServer
Tras ello tenemos una sesión y una ventana donde empezar a ejecutar el servidor, como vamos a tener varios servidores vamos a crear tantas ventanas como servidores queramos tener en ejecución, todo ello dentro de la unica sesión de screen, para ello hacemos lo siguiente presionando una sencilla combinación de teclas:
Le ponemos un nombre a la ventana
$ Crtl+a Shift+a
Borramos la palabra Bash y ponemos el nombre que queramos, por ejemplo Assetto Corsa Server 1 y pulsamos intro.
Ahora creamos una segunda ventana
$ Crtl+a c
Le ponemos el nombre a la ventana con el comando de arriba y lo llamamos Assetto Corsa Server 2 y pulsamos intro
Para alternar entre distintas ventanas
$Crtl+a Shift+» (comillas dobles situadas en el numero 2 del teclado alfabético)
Con las fechas y el intro seleccionamos la ventana de screen que queremos y ya solo hay que ubicarse dentro de la carpeta donde esta el ejecutable del servidor acServer
Antes de nada, tenemos que disponer de los dos ficheros de configuración por cada servidor / circuito que queramos tener, para ello el truco está en ejecutar el acserver.exe sobre un equipo con windows, y desde su interfaz visual configurar los detalles para luego EXPORTAR los ficheros y meterlos en la carpeta cfg que está dentro de la ruta dada al acserver de linux.
NOTA: Hay dos ficheros, uno es el server_config.ini y el otro el entry_list.ini, dentro del server_config.ini tenemos casi al comienzo 3 puertos, con sus respectivos números, estos puertos udp, tcp (9600) y http (8081) tienen que estar abiertos, y puedes respetar los que están por defecto. Ahora bien, como queremos dos servidores y ambos tienen circuitos diferentes, tenemos que subir dos ficheros con dichas configuraciones en las que los puertos no sean los mismos que los del server_config.ini, ya que entrarían en conflicto y no funcionarían.
Yo renombro los ficheros a server_config1.ini y server_config2.ini, y los mismo con los entry_list1.ini y entry_list2.ini, cada server_config.ini tiene su fichero pareja entry_list.ini y los edito incrementando +1 el número de puerto para evitar el conflicto, udp,tcp (9601) y http (8082).
Tras ello arrancamos el acserver con unos comandos personalizados:
$ ./acServer -c /cfg/server_config1.ini -e entry_list1.ini
Cambiamos con Crtl+a Shift+» a la otra ventana y ejecutamos lo mismo pero cambiando los ficheros de configuración:
$ ./acServer -c /cfg/server_config2.ini -e entry_list2.ini
Si al final de la ejecución, nos sale OK y empiezan a salir lineas como estas, significa que está funcionando todo bien
Serve JSON took 38 ms
PAGE: /JSON|UN_NUMERO_LARGO
Por último, podemos crear una tercera ventana de screen para tener controlados los recursos de la máquina en tiempo real, para ver si el sistema aguanta la carga cuando se llenen los dos servidores, usando la herramienta htop
Creamos la ventana nueva
$ Crtl+a c
le cambiamos el nombre
$ Crtl+a Shift+a
Borramos Bash y ponemos por ejemplo HTOP
Ejecutamos HTOP
$ htop
Para salir de uno de los servidores, podemos hacer Crtl+c y el servidor se corta, accediendo a la consola, si le damos flecha arriba podemos cargar la linea con el comando para arrancar de nuevo el servidor, por si hacemos modificaciones al fichero de configuración y queremos reiniciar la maquina.
Por último, si creamos mas ventanas de screen de las necesarias, solo hay que entrar en la ventana que queremos cerrar y escribir exit.
IMPORTANTE:
Para salirnos sin cerrar los servidores escribimos el comando:
Crtl+a d
De esta forma podemos cerrar la ventana remota del servidor y todo seguirá funcionando, ya que si os dais cuenta, esta combinación de teclas no interfiere con la ejecución del servidor, aunque nos esté mostrando lineas de texto ilegibles para nosotros.
Para entrar a screen cuando nos reconectamos al servidor, no hay que iniciar una sesión, solo hay que abrir la que creamos en su momento, para ello usamos el comando:
$ screen -r
y ya podemos navegar por las ventanas del screen con el Crtl+a Shift+»