Featured image of post TF2 Classic Dedicated Server - Docker Image

TF2 Classic Dedicated Server - Docker Image

TF2C dedicated server image, made from cm2network's TF2 image. Art by Hunter R. Thompson

I created this Docker image for my own servers, but have released it for anyone to use.

Docker Stars Docker Pulls

How to use this image

Hosting a simple game server

Running on the host interface (recommended):

$ docker run -d -it --net=host --name=tf2classic -e SRCDS_TOKEN={YOURTOKEN} litltoast/tf2-classic

Running using a bind mount for data persistence on container recreation:

$ mkdir -p $(pwd)/tf2-data
$ chmod 777 $(pwd)/tf2-data # Makes sure the directory is writeable by the unprivileged container user
$ docker run -d -it --net=host -v $(pwd)/tf2-data:/home/steam/tf2classic-dedicated/ --name=tf2classic -e SRCDS_TOKEN={YOURTOKEN} litltoast/tf2-classic

Running multiple instances (increment SRCDS_PORT and SRCDS_TV_PORT):

$ docker run -d -it --net=host --name=tf2classic-2 -e SRCDS_PORT=27016 -e SRCDS_TV_PORT=27021 -e SRCDS_TOKEN={YOURTOKEN} litltoast/tf2-classic

SRCDS_TOKEN is required to be listed & reachable. Generate one here using AppID 243750:
https://steamcommunity.com/dev/managegameservers SRCDS_WORKSHOP_AUTHKEY is required to use workshop features:
https://steamcommunity.com/dev/apikey

It’s also recommended to use “–cpuset-cpus=” to limit the game server to a specific core & thread.

Configuration

Environment Variables

Feel free to overwrite these environment variables, using -e (–env):

SRCDS_TOKEN="changeme" (value is is required to be listed & reachable, retrieve token here (AppID 440): https://steamcommunity.com/dev/managegameservers)
SRCDS_RCONPW="changeme" (value can be overwritten by tf/cfg/server.cfg) 
SRCDS_PW="changeme" (value can be overwritten by tf/cfg/server.cfg) 
SRCDS_PORT=27015
SRCDS_TV_PORT=27020
SRCDS_IP="0" (local ip to bind)
SRCDS_FPSMAX=300
SRCDS_TICKRATE=66
SRCDS_MAXPLAYERS=14
SRCDS_REGION=3
SRCDS_STARTMAP="ctf_2fort"
SRCDS_HOSTNAME="New TF Server" (first launch only)
SRCDS_WORKSHOP_AUTHKEY="" (required to load workshop maps)

Config

TF2 Configs not guarenteed to work in TF2 Classic.

You can edit the config using this command:

$ docker exec -it tf2classic nano /home/steam/tf2classic-dedicated/tf2classic/cfg/server.cfg

If you want to learn more about configuring a TF2 server check this documentation.

Image Variants

tf2-classic:latest

This is the only image

Contributors

Contributors Display

The Making of the Image

The original image from cm2network used git clone to pull the entry.sh script changes into the image. This meant that new containers would not get the entry script changes, unless the whole image was scrapped and rebuilt. Docker doesn’t rebuild images if the Dockerfile hasn’t changed, but the image needs to change if the script has changed. The solution was to simply use the COPY command in the Dockerfile. Besides that, making the Docker image was smooth. I plan on making one for my Discord bot next and to find other cool services to spin up on my home server.

Licensed under CC BY-NC-SA 4.0
Last updated on Aug 21, 2022 19:00 -0400
LICENSED UNDER CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy