7 Days to Die incluye un servidor dedicado para Linux que se descarga de forma anónima con SteamCMD. Con tu propio servidor el mundo sigue activo aunque el anfitrión se desconecte, y puedes controlar la dificultad, la frecuencia de las hordas, el tamaño del mapa y quién tiene permisos de administrador. En este tutorial instalarás el servidor de 7 Days to Die en Ubuntu 24.04, configurarás serverconfig.xml, lo ejecutarás como servicio systemd y lo administrarás por telnet.

Requisitos previos

Para seguir esta guía necesitas:

  • Un servidor con Ubuntu 24.04 LTS (x86_64), por ejemplo un VPS de CubePath. Calcula 4 núcleos de CPU y 8 GB de RAM para unos 8 jugadores; los mapas grandes y las hordas numerosas necesitan más memoria.
  • Unos 20 GB libres en disco.
  • Un usuario no root con privilegios sudo.
  • Una copia de 7 Days to Die en Steam, en la misma versión que el servidor.

Paso 1: Instalar SteamCMD

SteamCMD está en el repositorio multiverse de Ubuntu y necesita bibliotecas de 32 bits, así que activa ambos primero:

sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update

Instala SteamCMD y el cliente telnet, que usarás para administrar el servidor. Acepta la licencia de Steam seleccionando I AGREE cuando se te pida:

sudo apt install steamcmd telnet

Comprueba que el binario existe:

ls -l /usr/games/steamcmd

Paso 2: Crear un usuario dedicado

El servidor debe ejecutarse con un usuario sin privilegios. Crea el usuario steam y cambia a él:

sudo useradd -m -s /bin/bash steam
sudo -iu steam

Paso 3: Descargar el servidor

El servidor dedicado de 7 Days to Die es la aplicación de Steam 294420. Recuerda que +force_install_dir debe ir antes de +login:

/usr/games/steamcmd +force_install_dir /home/steam/7dtd +login anonymous +app_update 294420 validate +quit
Success! App '294420' fully installed.

Comprueba que el binario existe:

ls -l /home/steam/7dtd/7DaysToDieServer.x86_64

Paso 4: Configurar serverconfig.xml

La configuración está en serverconfig.xml, pero SteamCMD sobrescribe ese archivo al actualizar con validate. Copia la plantilla a un archivo propio fuera del directorio del juego y edita la copia:

cp /home/steam/7dtd/serverconfig.xml /home/steam/serverconfig.xml
nano /home/steam/serverconfig.xml

Cada ajuste es una línea <property name="..." value="..."/>. Cambia al menos estas propiedades, que ya existen en el archivo:

<property name="ServerName" value="CubePath 7DTD"/>
<property name="ServerPassword" value="tu_contraseña_servidor"/>
<property name="ServerPort" value="26900"/>
<property name="ServerVisibility" value="2"/>
<property name="ServerMaxPlayerCount" value="8"/>
<property name="GameWorld" value="RWG"/>
<property name="WorldGenSeed" value="cubepath"/>
<property name="WorldGenSize" value="6144"/>
<property name="GameName" value="MiPartida"/>
<property name="GameDifficulty" value="2"/>
<property name="TelnetEnabled" value="true"/>
<property name="TelnetPort" value="8081"/>
<property name="TelnetPassword" value="tu_contraseña_telnet"/>

Qué hacen:

  • ServerPassword: la contraseña para entrar. Déjala vacía para un servidor abierto.
  • ServerVisibility: 2 lo muestra en la lista pública, 1 solo a amigos y 0 lo oculta.
  • GameWorld: Navezgane usa el mapa fijo creado a mano; RWG genera un mapa aleatorio a partir de WorldGenSeed y WorldGenSize (un tamaño mayor, como 8192, tarda más en generarse y consume más memoria).
  • GameName: el nombre de la partida guardada. Cambiarlo crea una partida nueva en el mismo mundo.
  • GameDifficulty: de 0 (la más fácil) a 5 (la más difícil).
  • TelnetEnabled, TelnetPort y TelnetPassword: la consola de administración remota. Sustituye tu_contraseña_telnet por una contraseña larga.

El resto del archivo incluye opciones como BloodMoonFrequency (cada cuántos días llega la horda) o DayNightLength. Cada propiedad lleva un comentario que explica sus valores.

Comprueba que el XML sigue siendo válido tras editarlo:

python3 -c "import xml.dom.minidom as m; m.parse('/home/steam/serverconfig.xml'); print('XML válido')"

Vuelve a tu usuario con sudo:

exit

Paso 5: Crear el servicio systemd

Crea la unidad para que el servidor arranque con el sistema, se reinicie si falla y se actualice antes de cada arranque:

