Team Fortress 2

Team Fortress 2

33 ratings
How To Abandon Casual (Updated 2024)
By LQIM and 1 collaborators
The second edition of the definitive guide on how to stop playing casual and return to community servers.
   
Award
Favorite
Favorited
Unfavorite
Foreword
This guide is a rewrite from the guide I made in 2022 on how to abandon casual. While the contents in that guide fine for the most part some things have become outdated, and I hate everything I've seriously tried to write in the past so I'm rewriting it
Why Abandon Casual
TF2's casual mode is filled with bots, and even though their numbers have waxed and waned, they are here to stay. As unfortunate this is, it's not the end of the world, nor the end of the game. Casual may be broken, but there is one final bastion of hope: community servers. The original way to play TF2, the first way to play TF2, the ONLY way you could have played TF2 on launch

But I can already hear the whining and whinging from 17 miles away: "b-b-but community servers are bad and stinky!!! They have tryhards and turn off random crits!!!!!!". Well guess what? When you own a community server, you get to curate the settings and community of the server. If you're a ZestyJesus fan -- someone who would probably enjoy dice more than TF2 -- you can make sure that random crits, random bullet spread, and even random damage spread (remember when that was a thing?) is enabled on your server. If you're an Uncle Dane fan -- someone who'd enjoy watching concrete dry more than TF2 -- you can decide that randomness is not for you and disable those settings. Furthermore, with the power of the ban-hammer you can curate your server's community to be whatever the hell you want: a sauna full of sweaty tryhards, a kiddie pool full of friendlies, a pit of hell for yiff enjoyers, you name it.

Now if you're not one to host a server, repopulating a server is possible. Harder to do, but possible nonetheless. It'll require making friends and regularly playing at specific times, and even then it's only a chance, but with enough persistence you may just bring a server back from the grave.

Regardless of what decision you make, it requires a bit of persistence. If you're someone who gives up at the slightest sign of trouble, this guide isn't for you. But if you can wait it out and keep trying when something goes wrong, then you might just be able to escape the bots and form your own little utopia
Standards For Reading
In an attempt to make this guide slightly less confusing, I've stuck to a set of standards when writing out commands or text to enter.

:$ This is a command to be entered in a terminal as a NON-ADMINISTRATOR user. Do not type the ":$" when entering the command :# This is a command to be entered in a terminal as an administrator. Do not type the ":#" when entering the command This is text to be entered // This is a comment for a .cfg file # This is a comment for a terminal * This is a comment for Sourcemod's admins file # Output Text after "# Output" is not a command, but the result of a previous command
=== Hosting A Server ===
Choosing a Server Host
Choosing a server host can be a long, drawn out process. Or it can be a case of "I trust this guy". If you're someone who's trusting of strangers, let me make this easy and recommend Hostinger[www.hostinger.com]

For people who want to actually think about what they're buying:
What Makes a Good Host?
A good server host will generally have these traits:
  • Cheap
  • Good specs
  • Generally don't care what you're doing
  • Good customer service
Hostinger provides several options for hosting, ranging from real cheap (and kinda ♥♥♥♥♥♥) to real expensive. I personally use a KVM2 - A middle of the road instance that is fairly cheap and still has good specs - to host a website and a TF2 server.

However, if you don't want to take my word for it, you can go and research these on your own. Just search up "VPS Provider" on your favorite search engine and shop around. Write down prices and specs, and maybe look up some user reviews if they're available. Compare everything on whatever you've been writing on and see if any are sufficient. It's quite hard to find recommended specs for a tf2 server online, but it mainly comes down to having an OK amount of ram and a good single-thread speed cpu. Cores do not help in running TF2 because it is not a multi-threaded process, so don't splurge on some 64 core threadripper when it isn't useful.

Regardless of what you choose, make sure it has the option to run a Debian 11 system or greater. You will be using Debian 11 as the operating system of choice to run the server
Choosing an Operating System
Choose Debian 11. Done

































Ok really why am I telling you to install linux? Well it's a great operating system for a server because it doesn't use very many resources or lots of storage space, it's fairly easy to secure, and it's the operating system that works with LinuxGSM, the tool I use to run TF2 servers. You can choose a different operating system if you want, but this entire guide is built around the assumption that you're using Debian 11 or higher. If you want to figure everything out for yourself because you have a burning hatred for linux, go ahead, but I'm not going to help you figure it out
SSH Keys
SSH, short for "Secure Shell", is a tool used to log-in to remote computers. It is used absolutely everywhere in the computing world, and you will be using it to access the VPS. As I am using Hostinger, I will be explaining how to set up a key with Hostinger, however it is possible to set up a key even without some special front-end

