Team Fortress 2 Server Setup: SteamCMD, server.cfg, GSLT, SourceMod & RCON
How to stand up a Team Fortress 2 dedicated server: installing free app 232250 with SteamCMD (anonymous login works), why the 32-bit srcds_run is still the right default after the 2024 64-bit update, creating your GSLT under the correct app id, ports to forward, server.cfg essentials, the SourceMod + Metamod:Source admin stack, Workshop maps and FastDL with bz2, and enabling genuine Source RCON.
Team Fortress 2 is old enough to vote, and its community-server scene is still one of the biggest in the Source world - because Valve's Casual matchmaking never routes players to community servers, everything from 24/7 2fort to competitive lobbies to 100-plugin trade maps runs on servers people host themselves. The dedicated server is free, well documented, and runs on modest hardware. You do not need to own the game to host a server.
Installing the server with SteamCMD
The dedicated server is its own free Steam app - 232250 ("Team Fortress 2 Dedicated Server"), separate from the game client (440). Anonymous login works:
Expect a 15-25 GB install - TF2 has accumulated 18 years of assets, so guides quoting a few GB are stale. Updating is the same command re-run with the server stopped; TF2 updates land frequently and an out-of-date server cannot accept connections, so script this.
On 64-bit Linux, install the 32-bit libraries first - SteamCMD itself needs them no matter what:
The April 18, 2024 patch added native 64-bit server binaries (srcds_run_64 on Linux). Despite that, the 32-bit srcds_run is still the right default for most operators in 2026, for one reason: the plugin ecosystem. SourceMod's 64-bit support lives in its development branch, Metamod:Source only reached stable 64-bit support in 2025, and widely-used extensions still lack x64 builds. The practical rule:
Running SourceMod/Metamod plugins (most community servers): use the 32-bit srcds_run.
Strictly vanilla server:srcds_run_64 works and gets you the 64-bit engine.
Windows: stay on srcds.exe; the 64-bit Windows binary shipped with known issues.
+maxplayers is startup-only - you cannot change it without a restart. The default is 24; 32 is the practical ceiling for a stable TF2 server.
+sv_pure 1 enforces that clients use stock game content (with server-defined exceptions) - the normal choice for public servers.
Run it under screen, tmux, or a systemd unit; srcds_run auto-restarts after crashes.
The GSLT (and which app id to use)
Public TF2 servers should register a Game Server Login Token: log in at Steam's Game Server Account Management page and create a token for app 440 - the base game, not232250. A token created under the server app id fails at startup; this is the most common GSLT mistake. Add it to your launch line:
+sv_setsteamaccount YOUR_TOKEN_HERE
What happens without one: the server still runs and players can still join via IP or favorites - but anonymous servers take a severe ranking penalty in the in-game server browser, which in practice means browse-discovery traffic never finds you. One token per server instance; tokens tied to accounts with bans/limited status get revoked.
Ports
Port
Protocol
Purpose
27015
UDP
Game traffic + server queries
27015
TCP
RCON (same number, different transport)
27020
UDP
SourceTV, only if you run it (-nohltv disables)
The 27005 client port you see in old guides is outbound from game clients - you do not forward it on a server.
server.cfg essentials
TF2 auto-executes tf/cfg/server.cfg on every map load (guides pointing at an orangebox/ path predate the 2013 SteamPipe migration - ignore them). A minimal working config:
hostname "My TF2 Server"
rcon_password "use-a-long-random-string"
sv_password "" // set to make the server private
sv_lan 0
mapcyclefile "mapcycle.txt"
motdfile "motd.txt"
sv_lan 0 matters: with sv_lan 1 the server runs fine, joins fine locally, and never appears to the internet - the classic "my server doesn't show up" cause.
The map rotation is tf/cfg/mapcycle.txt, one map per line. The MOTD (tf/motd.txt) has a 2 KB limit and renders in a panel on join.
RCON: real Source RCON
TF2 speaks the standard Valve Source RCON protocol over TCP on the game port - the same protocol as CS2, CS:S, and every srcds game, so any Source RCON tool works. Set rcon_password in server.cfg to enable it; leave it empty to keep RCON off. The full admin command vocabulary is in our companion reference: Team Fortress 2 RCON Commands.
SourceMod + Metamod:Source
The standard admin stack, in install order:
Metamod:Source - the plugin loader, extracted into tf/addons/.
SourceMod - admin menus, permissions, bans that persist, votes, and thousands of community plugins, also into tf/addons/.
Grab the stable branch of each for the 32-bit server; verify versions against each project's site after major TF2 updates - TF2 patches have repeatedly (2024, 2025) broken plugin loading until SourceMod shipped gamedata updates. Admins are added in addons/sourcemod/configs/admins_simple.ini.
Workshop maps and FastDL
Workshop maps: modern TF2 servers sync workshop maps automatically - add the map's workshop id to your map cycle (workshop/2923300_name style entries via tf_workshop_map_sync for pre-caching) and the server fetches and updates it on level change. The manual re-sync loops in older tutorials are obsolete.
FastDL is still how you serve non-Workshop custom content (maps, sounds) at web speed:
Mirror your maps/, sound/, etc. under that URL (it must fit in 127 characters), and pre-compress large files as .bz2 - Source clients decompress them transparently, which GoldSrc-era guides do not mention because that engine cannot do it.
How players find you (the Quickplay reality)
Valve removed Quickplay in 2016, and today's Casual matchmaking sends players only to Valve servers - it will never feed your community server. Discovery happens through the in-game server browser (where your GSLT and a good hostname matter), direct connects, favorites, and third-party server lists. Plan for it: a memorable hostname, a stable map rotation, and an off-server community hub do more for population than any launch flag.
Hardware
Like all Source games the server is effectively single-thread bound - per-core clock speed beats core count, and one instance per core is the standard way to scale. As rough figures: a vanilla 24-32 slot instance idles around half a GB of RAM (plugins raise it), a 2-4 GB box runs one instance comfortably, and disk is the 15-25 GB install plus custom content.
MantaScope tracks the live Team Fortress 2 server list with population history, per-server rank, uptime and downtime incidents, and player counts that separate humans from bots. Because TF2 speaks genuine Valve Source RCON, you can claim your server on MantaScope and administer it from the browser: live player list, kick/ban and console over the rcon_password you set above, plus population graphs, scheduled messages, automations and Discord notifications - and in a post-Quickplay world, being visible on a tracked server list is one more way players actually find you.
Garry's Mod Server Setup: SteamCMD, server.cfg, Workshop Collections & RCON