Todas las guías que encontré sobre la configuración de un servidor Valheim dedicado en Linux tenían lagunas en un lugar u otro, así que decidí documentar mi propia configuración para beneficio de los demás. Esta guía está dirigida a los usuarios que desean configurar el servidor dedicado de Valheim en un servidor Linux sin periféricos. Si simplemente desea ejecutar esto en un escritorio siempre activo con un inicio de sesión gráfico, es posible que esta guía no le resulte tan útil.
Esta guía está escrita para Debian 11 (bullseye), pero gran parte, si no toda, también se aplicará a Ubuntu, ya que se basa en Debian. El crédito tiene que ir al Guía de servidores de alojamiento en la wiki de Valheim Fandom para obtener información básica sobre cómo invocar el ejecutable del servidor, qué puertos deben estar expuestos al mundo exterior y las opciones de configuración.
Instalar el juego a través de SteamCMD
SteamCMD es básicamente Steam sin cabeza para servidores sin cabeza. Lo necesitamos para descargar el Servidor Dedicado Valheim.
Configurar multiarco
Debian proporciona SteamCMD, pero como un paquete i386 (x32 de 86 bits), por lo que deberá agregar la arquitectura i386 a dpkg en su sistema para instalar los paquetes i386. (Para más información, ver MultiArch/HOWTO en el wiki de Debian.) Para hacer esto, ejecute los siguientes comandos.
$ sudo dpkg --add-architecture $ sudo apt-get update
Instalar SteamCMD
Ahora instale SteamCMD en sí.
$ sudo apt-get instalar steamcmd
Configurar un usuario y un grupo separados para Steam
Siempre es mejor ejecutar servicios como un usuario y grupo dedicado de todo lo demás en su sistema, de modo que si un servicio se ve comprometido, un atacante solo puede acceder a los archivos de ese servicio. (Más adelante fortaleceremos aún más el servicio del sistema Valheim). Normalmente, crearía un usuario de "sistema" para los servicios del sistema, pero Steam, incluso el SteamCMD sin cabeza, no parece comportarse correctamente a menos que se ejecute en un entorno de usuario normal. (Consulte la página man adduser(8) para obtener detalles sobre cómo un usuario del sistema es diferente de un usuario normal).
Cree el usuario de Steam con el comando "adduser", deshabilitando los inicios de sesión ya que solo vamos a usar esta cuenta a través de "sudo".
$ sudo adduser --disabled-login steam
Ejecutar SteamCMD
Lamentablemente, SteamCMD no tiene una interfaz muy buena, por lo que la siguiente parte será un poco incómoda para aquellos de ustedes que ya están familiarizados con la línea de comandos de Linux. Ejecute los comandos de la siguiente manera (se omite la salida del comando).
$ sudo -iu steam # Abre un shell de inicio de sesión como usuario de "steam". Consulte la página man sudo(8). $ steamcmd Steam>iniciar sesión anónimo Steam>force_install_dir ./valheim/ # El servidor Valheim tiene un ID de aplicación diferente al del cliente. Mira esto liga. Steam>app_update 896660 Steam>salir ^C
Si el comando "salir" simplemente deja el programa colgando sin aviso, presione Ctrl+C para salir por completo. Esto parece ser un error en SteamCMD.
Ahora que tiene instalado el servidor dedicado de Valheim, es hora de configurar el servicio para ejecutarlo.
Ejecute el servidor Valheim a través de Systemd
El servidor dedicado de Valheim viene con una secuencia de comandos contenedora para ejecutar el servidor, pero vamos a ejecutar el ejecutable del servidor directamente para nuestra unidad de servicio systemd.
La unidad Systemd
Escriba el siguiente código en el archivo “/usr/local/lib/systemd/system/valheim.service”.
[Unidad] Descripción=Valheim Dedicated Server After=network-online.target [Servicio] Tipo=exec Usuario=steam Group=steam Environment="LD_LIBRARY_PATH=/home/steam/valheim/linux64" "SteamAppId=892970" ExecStart=/home /steam/valheim/valheim_server.x86_64 -name "Olvidé nombrar mi servidor" -world "Midgard" -port 2456 -password "secret" # Configuración de seguridad LockPersonality=true NoNewPrivileges=true RestrictRealtime=true RestrictNamespaces=true SystemCallArchitectures=native SystemCallFilter =~@obsoleto @clock @debug @module @mount @privileged @reboot @setuid @cpu-emulation CapabilityBoundingSet= RestrictAddressFamilies=AF_INET AF_INET6 RestrictSUIDSGID=true PrivateDevices=true PrivateTmp=true PrivateMounts=true PrivateUsers=true ProtectControlGroups=true ProtectHome=tmpfs BindPaths =/home/steam ProtectKernelModules=true ProtectKernelTunables=true ProtectSystem=full ProtectClock=true ProtectKernelLogs=true ProtectProc=invisible ProtectHostname=true RemoveIPC=true InaccessiblePaths=/srv/
Una explicación completa de las directivas de systemd utilizadas en esta unidad está más allá del alcance de esta guía, pero para aquellos interesados, las páginas man relevantes son las siguientes.
- systemd.unidad(5)
- systemd.servicio(5)
- systemd.exec (5)
- systemd.resource-control(5)
Especificando un mundo
El argumento "-mundo" es opcional; si lo omite, el servidor generará un mundo para usted a partir de una semilla aleatoria en la primera ejecución.
De lo contrario, especifica el nombre de un mundo a usar, que debe existir en el directorio “/home/steam/.config/unity3d/IronGate/Valheim/worlds/”. En la unidad systemd anterior, especificamos el mundo llamado "Midgard", por lo que debe existir un archivo llamado "/home/steam/.config/unity3d/IronGate/Valheim/worlds/Midgard.fwl". Esto le permite usar un mundo copiado de otro lugar.
Si desea utilizar un mundo existente desde su PC, manteniendo su progreso, también debe copiar el archivo ".db" correspondiente en la misma ubicación que el archivo ".fwl".
Si desea utilizar un mundo nuevo pero con una semilla específica, debe crear el mundo con el cliente del juego, ya que el servidor no proporciona ninguna forma de especificar una semilla para la creación del mundo inicial.
Habilitación del servicio
Eso define el servicio, pero systemd no lo sabe hasta que recarga unidades. Haz esto corriendo
$ sudo systemctl daemon-recargar
Luego habilitarlo con
$ sudo systemctl habilitar valheim.servicio
Ahora el servidor de Valheim se iniciará automáticamente al arrancar, pero no hasta que la red esté activa (eso es lo que hace la línea “After=network-online.target”). Para iniciarlo ahora sin reiniciar, ejecute
$ sudo systemctl start valheim.servicio
Eso es todo lo que estamos compartiendo hoy para este Valheim guía. Esta guía fue originalmente creada y escrita por aidalgol. En caso de que no actualicemos esta guía, puede encontrar la última actualización siguiendo este liga.