First, you need to generate a key. If you already have a key then this isn't a problem and you can skip this section on generating them. Each system covers ssh and generating keys differently, so I will be covering them separately.

Linux (Debian-based) systems
Disclaimer: I primarily use Debian-based systems (Debian, Ubuntu, Linux Mint, etc.), so that's where I'm most knowledgeable, and thus the type of system I will cover. There are plenty of other tutorials out there on how to set up a ssh key if you're on another non-debian system, you just need to go looking for them

First, you need to have openssh installed. For Debian, the package you're looking for is "openssh-client". Open a terminal and type:
:# apt install openssh-client

Now with openssh installed, type:
:$ ssh-keygen -t ed25519
This will prompt you where to store the key and if you want to enter a passphrase. Hitting enter for the default location is fine if you don't already have a default key (which you probably don't if you're following this tutorial). Using a passphrase isn't necessary, but it doesn't hurt to have

The result of this should look somewhat like:
# Output Generating public/private ed25519 key pair. Enter file in which to save the key (/home/anon/.ssh/id_ed25519): lolmao Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in lolmao Your public key has been saved in lolmao.pub The key fingerprint is: SHA256:w3FrY6mHVINySf9ZdlS3vTOIzKxwEF/FHEiEA8sApuE anon@anon The key's randomart image is: +--[ED25519 256]--+ | . o.. oo ++=o. =| |. + o.+*.. o .+| | E .+=.* o.o| | +.++=.+...| | .S.*=o. + | | .o*.. o| | o.. | | . | | | +----[SHA256]-----+

Windows systems
Disclaimer: I do not use Winblows if I don't have to, and so far I generally haven't for a few years. This means I am not super knowledgeable on the deep inner workings of Windows, and this info may be partially wrong or outdated. I believe it is valid and up-to-date enough to include it, but take this with a grain of salt and maybe look into it yourself

This part of the tutorial was written with the articles:
If you feel like this brief is too brief, take a look at these.

Luckily enough, Windows supports SSH natively with little hassle. First, grab a copy of the most recent powershell[learn.microsoft.com]. Then, check your environment and make sure that everything is ready. Enter these commands in a powershell instance:
:$ $PSVersionTable.PSVersion # Major version must at least 5 or greater, and the minor version must be at least 1 or greater :$ (New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) # If this returns true, you're a member of the built-in Administrators group

Now that the environment is ready, open powershell as an administrator and check to make sure openssh is available by typing:
:# Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
This should return:
# Output Name : OpenSSH.Client~~~~0.0.1.0 State : NotPresent Name : OpenSSH.Server~~~~0.0.1.0 State : NotPresent

Now, install openssh.client by typing:
:# Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Which should return:
# Output Path : Online : True RestartNeeded : False


Now that openssh is installed, you can generate a key pair. This is actually the same process as in Linux

Open powershell as a normal user, and type;
:$ ssh-keygen -t ed25519
And you will be prompted for a location to save the keys (the default location is fine), and a passphrase. A passphrase isn't necessary, but doesn't hurt to have

The output should look somewhat like:
# Output Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:/Users/username/.ssh/id_ed25519. Your public key has been saved in C:/Users/username/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:OIzc1yE7joL2Bzy8!gS0j8eGK7bYaH1FmF3sDuMeSj8 username@LOCAL-HOSTNAME The key's randomart image is: +--[ED25519 256]--+ | . | | o | | . + + . | | o B * = . | | o= B S . | | .=B O o | | + =+% o | | *oo.O.E | |+.o+=o. . | +----[SHA256]-----+

Extra Security
Windows has an option to store the private part of the key pair in a "Windows security context associated with your Windows account". Now I assume this means that Windows makes it impossible to touch your key if they're not logged in with your user, which is a good thing, but I am not entirely certain. Think of this as optional, but recommended

Your key can be stored with the ssh-agent that windows provides, which keeps it in a private key store so that others can't nab it when you're not looking. This can be done by typing the following commands into a Administrator privileged powershell:
# Restart the ssh-service on boot :# Get-Service ssh-agent | Set-Service -StartupType Automatic # Start the ssh-service now :# Start-Service ssh-agent # Make sure it's running :# Get-Service ssh-agent # Add your key to the agent :# ssh-add $env:USERPROFILE/.ssh/id_ed25519

Windows then suggests backing up your private key to an encrypted external hard drive and deleting the local copy of the private key from your system, which I also recommend. The private key is stored in the ssh agent, and having it floating around on your system for someone to copy isn't great. If you can't get an encrypted backup, it shouldn't be the end of the world, but pray to God that your hard drive doesn't randomly die because then you can't get into your VPS without asking customer support for help

