NEW 📢 Limited launch offer: up to 70% off your first month on every game!See plans

How to host a Team Fortress Classic server (2026)

Team Fortress ClassicUpdated Nov 5, 20268 min read

Short answer. You can host a Team Fortress Classic server yourself for free: install the Half-Life Dedicated Server (Steam app 90) with SteamCMD, tell SteamCMD to use the tfc mod, start hlds_run with -game tfc and open UDP port 27015. Or rent a Team Fortress Classic server and skip the install and the firewall.

Players join with their own copy of Team Fortress Classic on Steam, using your server's IP address and port.

Checked on 5 November 2026 against the newest Team Fortress Classic update Valve had announced on Steam, the one of 2 October 2024.

This guide uses three sources: Valve's Steam support article on required ports, the Team Fortress Classic Steam store and news pages, and the install and start-up settings we run on every Team Fortress Classic server we host. To skip to the rental route, go to Option 2.

What you need

  • The server software: the Half-Life Dedicated Server, Steam app 90. It is free and downloads with an anonymous Steam login. Team Fortress Classic is not a separate download: HLDS is told which mod to fetch, and for this game the mod name is tfc.
  • A machine that stays on: a spare PC, a home server or a cloud virtual machine. This guide uses 64-bit Linux, which is what we run. The server is a 32-bit program, so it needs 32-bit libraries.
  • Hardware: the Steam store lists the requirements of the game, not of the dedicated server, so treat any server figure you read elsewhere as an estimate.
  • Network: UDP 27015 for the game, reachable from the internet. Valve's Steam support article lists UDP 27015 as the default port for dedicated server gameplay traffic.
  • Players: everyone who joins needs Team Fortress Classic in their Steam library. It is a different game from Team Fortress 2. The server itself needs no Steam account.

Option 1: host it yourself

These steps are for Debian or Ubuntu. The SteamCMD commands are the ones our install script uses.

Install the server

  1. Install the libraries SteamCMD needs.
    sudo dpkg --add-architecture i386
    sudo apt update
    sudo apt install curl tar lib32gcc-s1 libc6:i386 libstdc++6:i386 -y
  2. Create a user for the server and switch to it.
    sudo useradd -m -s /bin/bash -U tfc
    sudo su - tfc
  3. Install SteamCMD and let it update itself once. A fresh SteamCMD updates itself and restarts on its first run, and on our own installs a download started across that restart could fail, so let it finish first.
    mkdir -p ~/steamcmd ~/server
    cd ~/steamcmd
    curl -sSL -o steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
    tar -xzf steamcmd_linux.tar.gz
    ./steamcmd.sh +quit
  4. Download HLDS with the tfc mod. The mod is chosen with app_set_config before the download:
    ~/steamcmd/steamcmd.sh +force_install_dir /home/tfc/server +login anonymous +app_set_config 90 mod tfc +app_update 90 validate +quit
    On our own installs, Steam sometimes answered "Failed to install app (Missing configuration)" and SteamCMD still ended with "success", leaving a folder with no game files. So do not trust the exit message: check that steamapps/appmanifest_90.acf exists in the server folder, and run the command again if it does not. We also saw an empty steamapps folder, created before the download, trigger the same error, so do not make one yourself.
  5. Copy the Steam client library into the .steam/sdk32 folder in the home folder of the user that runs the server, as our install does:
    mkdir -p ~/.steam/sdk32
    cp ~/steamcmd/linux32/steamclient.so ~/.steam/sdk32/

Open the ports

  • Game: allow UDP 27015 on the machine's firewall (for example sudo ufw allow 27015/udp) and forward it on your router.
  • VAC: our start line also sets the VAC (Valve Anti-Cheat) port to 26900 with -sport.

Start it and join

  1. Start the server from the server folder. This is the start line we run, with the plan values filled in for an 8-player server. Replace MAPNAME with the map you want to start on, for example 2fort, the map our Team Fortress Classic plans start on:
    cd ~/server
    ./hlds_run -console -game tfc -port 27015 -sport 26900 +map MAPNAME +ip 0.0.0.0 -strictportbind -norestart -maxplayers 8
    -game tfc picks the mod and -maxplayers sets the slot count. Run it under a service manager such as systemd or inside screen so it keeps running after you log out.
  2. Watch for the ready line. Our panel treats the server as started when the console prints Connection to Steam servers successful.
  3. Tune it. Deeper settings go in server.cfg.
  4. Join it. Players start Team Fortress Classic from Steam and connect to your server's IP address and port.
  5. Update by stopping the server and running the step 4 command again.

Option 2: host it on PlayNHost

Renting removes the install and the port setup, and updates become one switch. You still choose your map and your server settings.

  1. Pick a plan. Open the Team Fortress Classic server hosting page and compare the plans: SCOUT (8 players), SOLDIER (16) and HEAVY (32) at the time of writing. Press Create Server (Customize Plan on HEAVY) and finish the order. Prices change, so check them on that page.
  2. Wait for the install. The server appears in the panel. Its Console prints Connection to Steam servers successful when it is ready.
  3. Choose the starting map. The Map field in Game Settings on the Settings page is the map the server loads every time it starts (2fort on a new server). To switch maps while it runs, without a restart, use the Change Map quick task; the next start loads the Map field again.
  4. Tune the rules. Deeper settings live in server.cfg: open the Files tab or connect over SFTP, edit or create it, and restart.
  5. Invite your players. Give them your server's IP address and port from the panel. Each one needs Team Fortress Classic on Steam.

What the panel does for you:

  • Your ports are assigned and open from the start. The start line above is built for you, with your plan's slot count in -maxplayers and your server's own port in -port.
  • The server starts as plain HLDS with the tfc mod, without Metamod or AMX Mod X. If you want plugins, you upload them yourself over SFTP. The Game Name field shows tfc and is read-only.
  • Auto Update is off by default. It is on the Settings page under Show advanced. Switch it on and the server checks Steam for a new HLDS build at every start. Leave it off and the server keeps the build it was installed with.
  • The install retries SteamCMD up to three times and treats the app manifest, not the exit message, as proof of success. That is the "Missing configuration" trap from step 4, handled for you.

Self-hosting or renting: an honest comparison

  • Cost: the server software is free. Self-hosting costs power, hardware and bandwidth, or a cloud machine. Renting is a recurring fee set by the plan and the billing period you choose.
  • Uptime: a home server is only up while your PC, power and internet are. A rented server runs on the host's hardware.
  • Exposure: at home, players connect to your public IP address and you look after the firewall and router. A rented server keeps your home IP out of it.
  • Setup: self-hosting needs the command line, 32-bit libraries, port forwarding and the SteamCMD retry trap above. Renting needs a starting map and your settings.
  • Control: self-hosting gives you every file. On our servers you still have the Files tab and SFTP for server.cfg and your own plugins.

Ready to skip the setup? See the Team Fortress Classic server plans.

Already hosting it somewhere else? Move your server to us

OUR LATEST BLOGS