跳到内容
Team Fortress 2

安装 Team Fortress 2 服务器

TF2 专用服务器(SteamCMD app 232250)可用匿名登录安装,机器上无需拥有游戏,并通过 srcds_run -game tf 启动。约需 8 GB 磁盘、半小时,以及用于出现在服务器列表的 GSLT 令牌。主要来源:wiki.teamfortress.com(Linux dedicated server)。

最后更新:2026/10/9

TF2 专用服务器(SteamCMD app 232250)可用匿名登录安装,机器上无需拥有游戏,并通过 srcds_run -game tf 启动。约需 8 GB 磁盘、半小时,以及用于出现在服务器列表的 GSLT 令牌。主要来源:wiki.teamfortress.com(Linux dedicated server)。

分步安装

  1. 准备一台至少有 8 GB 可用磁盘的 Linux 机器(Ubuntu/Debian)或 Windows PC。

  2. 创建非 root 用户(steam)并安装 32 位库。

  3. 下载 SteamCMD,并用 app_update 232250 安装服务器。

  4. 在 steamcommunity.com/dev/managegameservers 创建 GSLT 令牌(出现在列表中所必需)。

  5. 用“TF2 启动命令”工具生成启动命令,然后运行 srcds_run。

  6. 编辑 tf/cfg/server.cfg(“TF2 server.cfg 生成器”)和 tf/mapcycle.txt。

  7. 在 ufw、服务商和路由器中开放 27015 UDP/TCP 与 27020 UDP(以及 27005 UDP)。

  8. 先本机用 connect 127.0.0.1 测试,再从另一条网络用 connect IP:27015 测试。

  9. 创建 systemd 服务,并安排更新与备份。

前提条件

  • 系统:glibc 2.3.6 或更高的 Linux,以及约 8 GB 可用磁盘(TF Wiki);也可使用 Windows。
  • CPU/内存:所查阅的 Wiki 未说明;官方示例为 24 人。增加人数前请先观察负载。
  • 账号:安装为匿名方式(服务器上无需拥有 TF2)。Steam 账号用于创建 GSLT 令牌。

Windows 本地安装

将 SteamCMD 解压到 C:\steamcmd,安装服务器,并用与 Linux 相同的参数运行 srcds.exe。在 TF2 控制台中用 connect 127.0.0.1 测试。

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_TOKEN

Linux VPS:用户与依赖

TF Wiki 针对 64 位 Debian/Ubuntu 列出的软件包。较新版本可能不再提供 libtinfo5 和 libncurses5,此时 Wiki 会指向手动下载。

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 - steam

Linux VPS:安装与首次启动

命令来自 TF Wiki。请替换 YOUR_GSLT_TOKEN(出现在服务器浏览器需要有效令牌)。使用 prerelease 分支时,在 +app_update 之前加 -beta prerelease。

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_TOKEN

需要了解的配置文件

  • tf/cfg/server.cfg:名称、RCON 密码、时间与回合上限(Wiki 示例:hostname、sv_contact、rcon_password、mp_timelimit、mp_maxrounds)。
  • tf/mapcycle.txt:地图轮换列表(Wiki 未详述格式;与其他 Source 游戏一样每行一张地图)。
  • motd.txt 与 pure_server_whitelist.txt:可选(欢迎信息和 sv_pure 白名单)。

需开放的端口与 Linux 防火墙(ufw)

要更改游戏端口,请在启动命令中添加 -port N(每个实例一个端口),并开放该端口代替 27015。

只开放必要端口,并从另一条网络连接(而非服务器本机)测试。

  • 27015/udp:游戏流量(TF Wiki)
  • 27015/tcp:RCON(TF Wiki)
  • 27020/udp:SourceTV(TF Wiki)
  • 27005/udp:客户端通信(Source 标准值,所查 TF Wiki 未提及)
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 status

Windows 防火墙(netsh)

在管理员命令提示符中为每个端口创建入站规则(或打开“高级安全 Windows Defender 防火墙”)。

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=27020

服务商防火墙与端口转发(路由器)