Security
SSH keys help keep your server secure by making it impossible for someone to brute-force a password to log into any accounts. However, they themselves become as important as a password, and thus must be kept safe. If you're on Windows and followed the "Extra Security" section, then you're fine. If you're on Linux, keys are stored in "/home/user/.ssh/" by default, which is a folder that can't be read by users who aren't you. However, if someone ever can log into your account or has the same userspace access as you, they can read the private key and keep it for later. If you can keep your install malware free then this shouldn't be a huge concern
SSH Keys, Pt.2
Adding Your SSH Key
SSH uses a public/private key pair scheme for its encryption. The actual details of why or how are unimportant for this guide, but what is important is that you understand the difference between them. A PUBLIC KEY is meant to be PUBLIC, as it you share it with others. It is used by the server to authenticate anyone logging in with that key. a PRIVATE KEY is meant to be PRIVATE, as it you NEVER GIVE IT TO ANYONE. The private key can be used to generate the public key, and to impersonate you, so don't give it out!

Public keys end with the '.pub' extension, and when opened in a text editor should look like a bunch of text. Here's the key I generated as an example for this tutorial:
# Output ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII5hJ+xvtkdsyfSXOHVMLzS/PXrljChmye5vruwSYqfL anon@anon
Please do not put this in your server, unless you want me to log in and say hi

The private key will not have any extension, and when opened will look something like this:
# Output -----BEGIN OPENSSH PRIVATE KEY----- bunch of text lol== -----END OPENSSH PRIVATE KEY-----

Reminder: you will be using the PUBLIC key, not the private key. So if it says private, don't use it.


Hostinger will ask for a public ssh key after purchasing the VPS. I'm not exactly certain when, as I bought my server some time ago and didn't take screenshots, but it will just plainly ask for a key. Take the contents of the PUBLIC KEY, and paste it into the text box. Then just continue on with the rest of the setup that Hostinger will push you through

Adding A Key After Setup
Now it's possible that you've already set up your VPS and don't have a working key for some reason. If this happens, it's possible to add a key even without Hostinger.

Go to "/home/user-you-want-to-login-as/.ssh/" and create a file called "authorized_keys". Then paste in the PUBLIC KEY:
:# nano /home/user-you-want-to-login-as/.ssh/authorized_keys # Then paste in the text # OR :# echo "public-key-text" >> authorized_keys

Now you should be able to log into the user you added the key to

LOGGING IN
Now for the moment you've been waiting for: actually logging into the system! This is comparatively easy to everything else we've done (Use a terminal for linux, powershell for windows):
:$ ssh user@ip-address

if everything has gone right, you should be logged into the user you've set up. If you've just finished the Hostinger setup, this will log you into "root", or the administrator account for linux. Congrats! Now it's time for everything else
Securing Your Server
Well, congrats! You now have a server on the internet. You should feel proud, very few internet users become landchads who own a tract of digital land (not that crypto land ♥♥♥♥♥♥♥♥, REAL fake real-estate). However if you don't secure your server that land won't be yours for very long

DISCLAIMER
I do not claim, nor intend to imply that this guide is comprehensive or actually effective. It is entirely possible that I have missed something vital in the creation of this section, and furthermore it is entirely possible that despite following everything I've said in this section that you still get hacked. This disclaimer is informing you that I take no responsibility for anything that happens to your server regardless if you follow this section or not, but ESPECIALLY if you follow this section. I am offering no guarantees

Ok now that my ass has been covered, let's continue.

Security vs Convenience
There's this really fun trade-off in the computer world where every bit of security you employ will increase the hassle of doing things. I intend to reduce this trade-off as much as possible, to offer the most security with the least hassle, but it is inevitable that there will be some hitches

Storing Passwords
Passwords are inherently insecure, so whenever possible I won't use one. But sadly there are a few instances where a password is necessary. This primarily comes in the form of logging into websites, and in the server you're ssh'ing into. Luckily, we have password managers to help

If you don't have a password manager, use KeePassXC[keepassxc.org]. If you already have a password manager, use that

If you are installing a password manager for the first time, please use a long and secure password for the master password, then generate passwords using the manager for any services or sites you log into. XKCD has a good comic on how to pick a strong password[xkcd.com]. I suggest using 7-10 words chosen at random, with a random number and symbol placed in a random word. Write down your master password and keep it somewhere safe, then try to memorize it

If you haven't been using a password manager for the creating and storing of passwords for sites like Hostinger or your email, I suggest changing those passwords to passwords your manager generates

