El servidor dedicado de TF2 (app SteamCMD 232250) se instala con login anónimo, sin poseer el juego en la máquina, y se inicia con srcds_run -game tf. Cuenta con unos 8 GB de disco, media hora y un token GSLT para aparecer en la lista de servidores. Fuente principal: wiki.teamfortress.com (Linux dedicated server).
Instalación paso a paso
Prepara una máquina Linux (Ubuntu/Debian) con al menos 8 GB de disco libre, o un PC Windows.
Crea un usuario no root (steam) e instala las bibliotecas de 32 bits.
Descarga SteamCMD e instala el servidor con app_update 232250.
Crea un token GSLT en steamcommunity.com/dev/managegameservers (necesario para aparecer en la lista).
Genera la línea de lanzamiento con la herramienta «Línea de lanzamiento de TF2» e inicia srcds_run.
Edita tf/cfg/server.cfg (herramienta «Generador de server.cfg para TF2») y tf/mapcycle.txt.
Abre 27015 UDP/TCP y 27020 UDP (y 27005 UDP) en ufw, en el proveedor y en el router.
Prueba con connect 127.0.0.1 en local y luego desde otra conexión con connect IP:27015.
Crea un servicio systemd y programa actualizaciones y copias de seguridad.
Requisitos previos
- Sistema: Linux con glibc 2.3.6 o superior y unos 8 GB de disco libre (wiki TF); Windows también es posible.
- CPU/RAM: no especificados en la wiki consultada; el ejemplo oficial usa 24 slots. Vigila la carga antes de aumentar.
- Cuentas: la instalación es anónima (no hace falta poseer TF2 en el servidor). Una cuenta de Steam sirve para crear el token GSLT.
Instalación local en Windows
Descomprime SteamCMD en C:\steamcmd, instala el servidor y ejecuta srcds.exe con los mismos parámetros que en Linux. Prueba con connect 127.0.0.1 en la consola de TF2.
cd C:\steamcmd
steamcmd +force_install_dir C:\tf2ds +login anonymous +app_update 232250 validate +quit
cd C:\tf2ds
srcds.exe -console -game tf +map ctf_2fort +sv_pure 1 +maxplayers 24 +sv_setsteamaccount YOUR_GSLT_TOKENVPS Linux: usuario y dependencias
Paquetes citados por la wiki de TF para Debian/Ubuntu de 64 bits. En versiones recientes, libtinfo5 y libncurses5 pueden ya no estar disponibles: la wiki remite entonces a descargas manuales.
sudo adduser steam
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32z1 libncurses5:i386 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libtinfo5:i386 libcurl3-gnutls:i386 libsdl2-2.0-0:i386
su - steamVPS Linux: instalación y primer inicio
Comandos de la wiki de TF. Sustituye YOUR_GSLT_TOKEN (se exige un token válido para aparecer en el navegador de servidores). Para la rama prerelease, añade -beta prerelease antes de +app_update.
mkdir -p ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar zxf steamcmd_linux.tar.gz
./steamcmd.sh +force_install_dir ~/hlserver/tf2 +login anonymous +app_update 232250 +quit
cd ~/hlserver/tf2
./srcds_run -console -game tf +map ctf_2fort +sv_pure 1 +maxplayers 24 +sv_setsteamaccount YOUR_GSLT_TOKENArchivos de configuración que conviene conocer
- tf/cfg/server.cfg: nombre, contraseña RCON, límites de tiempo y rondas (ejemplo de la wiki: hostname, sv_contact, rcon_password, mp_timelimit, mp_maxrounds).
- tf/mapcycle.txt: lista de rotación de mapas (la wiki no detalla el formato: un mapa por línea, como en otros juegos Source).
- motd.txt y pure_server_whitelist.txt: opcionales (mensaje de bienvenida y lista blanca de sv_pure).
Puertos a abrir y cortafuegos Linux (ufw)
Para cambiar el puerto de juego, añade -port N a la línea de lanzamiento (un puerto por instancia) y ábrelo en lugar de 27015.
Abre solo lo necesario y prueba desde otra conexión (no desde el propio servidor).
- 27015/udp: tráfico de juego (wiki TF)
- 27015/tcp: RCON (wiki TF)
- 27020/udp: SourceTV (wiki TF)
- 27005/udp: comunicación con el cliente (valor estándar de Source, no citado por la wiki TF consultada)
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27005/udp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusCortafuegos de Windows (netsh)
En un símbolo del sistema de administrador, crea una regla de entrada por puerto (o abre «Firewall de Windows Defender con seguridad avanzada»).
netsh advfirewall firewall add rule name="Team Fortress 2 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Team Fortress 2 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Team Fortress 2 27005 UDP" dir=in action=allow protocol=UDP localport=27005
netsh advfirewall firewall add rule name="Team Fortress 2 27020 UDP" dir=in action=allow protocol=UDP localport=27020Cortafuegos del proveedor y redirección de puertos (router)
En un proveedor (OVH, Hetzner, Scaleway…), abre también los mismos puertos en el cortafuegos o «security group» del proveedor: ufw no basta si hay un cortafuegos previo. En casa, crea en el router una redirección (NAT) de cada puerto a la IP local de la máquina (fíjala o resérvala por DHCP).
Prueba: desde otra conexión, añade el servidor como «IP:puerto» en el navegador de servidores de Team Fortress 2 o en la consola. Si falla, revisa en orden: servicio iniciado, cortafuegos local, cortafuegos del proveedor, redirección NAT.
Inicio automático: servicio systemd
Crea /etc/systemd/system/tf2.service (como root) y actívalo. Adapta el usuario y las rutas; consulta los registros con journalctl -u tf2 -f.
[Unit]
Description=Team Fortress 2 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/hlserver/tf2
ExecStart=/home/steam/hlserver/tf2/srcds_run -console -game tf -norestart +map ctf_2fort +sv_pure 1 +maxplayers 24 +sv_setsteamaccount YOUR_GSLT_TOKEN
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now tf2Windows: tarea programada al inicio
En Windows, una tarea programada ejecuta tu script .bat al iniciar el sistema (ejecuta el comando en un símbolo de administrador).
schtasks /Create /TN "Team Fortress 2 server" /TR "C:\tf2ds\start-tf2.bat" /SC ONSTART /RU SYSTEM /RL HIGHESTActualizaciones, copias de seguridad y reinicios programados
Detén el servicio antes de actualizar (mismo comando SteamCMD que en la instalación), copia con regularidad los archivos de configuración y datos, y programa un reinicio diario si el servidor se degrada con el tiempo.
sudo systemctl stop tf2
steamcmd +force_install_dir /home/steam/hlserver/tf2 +login anonymous +app_update 232250 validate +quit
sudo systemctl start tf2
# backup
tar czf ~/tf2-$(date +%F).tar.gz -C /home/steam/hlserver/tf2 tf/cfg tf/addons tf/mapcycle.txt
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart tf2Registrar y encontrar tu servidor
Añade tu servidor en https://game-rank.com/jeux/team-fortress-2 para que la comunidad lo vea. Para encontrarlo en el juego, usa el navegador de servidores o conéctate directamente con su IP:puerto.
Solución de problemas: errores frecuentes
- El servidor funciona pero no aparece en la lista: token GSLT ausente o inválido. Solución: la wiki de TF exige un token válido; pásalo con +sv_setsteamaccount (o SRCDS_TOKEN en Docker) y reinicia.
- Error de biblioteca: libtinfo.so.5 / libncurses.so.5 no encontrada en una distribución reciente. Solución: instala los paquetes i386 correspondientes si existen; si no, sigue las descargas manuales que indica la wiki de TF.
- Servidor invisible desde fuera: el servicio funciona pero nadie puede conectarse. Causa: puerto cerrado (ufw, cortafuegos del proveedor o falta la redirección NAT). Solución: abre los puertos indicados en los tres niveles y prueba desde otra conexión.
- Puerto ya en uso al iniciar: otra instancia ocupa el puerto. Solución: lista los procesos con ss -lunp | grep 27015, detén la instancia anterior o asigna un puerto distinto con -port a cada servidor.
- SteamCMD «Failed to install app» o descarga detenida: causa frecuente, disco lleno o permisos insuficientes en la carpeta. Solución: revisa df -h y el propietario de la carpeta y repite el comando con validate (varias veces si hace falta).
- srcds_run: «No such file or directory» o falta una biblioteca de 32 bits: el servidor Source es de 32 bits. Solución: activa la arquitectura i386 (dpkg --add-architecture i386) e instala lib32gcc-s1 y lib32stdc++6.
Preguntas frecuentes
- ¿Cuántos jugadores admite un servidor TF2?
- El ejemplo oficial usa +maxplayers 24; la wiki consultada no da un tope. Ajusta +maxplayers según tu CPU y tus plugins.
- ¿Cómo actualizo el servidor?
- Según la wiki de TF, basta con repetir el comando de instalación de SteamCMD (+app_update 232250). La actualización automática con -autoupdate requiere parámetros adicionales (-steam_dir, -steamcmd_script) no detallados: prefiere una actualización programada como en la sección dedicada.
- ¿Puedo ejecutar el servidor como root?
- No se recomienda: crea un usuario dedicado (por ejemplo steam) sin derechos de administrador e instala y ejecuta el servidor con él. Así un fallo del servidor o de un plugin no compromete toda la máquina.
- Mi servidor de Team Fortress 2 no aparece en la lista: ¿qué reviso?
- Comprueba primero que los puertos estén abiertos en todos los niveles, que el servidor no esté en modo LAN (sv_lan 0) y, si el juego lo exige, que se aporte un token de servidor (GSLT) válido. La lista de Steam puede tardar unos minutos en actualizarse; mientras, conéctate por IP:puerto.