在托管商(OVH、Hetzner、Scaleway 等)处,还需在服务商防火墙或“安全组”中开放相同端口:若上游有防火墙,仅靠 ufw 不够。家用服务器则在路由器中把每个端口转发(NAT)到机器的本地 IP(设为静态或 DHCP 保留)。

测试:从另一条网络连接,在 Team Fortress 2 的服务器浏览器或控制台中以“IP:端口”添加服务器。若失败,依次检查:服务是否运行、本机防火墙、服务商防火墙、NAT 转发。

开机自启:systemd 服务

以 root 创建 /etc/systemd/system/tf2.service 并启用。请按需修改用户与路径;用 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 tf2

Windows:开机计划任务

在 Windows 上,计划任务会在系统启动时运行 .bat 脚本(请在管理员命令提示符中执行命令)。

schtasks /Create /TN "Team Fortress 2 server" /TR "C:\tf2ds\start-tf2.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST

更新、备份与计划重启

更新前先停止服务(与安装相同的 SteamCMD 命令),定期备份配置与数据文件;若服务器运行久了变差,可安排每日重启。

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 tf2

登记并找到你的服务器

在 https://game-rank.com/jeux/team-fortress-2 登记你的服务器,让社区看到。游戏内可通过服务器浏览器查找,或直接用 IP:端口 连接。

故障排查:常见错误

  • 服务器在运行但不在列表中:GSLT 令牌缺失或无效。解决:TF Wiki 要求有效令牌;通过 +sv_setsteamaccount(Docker 下为 SRCDS_TOKEN)传入并重启。
  • 库错误:在较新发行版上找不到 libtinfo.so.5 / libncurses.so.5。解决:若存在对应的 i386 软件包请安装,否则按 TF Wiki 指引手动下载。
  • 外部看不到服务器:服务在运行但无人能连接。原因:端口被关闭(ufw、服务商防火墙或缺少 NAT 转发)。解决:在三个层面开放上述端口,并从另一条网络测试。
  • 启动时端口已被占用:另一个实例占用了端口。解决:用 ss -lunp | grep 27015 查看进程,停止旧实例,或用 -port 为每个服务器指定不同端口。
  • SteamCMD 提示 “Failed to install app” 或下载卡住:常见原因是磁盘已满或目录权限不足。检查 df -h 和目录所有者,然后带 validate 重新运行命令(必要时多次)。
  • srcds_run 报 “No such file or directory” 或缺少 32 位库:Source 服务器是 32 位程序。解决:启用 i386 架构(dpkg --add-architecture i386)并安装 lib32gcc-s1 与 lib32stdc++6。

常见问题

TF2 服务器能容纳多少玩家?
官方示例为 +maxplayers 24;所查 Wiki 未给出上限。请根据 CPU 和插件设置 +maxplayers。
如何更新服务器?
据 TF Wiki,只需重新运行 SteamCMD 安装命令(+app_update 232250)。-autoupdate 自动更新需要额外参数(-steam_dir、-steamcmd_script),其细节未说明,建议按相应章节使用计划更新。
可以用 root 运行服务器吗?
不建议:请创建不含管理员权限的专用用户(如 steam),用它安装并运行服务器,这样服务器或插件的漏洞不会危及整台机器。
我的 Team Fortress 2 服务器不在列表中:该检查什么?
先确认各层端口均已开放、服务器未处于 LAN 模式(sv_lan 0),且在游戏要求时提供了有效的服务器令牌(GSLT)。Steam 列表刷新可能需要几分钟,期间可用 IP:端口 直连。

Team Fortress 2 服务器工具

Team Fortress 2
Team Fortress 2免登录
生成 Team Fortress 2 服务器的 server.cfg:时间与回合限制、队伍平衡、暴击、散布和 FastDL。
配置Source打开
文档
Team Fortress 2
Team Fortress 2免登录
生成 Team Fortress 2 的 srcds_run 启动命令:地图、人数、sv_pure、端口、mapcycle 和 GSLT 令牌。
启动配置打开
文档