Securing Linux
Linux is far more secure than Windows by default, but there's more that can be done to secure it. The first and easiest thing to do is to stop using the admin account. This is as easy as adding a new user:
:# adduser user :# usermod -aG sudo user
Running these commands as 'root' (admin) will create a new user with no permissions, then add the user to the "sudo" group, which then gives them admin again (kinda).

The difference between an administrator and 'root' is that 'root' is the super admin. There is no admin higher than root, and root is ALWAYS admin. Generally, if you don't need to do something as an admin, you shouldn't. When a normal user is part of the "sudo" group, they can prepend a normal command with the word "sudo" to run the command as root. This means a normal user can do admin things by using their password instead of becoming root.

The next thing to do is to copy your ssh key from root to the new user. This can be done by copying the folder "/root/.ssh/" to "/home/your-new-user/":
:# cp -ri /root/.ssh/ /home/your-new-user/

Then change the ownership of the folder to be your new user
:# chown -R new-user:new-user /home/new-user/.ssh/

If everything has worked, try logging out and then logging back in as the new user:
:$ ssh new-user@ipaddress
And if all went well, you should be logged in as the new user. Check to make sure you can run commands as administrator by running this command:
:$ sudo echo lmao
You should be prompted for the new user's password. If you're a member of the sudo group, and typed your password correctly, the word "lmao" should be printed in the console. Congrats, you've made a normal user account

Now time to disable root. Because root is a dangerous account that you'll never need to log-in to, it's better to disable it than let it sit unused. To do this, we'll be editing a file that is a little dangerous. Make a copy of "/etc/passwd" just in case we mess something up
:$ sudo cp /etc/passwd /etc/passwd.bkup

Now, open "/etc/passwd" using nano:
:$ sudo nano /etc/passwd
This should open a text editor, and then the file in the text editor. Find the entry that looks like this:
# Output root:x:0:0:root:/root:/bin/bash
and replace the "/bin/bash" with "/usr/sbin/nologin". Then hit CTRL+S, and CTRL+X to save and close the file. Now if you try to log into root it should say "This account is currently not available."
:$ sudo su root # Output: This account is currently not available.

If you're really paranoid, you can also delete and disable the root password:
:$ sudo passwd -d root :$ sudo passwd -l root

This makes it completely impossible to log-in to root. There's no valid password to log in, and even if there was you still would just get the text "This account is currently not available."



Now you should set up a firewall before long. I personally use UFW (uncomplicated firewall):
# install ufw :$ sudo apt install ufw # allow access to the ssh port :$ sudo ufw allow 22 comment "ssh port" # enable ufw :$ sudo ufw enable # reload ufw :$ sudo ufw reload

UFW will then block any traffic from entering the server that isn't explicitly allowed through the firewall. Generally, forwarding ports is as easy as using the "allow" command, but if you really want to dive in and understand how to write more complicated rules, read the ufw manual by typing:
:$ man ufw




Now for some miscellaneous things. It's a good idea to make sure you're getting security updates if you're not already. Open the apt sources file at "/etc/apt/sources.list"
:$ sudo nano /etc/apt/sources.list
and look for something like this:
# Output deb http://deb.debian.org/debian bullseye main deb-src http://deb.debian.org/debian bullseye main #deb http://security.debian.org/debian-security bullseye-security main #deb-src http://security.debian.org/debian-security bullseye-security main
If the entries that contain the link "http://security.debian.org/debian-security" have a pound symbol in front of them, delete the pound symbol, then run the commands:
:$ sudo apt clean :$ sudo apt update :$ sudo apt upgrade -y :$ sudo apt autoremove -y
This updates your apt cache and includes security updates as updates to download

Next, install needrestart
:$ sudo apt install needrestart
This piece of software will reload certain services running on the VPS whenever an update is done

Another good piece of software to have is autolog
:$ sudo apt install autolog
Autolog automatically logs out idle users. This is a good thing because it stops someone from breaking into your computer and just idling forever. It also logs you out if you leave an ssh session open for some reason, which is another good thing. The only caveat is that it takes a little configuration, so read the manpage:
:$ man autolog

The final piece of software that I can think of as of know is Fail2Ban:
:$ sudo apt install fail2ban
Fail2Ban is a python program that monitors logs and bans repeat offenders. This one also takes a bunch of setup, so read the manpage and make sure people spamming your ssh port get blasted into oblivion
:$ man fail2ban :$ man jail.conf
Securing Your Server, Pt.2
That reminds me, we should secure the ssh server. This is a little more complicated, but not terribly difficult.

The ssh server (on the VPS) can be configured by editing the file "/etc/ssh/sshd_config"
:$ sudo nano /etc/ssh/sshd_config

