Выделенный сервер TF2 (app SteamCMD 232250) ставится анонимным входом, без владения игрой на машине, и запускается через srcds_run -game tf. Нужно около 8 ГБ диска, полчаса и токен GSLT, чтобы попасть в список серверов. Основной источник: wiki.teamfortress.com (Linux dedicated server).
Пошаговая установка
Подготовьте машину с Linux (Ubuntu/Debian) и не менее 8 ГБ свободного места или ПК с Windows.
Создайте пользователя без root (steam) и установите 32-битные библиотеки.
Скачайте SteamCMD и установите сервер командой app_update 232250.
Создайте токен GSLT на steamcommunity.com/dev/managegameservers (нужен для попадания в список).
Создайте строку запуска инструментом «Команда запуска TF2» и запустите srcds_run.
Отредактируйте tf/cfg/server.cfg (инструмент «Генератор server.cfg для TF2») и tf/mapcycle.txt.
Откройте 27015 UDP/TCP и 27020 UDP (и 27005 UDP) в ufw, у провайдера и на роутере.
Проверьте connect 127.0.0.1 локально, затем с другого подключения connect IP:27015.
Создайте службу systemd и запланируйте обновления и бэкапы.
Требования
- ОС: Linux с glibc 2.3.6 или новее и около 8 ГБ свободного места (вики TF); возможен и Windows.
- CPU/ОЗУ: в изученной вики не указаны; в официальном примере 24 слота. Следите за нагрузкой, прежде чем увеличивать.
- Аккаунты: установка анонимная (владеть TF2 на сервере не нужно). Аккаунт Steam нужен для создания токена GSLT.
Локальная установка в Windows
Распакуйте SteamCMD в C:\steamcmd, установите сервер и запустите srcds.exe с теми же параметрами, что и в Linux. Проверьте connect 127.0.0.1 в консоли 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_TOKENLinux VPS: пользователь и зависимости
Пакеты из вики TF для 64-битных Debian/Ubuntu. В новых версиях libtinfo5 и libncurses5 могут отсутствовать: тогда вики отсылает к ручной загрузке.
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 - steamLinux VPS: установка и первый запуск
Команды из вики TF. Замените YOUR_GSLT_TOKEN (для показа в браузере серверов нужен действительный токен). Для ветки prerelease добавьте -beta prerelease перед +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_TOKENВажные файлы конфигурации
- tf/cfg/server.cfg: имя, пароль RCON, лимиты времени и раундов (пример вики: hostname, sv_contact, rcon_password, mp_timelimit, mp_maxrounds).
- tf/mapcycle.txt: список ротации карт (формат в вики не описан: одна карта в строке, как в других играх Source).
- motd.txt и pure_server_whitelist.txt: необязательны (приветствие и белый список sv_pure).
Открываемые порты и брандмауэр Linux (ufw)
Чтобы сменить игровой порт, добавьте -port N в строку запуска (по порту на экземпляр) и откройте его вместо 27015.
Открывайте только необходимое и проверяйте с другого подключения (не с самого сервера).
- 27015/udp: игровой трафик (вики TF)
- 27015/tcp: RCON (вики TF)
- 27020/udp: SourceTV (вики TF)
- 27005/udp: связь с клиентом (стандартное значение Source, в изученной вики TF не упомянуто)
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 в режиме повышенной безопасности»).
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…) откройте те же порты и в брандмауэре или «security group» провайдера: ufw недостаточно, если есть внешний брандмауэр. Дома настройте на роутере проброс (NAT) каждого порта на локальный IP машины (статический или зарезервированный по DHCP).
Проверка: с другого подключения добавьте сервер как «IP:порт» в браузере серверов Team Fortress 2 или в консоли. Если не выходит, проверьте по порядку: запущена ли служба, локальный брандмауэр, брандмауэр провайдера, NAT.
Автозапуск: служба systemd
Создайте /etc/systemd/system/tf2.service (от root) и включите его. Подставьте своего пользователя и пути; логи — 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: задача планировщика при запуске
В 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 требует действительный токен; передайте его через +sv_setsteamaccount (или SRCDS_TOKEN в Docker) и перезапустите.
- Ошибка библиотеки: libtinfo.so.5 / libncurses.so.5 не найдена в новом дистрибутиве. Решение: установите соответствующие пакеты i386, если они есть, иначе используйте ручные загрузки, указанные в вики TF.
- Сервер не виден снаружи: служба работает, но никто не может подключиться. Причина: закрыт порт (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; в изученной вики потолок не указан. Задавайте +maxplayers с учётом CPU и плагинов.
- Как обновить сервер?
- По вики TF достаточно повторить команду установки SteamCMD (+app_update 232250). Автообновление через -autoupdate требует дополнительных параметров (-steam_dir, -steamcmd_script), которые не описаны: лучше планируйте обновление, как в соответствующем разделе.
- Можно ли запускать сервер от root?
- Не рекомендуется: создайте отдельного пользователя (например, steam) без прав администратора и устанавливайте и запускайте сервер от него. Тогда уязвимость сервера или плагина не скомпрометирует всю машину.
- Мой сервер Team Fortress 2 не отображается в списке: что проверить?
- Сначала проверьте, что порты открыты на всех уровнях, сервер не в режиме LAN (sv_lan 0) и, если игра требует, указан действительный токен сервера (GSLT). Список Steam может обновляться несколько минут; пока подключайтесь по IP:порт.