sudo nano /etc/systemd/system/7dtd.service
[Unit]
Description=7 Days to Die dedicated server
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/7dtd
Environment=LD_LIBRARY_PATH=/home/steam/7dtd
ExecStartPre=-/usr/games/steamcmd +force_install_dir /home/steam/7dtd +login anonymous +app_update 294420 +quit
ExecStart=/home/steam/7dtd/7DaysToDieServer.x86_64 -quit -batchmode -nographics -dedicated -configfile=/home/steam/serverconfig.xml -logfile /dev/stdout
TimeoutStartSec=900
TimeoutStopSec=120
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target

LD_LIBRARY_PATH apunta al directorio del servidor, que es lo que hace el script startserver.sh incluido. -logfile /dev/stdout envía el log del juego al journal de systemd en lugar de a un archivo con fecha.

Recarga systemd y arranca el servidor:

sudo systemctl daemon-reload
sudo systemctl enable --now 7dtd

Paso 6: Comprobar que el servidor funciona

La primera vez, si usas RWG, el servidor genera el mapa, lo que puede tardar entre 5 y 20 minutos según el tamaño y la CPU. Sigue el log:

sudo journalctl -u 7dtd -f

Cuando el servidor esté listo verás una línea como esta:

... INF [Steamworks.NET] GameServer.LogOn successful, SteamID=..., public IP=...

Pulsa CTRL+C para salir y comprueba los puertos:

sudo ss -tulpn | grep 7DaysToDie

Paso 7: Abrir el cortafuegos

7 Days to Die usa el puerto indicado en ServerPort en TCP y UDP, y los tres siguientes en UDP. No abras el puerto de telnet (8081), porque la consola da control total del servidor; úsalo solo desde el propio servidor o por un túnel SSH.

sudo ufw allow 26900/tcp
sudo ufw allow 26900:26903/udp
sudo ufw status

Para conectarte, abre el juego, entra en Unirse a una partida, pulsa Conectar a IP y escribe la IP del servidor con el puerto 26900. Si usaste ServerVisibility 2, también aparecerá en la lista de servidores.

Paso 8: Administrar el servidor por telnet

La consola telnet acepta los mismos comandos que la consola del juego. Conéctate desde el propio servidor e introduce la contraseña de TelnetPassword cuando te la pida:

telnet 127.0.0.1 8081

Comandos útiles:

  • lp: lista los jugadores conectados, con su ID de plataforma (por ejemplo Steam_76561198000000000).
  • admin add Steam_76561198000000000 0: concede el nivel de permisos máximo (0) a un jugador. Los niveles más altos tienen menos permisos.
  • kick <jugador> y ban add <jugador> 1 year: expulsa o banea.
  • say "mensaje": envía un aviso a todos los jugadores.
  • saveworld: guarda el mundo inmediatamente.
  • shutdown: guarda y apaga el servidor.

Para salir de telnet escribe exit. La lista de administradores se guarda en serveradmin.xml, en el directorio de partidas.

Paso 9: Hacer copias de seguridad

Las partidas y los mapas generados están en /home/steam/.local/share/7DaysToDie/: el subdirectorio Saves contiene el progreso y GeneratedWorlds los mapas RWG. Crea una tarea cron para el usuario steam que archive ambos cada noche y borre las copias de más de 7 días:

sudo -u steam mkdir -p /home/steam/backups
sudo -u steam crontab -e
0 5 * * * tar -czf /home/steam/backups/7dtd-$(date +\%F).tar.gz -C /home/steam .local/share/7DaysToDie serverconfig.xml && find /home/steam/backups -name '7dtd-*.tar.gz' -mtime +7 -delete

Los % van escapados porque cron interpreta un % sin escapar como salto de línea. Ejecuta el tar a mano una vez para comprobar que funciona y copia las copias fuera del servidor con regularidad. Para restaurar, detén el servicio, extrae la copia en /home/steam como usuario steam y arráncalo de nuevo.

Solución de problemas

  • El servidor tarda mucho en arrancar la primera vez. Es la generación del mapa RWG. Espera a ver GameServer.LogOn successful en el log. Si se queda sin memoria, prueba con un WorldGenSize menor.
  • Los cambios en la configuración no se aplican. Comprueba que editas /home/steam/serverconfig.xml, que es el que usa -configfile, y reinicia con sudo systemctl restart 7dtd.
  • Los jugadores ven un error de versión. El servidor no está actualizado. Reinicia el servicio para que ExecStartPre descargue la actualización. Si el juego pasa a una versión mayor, las partidas antiguas pueden no ser compatibles; cambia GameName para empezar una nueva.
  • Nadie puede conectarse. Revisa que 26900/tcp y 26900-26903/udp están abiertos en UFW y en cualquier cortafuegos externo.

Conclusión

Tu servidor de 7 Days to Die ya funciona en Ubuntu 24.04 como servicio systemd, se actualiza en cada reinicio, se administra por telnet y guarda copias nocturnas. Como siguientes pasos puedes ajustar la frecuencia de las hordas y la dificultad en serverconfig.xml, activar el panel web de administración solo en local o instalar mods en el directorio Mods del servidor.