Some values are more important to change than others. Here's a list of what should be changed, what it should be changed to, and why
Note: Comments are denoted with a '##', default values will not have any '#'s before them, and preferred values will have a '#' before them
Port 22 #Port <random number> ## OpenSSH has used port 22 for so long that many automated scripts that try to break into your server test to see if port 22 is open. By changing it to a random number between 1024 and 65536 you stop many these scripts from attacking your server. Do note that new ssh connections require the port to connect: "ssh user@ipaddress -p port", also make sure to let the new port through your firewall: "sudo ufw allow port-number comment "new ssh port" " PasswordAuthentication yes #PasswordAuthentication no ## By preventing password authentication, ssh brute forces are stopped in their tracks. It's not possible (for the most part) to brute force a ssh key, so the only way someone could get into your server is through having the right ssh private key (which if you kept private is impossible) UsePAM yes #UsePAM no ## UsePAM is another part of checking passwords, so disable it for the same reasons to disable password authentication PermitRootLogin yes #PermitRootLogin no ## As a part of disabling root login, this should be done to REALLY stop anyone from logging in as root. It theoretically shouldn't matter, but you should set this anyway ## OPTIONAL PermitEmptyPasswords yes #PermitEmptyPasswords no ## If you made a ssh key using a passphrase, then you should change this value to "no". However, if your key is passwordless, then there isn't a need to change this (again this is a nice to have but not a deal breaker if you don't)

That's everything I can think of (for now). I may come back and expand this section if I learn of new or better ways to protect a server



ONCE AGAIN, ALL OF THE COMMENTARY ON HOW TO SECURE YOUR SERVER IS PROVIDED AS IS, AND I DO NOT OFFER WARRANTY NOR A GUARANTEE THAT THIS WILL KEEP YOUR SERVER SAFE FROM HACKERS. I AM NOT RESPONSIBLE FOR ANYTHING THAT HAPPENS TO YOUR SERVER, REGARDLESS OF WHETHER YOUR SERVER GETS HACKED OR NOT
Installing a TF2 Server
Alright, now for the "easy" part: installing the server. First, make sure you have all the dependencies LinuxGSM[linuxgsm.com] requires:
:$ sudo dpkg --add-architecture i386 :$ sudo apt update :$ sudo apt install curl wget file tar bzip2 gzip unzip bsdmainutils python3 util-linux ca-certificates binutils bc jq tmux netcat lib32gcc-s1 lib32stdc++6 libcurl4-gnutls-dev:i386
Copy and paste this command as your normal user and enter your password when prompted to install all the necessary packages through apt

Next, create a new user for the server
:$ sudo adduser tf2server :$ sudo passwd -d tf2server :$ sudo passwd -l tf2server :$ sudo su tf2server :$ cd
This set of commands makes a new user, deletes their password, locks their password, and then changes your current user into the "tf2server" account, and go to their home folder.

Now that you're logged in as the "tf2server" user, fetch the install script:
:$ wget -O linuxgsm.sh https://linuxgsm.sh
If you wish to inspect the code, now is your chance to do so. I don't expect many to be able to decipher what's going on, but if you do want to peek your head into the horrors of POSIX scripting then have at it

Assuming the script isn't malicious (I'll explain in a minute), run it with bash:
:$ chmod +x linuxgsm.sh :$ bash linuxgsm.sh tf2server

Now why in the world would I imply this script is malicious if I'm personally using it? Well, because the command the site recommends you use is a little suspicious:
wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh tf2server
You may notice that this command includes all of the other commands I've written out. So why didn't I just use this? Because downloading and executing a script from somewhere random online is generally a bad idea. Especially if you're doing it as an admin, which is what the site itself recommends

I don't mean to throw too much shade, as I have no proof nor experience that this tool is malicious in any way, it's just that a command to execute a random script from the internet set off alarm bells in my paranoia-crunched brain

Ok moving on, after running the prior commands, all that's left to do is to actually install the server itself:
:$ ./tf2server install
This will take a while, as it's downloading the entirety of TF2, but once the command finishes, you'll be nearly ready to play.

The final necessary step is to let TF2 through your firewall. Remember UFW? Well we're using it again:
# Return back to your admin account :$ exit # Update the firewall :$ sudo ufw allow 27015 comment "TF2 Port" :$ sudo ufw allow 27020/udp comment "TF2 Port" :$ sudo ufw reload # Change identity to the tf2server user again $: sudo su tf2server $: cd

