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:2lo muestra en la lista pública,1solo a amigos y0lo oculta.GameWorld:Navezganeusa el mapa fijo creado a mano;RWGgenera un mapa aleatorio a partir deWorldGenSeedyWorldGenSize(un tamaño mayor, como8192, 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: de0(la más fácil) a5(la más difícil).TelnetEnabled,TelnetPortyTelnetPassword: la consola de administración remota. Sustituyetu_contraseña_telnetpor 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 ejemploSteam_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>yban 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.
Notaejecuta
saveworldantes de cualquier mantenimiento.shutdownapaga el servidor de forma limpia, pero como es una salida normal, systemd no lo vuelve a arrancar; usasudo systemctl start 7dtdpara iniciarlo de nuevo.
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 successfulen el log. Si se queda sin memoria, prueba con unWorldGenSizemenor. - Los cambios en la configuración no se aplican. Comprueba que editas
/home/steam/serverconfig.xml, que es el que usa-configfile, y reinicia consudo systemctl restart 7dtd. - Los jugadores ven un error de versión. El servidor no está actualizado. Reinicia el servicio para que
ExecStartPredescargue la actualización. Si el juego pasa a una versión mayor, las partidas antiguas pueden no ser compatibles; cambiaGameNamepara 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.