And finally, start your server and try to connect to it in-game:
# in your ssh session $: ./tf2server st # in TF2 connect your-ipaddress
Configuring Your TF2 Server
Congrats, you have a server running on the internet and can connect to it (hopefully). But the server only runs cp_badlands, has a maxplayers of 16, and says "LinuxGSM" for its title. How do you change this and personalize your server? Simple: dig into the configuration

Launch Options
There are 2 ways to edit launch options for LGSM instances: edit "common.cfg", or "instance.cfg". Editing either of these files will change your server's launch options, but will do it in different ways. If you want to run multiple instances, settings that should be consistent between instances should be placed in common.cfg, while instance specific settings should be placed in "instance.cfg", where "instance" is the name of your server instance
# Copy default options into common :$ cat /home/tf2server/lgsm/config-lgsm/tf2server/_default.cfg >> /home/tf2server/lgsm/config-lgsm/tf2server/common.cfg # Copy default options into instance :$ cat /home/tf2server/lgsm/config-lgsm/tf2server/_default.cfg >> /home/tf2server/lgsm/config-lgsm/tf2server/tf2server.cfg # Edit common or instance settings respectively :$ nano /home/tf2server/lgsm/config-lgsm/tf2server/common.cfg :$ nano /home/tf2server/lgsm/config-lgsm/tf2server/tf2server.cfg

The file should now look something like this:
# Output ################################## ####### Instance Settings ######## ################################## # PLACE INSTANCE SETTINGS HERE ## These settings will apply to a specific instance. gslt="" ################################## ######## Default Settings ######## ################################## # DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN! # Copy settings from here and use them in either: # common.cfg - applies settings to every instance. # [instance].cfg - applies settings to a specific instance. #### Game Server Settings #### ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parame... ip="0.0.0.0" port="27015"
If it does, great! If it doesn't, and lacks the "### Instance Settings ###" then it's still fine, assuming you didn't already have some settings in the file that you cared about (you probably didn't). If the file is blank and _default is also blank then you messed something up. Luckily, if you break the _default file, restarting the server will regenerate the file for you

From here, just read the file and take a look at what may be interesting to change. You can change the default map, max players, and add or remove other launch options at your whim. The _default file also has links to LGSM's documentation, so if there's an option that you don't understand just go to the link and it will explain what the option does

Ok so now the server starts on a good map like koth_lakeside_final (actually the best map but I don't judge) and more than 16 people can join at once. But what about turning off random crits, or messing with bot counts? Now you're talking about the game config

The game's config can be found where you would normally find it, "/tf/cfg":
:$ cd /home/tf2server/serverfiles/tf/cfg :$ ls
This will list all the configuration files that TF2 comes with, along with "tf2server.cfg", which LGSM has generated for you. I would personally inspect each of the config files available and then see which settings look interesting for your server:
:$ cat config-file.cfg

From here, edit your "tf2server.cfg" file by adding "exec cfg-filename" (if you want to):
# Open the file in nano :$ nano tf2server.cfg # Example cfg to execute (type this then hit CTRL-S + CTRL-X) exec server_custom.cfg
You don't need to execute one of these files if you don't want to, but it may be helpful in setting up your server if you don't want to define things yourself

Another good tool is https://cfg.tf/server/. It offers an easy to use website for configuring a basic server cfg file. Just fill out the settings you want, click generate, download the file, extract it to get the generated text, and edit your "tf2server.cfg" file

Here's an example file I created when setting up my server for this tutorial:
///////////////////////////// /////// tf2server.cfg /////// ///////////////////////////// // Apply standard casual settings //exec server_casual.cfg // Apply MY settings hostname "lolmao cool server" sv_password "" sv_lan 0 // Log console output log on sv_logfile 1 sv_logecho 1 sv_logbans 1 sv_log_onefile 0 sv_visiblemaxplayers 32 sv_pure -1 sv_pure_kick_clients 0 sv_alltalk 1 mp_allowspectators 1 mp_autoteambalance 1 mp_teams_unbalance_limit 2 mp_forcecamera 0 sv_allow_wait_command 1 sv_cheats 0 sv_pausable 0 mp_stalemate_enable 0 mp_stalemate_timelimit 240 mp_winlimit 0 mp_timelimit 31 mp_maxrounds 3 mp_enableroundwaittime 1 mp_bonusroundtime 10 // Crits enabled, random spread disabled tf_weapon_criticals 1 tf_use_fixed_weaponspreads 1 // If one or more players are connected, add enough bots to the server so that there are 24 "players" tf_bot_quota_mode fill tf_bot_quota 24 // How to kick players (spectate then kick) mp_idledealmethod 1 // reban previously banned players exec banned_user.cfg exec banned_ip.cfg writeid writeip // Networking stuff (don't touch) sv_maxrate 50000 sv_minrate 7500 sv_maxupdaterate 66 sv_minupdaterate 20 sv_maxcmdrate 66 sv_mincmdrate 0

If you're looking for settings to use on your server, here are some links:
Sourcemod & Plugins
Sourcemod is a tool used by servers to do both administration, and to add plugins that change gameplay. Not everyone needs or even wants sourcemod installed on their server, but I've included this section for those who want it

LGSM has an option to install sourcemod for us without having to go to the sourcemod website and figure it out ourselves, so we will be using that:
:$ ./tf2server mods-install # You will now be prompted to install a mod, start with: metamodsource # Now run the command again and install sourcemod this time: :$ ./tf2server mods-install sourcemod
This will install metamod (required for sourcemod), and sourcemod. Launch the server once to make sure it's working and to generate necessary files
:$ ./tf2server st && sleep 10 && ./tf2server sp

Now that sourcemod is installed, you should add yourself as an admin. This will require your steam id, so grab it using SteamID Finder[www.steamidfinder.com]
# edit the admins file :$ nano serverfiles/tf/addons/sourcemod/configs/admins.cfg
The file should look something like this:
# Output * Example: "BAILOPAN" { "auth" "steam" "identity" "STEAM_0:1:16" "flags" "abcdef" } * */ Admins { }

Inside the "admins" section, add an entry for your own steam account:
* This is an entry similar to what I have on my server Admins { "YOURNAMEHERE" { "auth" "steam" "identity" "STEAM_ID" "flags" "z" "immunity" "99" } }

Now start your server, join it, and type "sm_admin" in the console. If a panel pops up on the left side of your screen, you've done everything correctly. If you get an error saying "unknown command", sourcemod isn't installed correctly, and if the error is "[SM] You do not have access to this command", then you messed up something in your admin file



From here, the world's your oyster. Check out the AlliedModders Wiki[wiki.alliedmods.net] and AlliedModers Forum[forums.alliedmods.net] for more information on how to use sourcemod and how to install sourcemod plugins

One plugin I recommend is LilAC[www.littleanticheat.com], or lilac. Lilac is the "new" SMAC, as Sourcemod Anti-Cheat is now no longer actively developed. The install instructions are a little cryptic, but it turns out the folders in the .zip download match folders in the sourcemod folder, so just merge the folder contents and everything should work
Administrating Tips and Resources
Inevitably there will be people who find what I've written here too shallow for their needs, and that's fine. To combat this, I went and found links that should be useful

I'll add more links if I come across them
=== Repopulating A Server ===
Finding a Community Server
Abandoning casual can be accomplished by hosting servers, but by also joining in other community servers or reviving dead ones. Not everyone can run their own server, and not everyone should, however joining one and reviving it is something anyone can do.

Finding a community server is rather easy, you can use the regular community server browser and narrow servers using tags or by using filters such as map name. https://teamwork.tf/ also offers "Community Quickplay"[teamwork.tf], an emulation of the old quickplay system that makes it easy find various servers in a user friendly way.

Once you find the server you want to play on, or the one that fits your needs, join it
Joining a server that is full
So you've found a server you like, but it's completely full. I'm talking 64/64 players full 24/7. What to do? Well, thankfully TF2 has an "Auto Join" feature that once enabled will wait for a player slot to clear up and join for you. You may need to wait a little while, much like queuing for casual, but its either waiting for 2-5 minutes or dealing with 20 servers filled with bots. And honestly sometimes waiting for a slot to open can be faster than queueing, as if you requeue every time a bot ruins the party you'll spend more time queueing than playing.

In the mean time while you wait for a community server slot, you can adjust your loadouts, write a new class config, browse other community servers in case you want to find similar servers, or spam your medal icon in the menu. You can also be playing in a casual match or another community server, the autojoin doesn't care, it'll rip you out of the game your're in to join the server you actually want to play
Reviving a dead server
Unfortunately, the type of gameplay you're looking for may be exclusively held on dead servers. Should you throw a tantrum and rip all the wiring out of your walls in a fit of rage? While it would be entertaining for any spectators, it's unnecessary. Instead of clicking off that server, you might as well join. Many community servers remain dead because its difficult to snowball enough players into a community, but once a few regulars start showing up that server can take off. You may need to idle for a bit longer here, but in the meantime you can practice your rocket jumping or sticky jumping techniques, write another config, or get something to eat. Yes we admit waiting for a dead server to fill up takes some time and can be a bit boring. You are rolling a snowball up a 90 degree hill by yourself.

Luckily, this journey doesn't need to be a solitary one. Friends are amazing to have when it comes to community server revival. The more friends you have join the server, the more you can get the ball rolling up the hill and eventually revive the dead server. Consider bringing friends along when playing community servers so you can boost player numbers in servers you want to join. Chances are if a server is gaining players, more people will join. With the server count rising more people will be intrigued and will want to try it out.

Using this knowledge, you can plan accordingly and at a certain time you and your friends join the server, which will attract other newcomers. Over time those newcomers may become regulars, and perpetuate the cycle. Reviving a server is no easy task, it can be very frustrating and difficult, but as you make more new friends and as you continue on, you will potentially see the revival of a dead server and the rise of a new server community

The trick is to not be completely antisocial, and while we understand that this is quite a big ask for the TF2 community, it IS possible to be slightly less of a ♥♥♥♥♥♥♥♥ for 20 minutes at a time
More tips on populating servers, reviving them, and keeping them alive
If you are a community server owner who is looking to make a server, ensure that you build a strong community. This community will help you upkeep the server and make it easier for outside people to join in on the fun. Do events like giveaways, pick up competitive games, video recording, whatever you can imagine. You want a strong foundation for your community servers as without a community, it's just a server.

For people who want to join community servers, be consistent and don't give up easily. Idling may seem daunting at first, but if you do it consistently, especially with friends, you can help revive a community that comes together and plays on the server. Promote that server, favorite it, talk about the server. Spread awareness about the server you like so more people can join it.
=== Final Words ===
Well, you've done it. You've read mucho texto and have reached the end of this unreasonably long guide. Congratulations. There will be a closed note test in a week, so please study and make sure to bring a number 2 pencil

OK jokes aside, thanks for reading this. This guide took quite a bit of effort to put together, both on mine and Cat_Soldier's sides. I hope that you've genuinely left with a little bit of extra knowledge on how to abandon casual

But really, why abandon casual? Because valve doesn't care. That's the end all, be all of it. Frankly all of this effort wouldn't be necessary if Valve DID care, but alas casual is usually an unplayable mess. What perplexes me is that despite there being clear and obvious proof that Valve has not been putting more than the bare minimum since Jungle Inferno, people still cling to Daddy Gaben. Sorry to break it to you but Gaben isn't going to rescue us, we have to do it ourselves. We have to get our hands dirty because Valve isn't willing to do the work for us anymore. It's unfortunate, but it is what it is

Have a good day, afternoon, or evening. See you in the next rewrite in 2026
Special Thanks
This guide was originally a one-man project, but I acquired some help and believe that I should credit it here:

Special thanks to:
  • Cat_Soldier: Inspiring me to actually finish the guide instead of letting it sit in limbo forever, and for providing some edits to the non-technical sections of the guide
    Further Reading
    Here are some other links and guides you may find useful for running a server
    License
    How To Abandon Casual (Updated 2024) © 2024 by LQIM, Cat_Soldier is licensed under CC BY-SA 4.0[creativecommons.org]
    9 Comments
    LQIM  [author] Jan 29, 2024 @ 8:10am 
    If you can run a server on your own hardware using an operating system you're comfortable with then that's awesome. Most people can't get a static IP address for their home servers if they do have a computer lying around, and even if they can they usually can't properly isolate the two networks so that their server traffic is sufficiently separated from their normal traffic. I wrote this with a VPS in mind as that's what most people will have immediate access to
    dylansang Jan 28, 2024 @ 4:16pm 
    As someone who never plays on Casual, I 100% approve of this guide. It was a mistake for them to introduce such a thing, since it doesn't feel like the other Source multiplayer games at the time. I also do run my own server occasionally, on another Windows PC (different from the gaming laptop I use to play with). That's right, I am not a Linux person. I also don't pay for server hosting since I run my own servers, it's easy and free, since I just launch srcds.exe with the necessary parameters. I used to have Sourcemod plugins on my server, but now I don't run my server with those bullcrap plugins. Yeah, it's just for fun.
    Peanut Jan 27, 2024 @ 9:09pm 
    this is an incredible guide but casual isn't broken
    obama1801 Jan 24, 2024 @ 6:30pm 
    good
    Kraftwerk Jan 21, 2024 @ 11:23am 
    I remember the days before casual and Meet Your Match. Way better!!
    k Jan 20, 2024 @ 11:26pm 
    People with jungle inferno contract pass will actually get what they want because actual casual feels like "inferno" :steamhappy:
    RedReimu Jan 20, 2024 @ 4:03pm 
    Perfect for people who refuse to play on community servers.
    Luigi Jan 20, 2024 @ 2:42pm 
    good guide
    LQIM  [author] Jan 13, 2024 @ 12:22am 
    mucho texto