<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tf2classified.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Webb</id>
	<title>TF2 Classified Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tf2classified.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Webb"/>
	<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/wiki/Special:Contributions/Webb"/>
	<updated>2026-10-21T00:40:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0-rc.0</generator>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11648</id>
		<title>User:Webb/Iceberg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11648"/>
		<updated>2026-10-10T11:01:18Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=Warning! This post makes a non-graphic reference to a sex toy. Yeah, I know.}}&lt;br /&gt;
&lt;br /&gt;
This page lists various inside jokes, memes, incidents, knowledge, and other information about TF2C. It goes from relatively well known things to obscure ones the lower the level. This article is meant to be fun. Anyone can edit this page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Iceberg&lt;br /&gt;
|-&lt;br /&gt;
! Level of obscurity !! Items&lt;br /&gt;
|-&lt;br /&gt;
| Level 1 ||&lt;br /&gt;
* Team Fortress 2 Classified&lt;br /&gt;
* Civilian&lt;br /&gt;
* Eminoma&lt;br /&gt;
* Custom weapons&lt;br /&gt;
|-&lt;br /&gt;
| Level 2 || &lt;br /&gt;
* Team Fortress 2 Classic&lt;br /&gt;
* Four-Team&lt;br /&gt;
* Mobile TF2C port&lt;br /&gt;
* Big knife&lt;br /&gt;
* Vault-F4&lt;br /&gt;
* TF2C wiki&lt;br /&gt;
* Authoring Tools&lt;br /&gt;
* TF2 SDK&lt;br /&gt;
* Fixed visual regressions&lt;br /&gt;
* &amp;quot;Live TF2&amp;quot;&lt;br /&gt;
* Server verification&lt;br /&gt;
|-&lt;br /&gt;
| Level 3 ||&lt;br /&gt;
* Deathmatch&lt;br /&gt;
* Mine Layer discourse&lt;br /&gt;
* Cluck Herbert&lt;br /&gt;
* Casbah&lt;br /&gt;
* MechTech Doublecross&lt;br /&gt;
* Original YLW construction artpass style&lt;br /&gt;
* Title screen server list&lt;br /&gt;
* Old uncanny Scout render&lt;br /&gt;
* Piss and weed&lt;br /&gt;
* Forced rebrand&lt;br /&gt;
* Full-lambert shading&lt;br /&gt;
* Classic-era server verification&lt;br /&gt;
* previous2021&lt;br /&gt;
* SERVER EXPLOSION IMMINENT&lt;br /&gt;
* Blocked out nouns&lt;br /&gt;
* Beer makes you drunk&lt;br /&gt;
* Assets changed to remove Live TF2 lore&lt;br /&gt;
* Destructive Criticism controversy&lt;br /&gt;
* Brick door bug&lt;br /&gt;
* AltTab map playtests&lt;br /&gt;
* Funny Civilian face&lt;br /&gt;
* &amp;quot;Free contributor medal&amp;quot;&lt;br /&gt;
* Team Fortress 2 Classic used stolen Valve code&lt;br /&gt;
* Scout eating a brick&lt;br /&gt;
* YLW/GRN visibility complaints&lt;br /&gt;
* CompTF2C&lt;br /&gt;
* &amp;quot;I&#039;m Civilian! I&#039;m one in a million!&amp;quot;&lt;br /&gt;
* Badges&lt;br /&gt;
* Engineer Fortress&lt;br /&gt;
|-&lt;br /&gt;
| Level 4 ||&lt;br /&gt;
* BadMDL&lt;br /&gt;
* Unused global team player model skins&lt;br /&gt;
* Team Fortress 2 Classic: Community Edition&lt;br /&gt;
* Espionage&lt;br /&gt;
* Scientists removed&lt;br /&gt;
* Coil Gun taken from Fortress Forever&lt;br /&gt;
* CivDM&lt;br /&gt;
* Overpowered&lt;br /&gt;
* Gianni Jump Pad voicelines&lt;br /&gt;
* Doomsday removed for canon reasons&lt;br /&gt;
* VPlugins&lt;br /&gt;
* Double Civilians&lt;br /&gt;
* 2026 April Fools shotgun controversy&lt;br /&gt;
* Mapbase&lt;br /&gt;
* Harbor road smear&lt;br /&gt;
* Jump Pads extinguish you&lt;br /&gt;
* Live TF2 models used in renders&lt;br /&gt;
* TF2C Discord server is one of the oldest&lt;br /&gt;
* Posters of hot men is canon&lt;br /&gt;
* func_restock&lt;br /&gt;
* Mercenary brushing Spy&#039;s teeth&lt;br /&gt;
* vip_badwater Mandela Effect hole&lt;br /&gt;
* Civilian New Year&#039;s song&lt;br /&gt;
* Functional ladders&lt;br /&gt;
* Vault-F4 negative emotional aura&lt;br /&gt;
|-&lt;br /&gt;
| Level 5 ||&lt;br /&gt;
* Cock pump Rejuvenator&amp;lt;ref&amp;gt;https://www.youtube.com/watch?v=xqmH9-2wMRQ&amp;amp;t=1849s&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Henchman in Double Down update video&lt;br /&gt;
* Civilian crown&lt;br /&gt;
* Demoman is canonically high IQ&lt;br /&gt;
* Poacher&#039;s Pride&lt;br /&gt;
* Server exploits during Steam launch&lt;br /&gt;
* Detonator (Demoman melee)&lt;br /&gt;
* Twink censorship&lt;br /&gt;
* tf2c_allow_special_classes plural despite Civilian being the only special class&lt;br /&gt;
* The death of the Civilian&lt;br /&gt;
* Having no weapons causes players to cower instead of A-pose&lt;br /&gt;
* Harbor was originally a port of Hunted&lt;br /&gt;
* Avanti has a Half-Life 2 radio&lt;br /&gt;
* Death and Taxes warehouse render negative emotional aura&amp;lt;ref&amp;gt;https://tf2classified.com/images/media/artwork/promotional/death_and_taxes_weapons.png&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Brick achievement criteria&lt;br /&gt;
* Scientist, Guard, Janitor, and Office Worker classes&lt;br /&gt;
* &amp;quot;Give Civilian a Gun&amp;quot; discourse&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11647</id>
		<title>User:Webb/Iceberg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11647"/>
		<updated>2026-10-10T02:40:42Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=Warning! This post makes a non-graphic reference to a sex toy. Yeah, I know.}}&lt;br /&gt;
&lt;br /&gt;
This page lists various inside jokes, memes, incidents, knowledge, and other information about TF2C. It goes from relatively well known things to obscure ones the lower the level. This article is meant to be fun. Anyone can edit this page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Iceberg&lt;br /&gt;
|-&lt;br /&gt;
! Level of obscurity !! Items&lt;br /&gt;
|-&lt;br /&gt;
| Level 1 ||&lt;br /&gt;
* Team Fortress 2 Classified&lt;br /&gt;
* Civilian&lt;br /&gt;
* Eminoma&lt;br /&gt;
* Custom weapons&lt;br /&gt;
|-&lt;br /&gt;
| Level 2 || &lt;br /&gt;
* Team Fortress 2 Classic&lt;br /&gt;
* Four-Team&lt;br /&gt;
* Mobile TF2C port&lt;br /&gt;
* Big knife&lt;br /&gt;
* Vault-F4&lt;br /&gt;
* TF2C wiki&lt;br /&gt;
* Authoring Tools&lt;br /&gt;
* TF2 SDK&lt;br /&gt;
* Fixed visual regressions&lt;br /&gt;
* &amp;quot;Live TF2&amp;quot;&lt;br /&gt;
* Server verification&lt;br /&gt;
|-&lt;br /&gt;
| Level 3 ||&lt;br /&gt;
* Deathmatch&lt;br /&gt;
* Mine Layer discourse&lt;br /&gt;
* Cluck Herbert&lt;br /&gt;
* Casbah&lt;br /&gt;
* MechTech Doublecross&lt;br /&gt;
* Original YLW construction artpass style&lt;br /&gt;
* Title screen server list&lt;br /&gt;
* Old uncanny Scout render&lt;br /&gt;
* Piss and weed&lt;br /&gt;
* Forced rebrand&lt;br /&gt;
* Full-lambert shading&lt;br /&gt;
* Classic-era server verification&lt;br /&gt;
* previous2021&lt;br /&gt;
* SERVER EXPLOSION IMMINENT&lt;br /&gt;
* Blocked out nouns&lt;br /&gt;
* Beer makes you drunk&lt;br /&gt;
* Assets changed to remove Live TF2 lore&lt;br /&gt;
* Destructive Criticism controversy&lt;br /&gt;
* Brick door bug&lt;br /&gt;
* Funny Civilian face&lt;br /&gt;
* &amp;quot;Free contributor medal&amp;quot;&lt;br /&gt;
* Team Fortress 2 Classic used stolen Valve code&lt;br /&gt;
* Scout eating a brick&lt;br /&gt;
* YLW/GRN visibility complaints&lt;br /&gt;
* CompTF2C&lt;br /&gt;
* &amp;quot;I&#039;m Civilian! I&#039;m one in a million!&amp;quot;&lt;br /&gt;
* Badges&lt;br /&gt;
* Engineer Fortress&lt;br /&gt;
|-&lt;br /&gt;
| Level 4 ||&lt;br /&gt;
* BadMDL&lt;br /&gt;
* Unused global team player model skins&lt;br /&gt;
* Team Fortress 2 Classic: Community Edition&lt;br /&gt;
* Espionage&lt;br /&gt;
* Scientists removed&lt;br /&gt;
* Coil Gun taken from Fortress Forever&lt;br /&gt;
* CivDM&lt;br /&gt;
* Overpowered&lt;br /&gt;
* Gianni Jump Pad voicelines&lt;br /&gt;
* Doomsday removed for canon reasons&lt;br /&gt;
* VPlugins&lt;br /&gt;
* Double Civilians&lt;br /&gt;
* 2026 April Fools shotgun controversy&lt;br /&gt;
* Mapbase&lt;br /&gt;
* Harbor road smear&lt;br /&gt;
* Jump Pads extinguish you&lt;br /&gt;
* Live TF2 models used in renders&lt;br /&gt;
* TF2C Discord server is one of the oldest&lt;br /&gt;
* Posters of hot men is canon&lt;br /&gt;
* func_restock&lt;br /&gt;
* Mercenary brushing Spy&#039;s teeth&lt;br /&gt;
* vip_badwater Mandela Effect hole&lt;br /&gt;
* Civilian New Year&#039;s song&lt;br /&gt;
* Functional ladders&lt;br /&gt;
* Vault-F4 negative emotional aura&lt;br /&gt;
|-&lt;br /&gt;
| Level 5 ||&lt;br /&gt;
* Cock pump Rejuvenator&amp;lt;ref&amp;gt;https://www.youtube.com/watch?v=xqmH9-2wMRQ&amp;amp;t=1849s&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Henchman in Double Down update video&lt;br /&gt;
* Civilian crown&lt;br /&gt;
* Demoman is canonically high IQ&lt;br /&gt;
* Poacher&#039;s Pride&lt;br /&gt;
* Server exploits during Steam launch&lt;br /&gt;
* Detonator (Demoman melee)&lt;br /&gt;
* Twink censorship&lt;br /&gt;
* tf2c_allow_special_classes plural despite Civilian being the only special class&lt;br /&gt;
* The death of the Civilian&lt;br /&gt;
* Having no weapons causes players to cower instead of A-pose&lt;br /&gt;
* Harbor was originally a port of Hunted&lt;br /&gt;
* Avanti has a Half-Life 2 radio&lt;br /&gt;
* Death and Taxes warehouse render negative emotional aura&amp;lt;ref&amp;gt;https://tf2classified.com/images/media/artwork/promotional/death_and_taxes_weapons.png&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Brick achievement criteria&lt;br /&gt;
* Scientist, Guard, Janitor, and Office Worker classes&lt;br /&gt;
* &amp;quot;Give Civilian a Gun&amp;quot; discourse&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11646</id>
		<title>User:Webb/Iceberg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11646"/>
		<updated>2026-10-10T02:32:35Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=Warning! This post makes a non-graphic reference to a sex toy. Yeah, I know.}}&lt;br /&gt;
&lt;br /&gt;
This page lists various inside jokes, memes, incidents, knowledge, and other information about TF2C. It goes from relatively well known things to obscure ones the lower the level. This article is meant to be fun. Anyone can edit this page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Iceberg&lt;br /&gt;
|-&lt;br /&gt;
! Level of obscurity !! Items&lt;br /&gt;
|-&lt;br /&gt;
| Level 1 ||&lt;br /&gt;
* Team Fortress 2 Classified&lt;br /&gt;
* Civilian&lt;br /&gt;
* Eminoma&lt;br /&gt;
* Custom weapons&lt;br /&gt;
|-&lt;br /&gt;
| Level 2 || &lt;br /&gt;
* Team Fortress 2 Classic&lt;br /&gt;
* Four-Team&lt;br /&gt;
* Mobile TF2C port&lt;br /&gt;
* Big knife&lt;br /&gt;
* Vault-F4&lt;br /&gt;
* TF2C wiki&lt;br /&gt;
* Authoring Tools&lt;br /&gt;
* TF2 SDK&lt;br /&gt;
* Fixed visual regressions&lt;br /&gt;
* &amp;quot;Live TF2&amp;quot;&lt;br /&gt;
* Server verification&lt;br /&gt;
|-&lt;br /&gt;
| Level 3 ||&lt;br /&gt;
* Deathmatch&lt;br /&gt;
* Mine Layer discourse&lt;br /&gt;
* Cluck Herbert&lt;br /&gt;
* Casbah&lt;br /&gt;
* MechTech Doublecross&lt;br /&gt;
* Original YLW construction artpass style&lt;br /&gt;
* Title screen server list&lt;br /&gt;
* Old uncanny Scout render&lt;br /&gt;
* Piss and weed&lt;br /&gt;
* Forced rebrand&lt;br /&gt;
* Full-lambert shading&lt;br /&gt;
* Classic-era server verification&lt;br /&gt;
* previous2021&lt;br /&gt;
* SERVER EXPLOSION IMMINENT&lt;br /&gt;
* Blocked out nouns&lt;br /&gt;
* Beer makes you drunk&lt;br /&gt;
* Assets changed to remove Live TF2 lore&lt;br /&gt;
* Destructive Criticism controversy&lt;br /&gt;
* Brick door bug&lt;br /&gt;
* Funny Civilian face&lt;br /&gt;
* &amp;quot;Free contributor medal&amp;quot;&lt;br /&gt;
* Team Fortress 2 Classic used stolen Valve code&lt;br /&gt;
* Scout eating a brick&lt;br /&gt;
* YLW/GRN visibility complaints&lt;br /&gt;
* CompTF2C&lt;br /&gt;
* &amp;quot;I&#039;m Civilian! I&#039;m one in a million!&amp;quot;&lt;br /&gt;
* Badges&lt;br /&gt;
* Engineer Fortress&lt;br /&gt;
|-&lt;br /&gt;
| Level 4 ||&lt;br /&gt;
* BadMDL&lt;br /&gt;
* Unused global team player model skins&lt;br /&gt;
* Team Fortress 2 Classic: Community Edition&lt;br /&gt;
* Espionage&lt;br /&gt;
* Scientists removed&lt;br /&gt;
* Coil Gun taken from Fortress Forever&lt;br /&gt;
* CivDM&lt;br /&gt;
* Overpowered&lt;br /&gt;
* Gianni Jump Pad voicelines&lt;br /&gt;
* Doomsday removed for canon reasons&lt;br /&gt;
* VPlugins&lt;br /&gt;
* Double Civilians&lt;br /&gt;
* 2026 April Fools shotgun controversy&lt;br /&gt;
* Mapbase&lt;br /&gt;
* Harbor road smear&lt;br /&gt;
* Jump Pads extinguish you&lt;br /&gt;
* Medic&lt;br /&gt;
* Live TF2 models used in renders&lt;br /&gt;
* TF2C Discord server is one of the oldest&lt;br /&gt;
* Posters of hot men is canon&lt;br /&gt;
* func_restock&lt;br /&gt;
* Mercenary brushing Spy&#039;s teeth&lt;br /&gt;
* vip_badwater Mandela Effect hole&lt;br /&gt;
* Civilian New Year&#039;s song&lt;br /&gt;
* Functional ladders&lt;br /&gt;
* Vault-F4 negative emotional aura&lt;br /&gt;
|-&lt;br /&gt;
| Level 5 ||&lt;br /&gt;
* Cock pump Rejuvenator&amp;lt;ref&amp;gt;https://www.youtube.com/watch?v=xqmH9-2wMRQ&amp;amp;t=1849s&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Henchman in Double Down update video&lt;br /&gt;
* Civilian crown&lt;br /&gt;
* Demoman is canonically high IQ&lt;br /&gt;
* Poacher&#039;s Pride&lt;br /&gt;
* Server exploits during Steam launch&lt;br /&gt;
* Detonator (Demoman melee)&lt;br /&gt;
* Twink censorship&lt;br /&gt;
* tf2c_allow_special_classes plural despite Civilian being the only special class&lt;br /&gt;
* The death of the Civilian&lt;br /&gt;
* Having no weapons causes players to cower instead of A-pose&lt;br /&gt;
* Harbor was originally a port of Hunted&lt;br /&gt;
* Avanti has a Half-Life 2 radio&lt;br /&gt;
* Death and Taxes warehouse render negative emotional aura&amp;lt;ref&amp;gt;https://tf2classified.com/images/media/artwork/promotional/death_and_taxes_weapons.png&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Brick achievement criteria&lt;br /&gt;
* Scientist, Guard, Janitor, and Office Worker classes&lt;br /&gt;
* &amp;quot;Give Civilian a Gun&amp;quot; discourse&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11645</id>
		<title>User:Webb/Iceberg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Iceberg&amp;diff=11645"/>
		<updated>2026-10-10T02:29:51Z</updated>

		<summary type="html">&lt;p&gt;Webb: Initial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=Warning! This post makes a non-graphic reference to a sex toy. Yeah, I know.}}&lt;br /&gt;
&lt;br /&gt;
This page lists various inside jokes, memes, incidents, knowledge, and other information about TF2C. It goes from relatively well known things to obscure ones the lower the level. This article is meant to be fun. Anyone can edit this page.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Iceberg&lt;br /&gt;
|-&lt;br /&gt;
! Level of obscurity !! Items&lt;br /&gt;
|-&lt;br /&gt;
| Level 1 ||&lt;br /&gt;
* Team Fortress 2 Classified&lt;br /&gt;
* Civilian&lt;br /&gt;
* Eminoma&lt;br /&gt;
* Custom weapons&lt;br /&gt;
|-&lt;br /&gt;
| Level 2 || &lt;br /&gt;
* Team Fortress 2 Classic&lt;br /&gt;
* Four-Team&lt;br /&gt;
* Mobile TF2C port&lt;br /&gt;
* Big knife&lt;br /&gt;
* Vault-F4&lt;br /&gt;
* TF2C wiki&lt;br /&gt;
* Authoring Tools&lt;br /&gt;
* TF2 SDK&lt;br /&gt;
* Fixed visual regressions&lt;br /&gt;
* &amp;quot;Live TF2&amp;quot;&lt;br /&gt;
* Server verification&lt;br /&gt;
|-&lt;br /&gt;
| Level 3 ||&lt;br /&gt;
* Deathmatch&lt;br /&gt;
* Mine Layer discourse&lt;br /&gt;
* Cluck Herbert&lt;br /&gt;
* Casbah&lt;br /&gt;
* MechTech Doublecross&lt;br /&gt;
* Original YLW construction artpass style&lt;br /&gt;
* Title screen server list&lt;br /&gt;
* Old uncanny Scout render&lt;br /&gt;
* Piss and weed&lt;br /&gt;
* Forced rebrand&lt;br /&gt;
* Full-lambert shading&lt;br /&gt;
* Classic-era server verification&lt;br /&gt;
* previous2021&lt;br /&gt;
* SERVER EXPLOSION IMMINENT&lt;br /&gt;
* Blocked out nouns&lt;br /&gt;
* Beer makes you drunk&lt;br /&gt;
* Assets changed to remove Live TF2 lore&lt;br /&gt;
* Destructive Criticism controversy&lt;br /&gt;
* Brick door bug&lt;br /&gt;
* Funny Civilian face&lt;br /&gt;
* &amp;quot;Free contributor medal&amp;quot;&lt;br /&gt;
* Team Fortress 2 Classic used stolen Valve code&lt;br /&gt;
* Scout eating a brick&lt;br /&gt;
* YLW/GRN visibility complaints&lt;br /&gt;
* CompTF2C&lt;br /&gt;
* &amp;quot;I&#039;m Civilian! I&#039;m one in a million!&amp;quot;&lt;br /&gt;
* Badges&lt;br /&gt;
* Engineer Fortress&lt;br /&gt;
|-&lt;br /&gt;
| Level 4 ||&lt;br /&gt;
* BadMDL&lt;br /&gt;
* Unused global team player model skins&lt;br /&gt;
* Team Fortress 2 Classic: Community Edition&lt;br /&gt;
* Espionage&lt;br /&gt;
* Scientists removed&lt;br /&gt;
* Coil Gun taken from Fortress Forever&lt;br /&gt;
* CivDM&lt;br /&gt;
* Overpowered&lt;br /&gt;
* Gianni Jump Pad voicelines&lt;br /&gt;
* Doomsday removed for canon reasons&lt;br /&gt;
* VPlugins&lt;br /&gt;
* Double Civilians&lt;br /&gt;
* 2026 April Fools shotgun controversy&lt;br /&gt;
* Mapbase&lt;br /&gt;
* Harbor road smear&lt;br /&gt;
* Jump Pads extinguish you&lt;br /&gt;
* Medic&lt;br /&gt;
* Live TF2 models used in renders&lt;br /&gt;
* TF2C Discord server is one of the oldest&lt;br /&gt;
* Posters of hot men is canon&lt;br /&gt;
* func_restock&lt;br /&gt;
* Mercenary brushing Spy&#039;s teeth&lt;br /&gt;
* vip_badwater Mandela Effect hole&lt;br /&gt;
* Civilian New Year&#039;s song&lt;br /&gt;
* Functional ladders&lt;br /&gt;
|-&lt;br /&gt;
| Level 5 ||&lt;br /&gt;
* Cock pump Rejuvenator&amp;lt;ref&amp;gt;https://www.youtube.com/watch?v=xqmH9-2wMRQ&amp;amp;t=1849s&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Henchman in Double Down update video&lt;br /&gt;
* Civilian crown&lt;br /&gt;
* Demoman is canonically high IQ&lt;br /&gt;
* Poacher&#039;s Pride&lt;br /&gt;
* Server exploits during Steam launch&lt;br /&gt;
* Detonator (Demoman melee)&lt;br /&gt;
* Twink censorship&lt;br /&gt;
* tf2c_allow_special_classes plural despite Civilian being the only special class&lt;br /&gt;
* The death of the Civilian&lt;br /&gt;
* Having no weapons causes players to cower instead of A-pose&lt;br /&gt;
* Harbor was originally a port of Hunted&lt;br /&gt;
* Avanti has a Half-Life 2 radio&lt;br /&gt;
* Death and Taxes warehouse render negative emotional aura&amp;lt;ref&amp;gt;https://tf2classified.com/images/media/artwork/promotional/death_and_taxes_weapons.png&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Brick achievement criteria&lt;br /&gt;
* Scientist, Guard, Janitor, and Office Worker classes&lt;br /&gt;
* &amp;quot;Give Civilian a Gun&amp;quot; discourse&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11644</id>
		<title>Class gamemodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11644"/>
		<updated>2026-10-03T12:29:48Z</updated>

		<summary type="html">&lt;p&gt;Webb: The fact it&amp;#039;s currently a CTF map isn&amp;#039;t relevant to this page, so should be tooltipped instead, small credit corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Class gamemodes&#039;&#039;&#039; are a family of community gamemodes that restrict teams to a certain class. Unlike &#039;&#039;Class Wars&#039;&#039;, the defining characteristic of these gamemodes are that weapons that are typically unusable by the class are available through pickups or custom item schemas. The most popular format is &#039;&#039;Class Team Deathmatch&#039;&#039; (referred to as just &#039;&#039;Class Deathmatch&#039;&#039;), usually only allowing the Civilian.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;!-- This history section is based on a section from the Civilian Deathmatch page on the Moon&#039;s Pub Wiki, released under the terms of the CC-BY-SA 4.0 license, written by Static Fanatic, Warrior5000, and webb --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As part of her April Fools, 2024 map [https://gamebanana.com/mods/665406 Crush], Wheatttt created a version of Team Deathmatch that restricted teams to Civilian, which she dubbed &#039;&#039;Civilian Deathmatch&#039;&#039; - now referred to as &#039;&#039;Class Deathmatch&#039;&#039;. Using the now-removed {{code|tf_player_equip}} entity, she made pickups that could give players specific weapons with almost no restrictions, and placed them throughout the map. Notably, a [[Rocket Launcher]] pickup is occasionally made accessible in the centre building, which temporarily boosts anyone who grabs it with [[Critical hits|Crits]] and [[ÜberCharge]].&lt;br /&gt;
&lt;br /&gt;
Inspired by Crush, Moonrider later released his own Class Deathmatch map [https://gamebanana.com/mods/662374 Rift] on what is presumed to be April Fools Day, 2025. It plays similarly to Crush, with weapon pickups scattered throughout the map and one powerful pickup - this time a boosted [[R.P.G.]] - made available at certain times in the centre. Rift does however feature a more vertical layout than Crush, with jump pads and staircases allowing players to traverse between the map&#039;s layers quickly.&lt;br /&gt;
&lt;br /&gt;
On June 11, 2025, [[User:Static Fanatic|Static Fanatic]] released the map [https://gamebanana.com/mods/599995 Dead End], which used a new gamemode dubbed &#039;&#039;Civilian CTF&#039;&#039; - now called &#039;&#039;Class CTF&#039;&#039; - that was initially made without knowledge of Crush or Rift. As opposed to Class Deathmatch&#039;s &#039;&#039;Team Deathmatch&#039;&#039; format, Class CTF was instead based off [[Capture the Flag]]. Unlike the Class Deathmatch maps that came before it, pickups in Dead End could only found in each team&#039;s spawn area, giving either the [[Tranquilizer Gun]] and [[Pistol]], [[Revolver]] and [[SMG]] or [[Gunboats]] and [[Coilgun]], allowing players to equip full loadouts as the [[Civilian]] immediately after spawning in. The pickups were later removed in favour of a custom weapons pack built into the map, allowing players to equip any combination of the six weapons from the loadout menu.&lt;br /&gt;
&lt;br /&gt;
On July 14, 2025, Static Fanatic released a TF2C port of the &#039;&#039;Half-Life 2: Deathmatch&#039;&#039; map [https://combineoverwiki.net/wiki/Powerhouse Powerhouse] called [https://gamebanana.com/mods/667739 Pyrohouse]. Unlike previous Class Deathmatch maps, players are instead restricted to Pyro, hence the map&#039;s name and the original gamemode name &#039;&#039;PyroDM&#039;&#039; - later changed to &#039;&#039;Class Deathmatch&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
As a joke, Static Fanatic released a Class Deathmatch conversion of Dead End called [https://gamebanana.com/mods/617044 Sled End] on August 30, 2025. Like other Class Deathmatch maps, pickups could be found all across Sled End, though it didn&#039;t feature a powerful pickup in the centre. The map was later converted back into a CTF format and had its pickups removed, now instead allowing players to use any class.&lt;br /&gt;
&lt;br /&gt;
Afterwards, webb converted [[Hydro (Domination)]] to a Class Deathmatch format.&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Picture&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Format&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Authors&lt;br /&gt;
|- &lt;br /&gt;
| [https://gamebanana.com/mods/665406 &#039;&#039;&#039;Crush&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Crush.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Wheatttt, {{tooltip|webb|Vscript port}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/662374 &#039;&#039;&#039;Rift&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Rift.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Moonrider, {{tooltip|webb|Vscript Edition}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/599995 &#039;&#039;&#039;Dead End&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Dead End.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Capture the Flag (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/617044 &#039;&#039;&#039;Sled End&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Sled End.jpeg|200px]]&lt;br /&gt;
| {{tooltip|formerly &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;|Was later changed to an all-class CTF map.}}&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/667739 &#039;&#039;&#039;Pyrohouse&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Pyrohouse.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Pyro)&#039;&#039;&lt;br /&gt;
| Static Fanatic, {{tooltip|Michael &amp;quot;Wolf&amp;quot; Schulz|Original map}}, {{tooltip|webb|Vscript Edition}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hydro (CDM)&#039;&#039;&#039;&lt;br /&gt;
| [[File:Hydro_(CDM).jpg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| webb, {{tooltip|Valve Software|Original map}}, {{tooltip|Eminoma|Original map}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Gamemodes]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Talk:Class_gamemodes&amp;diff=11581</id>
		<title>Talk:Class gamemodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Talk:Class_gamemodes&amp;diff=11581"/>
		<updated>2026-09-21T16:11:15Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CivDM, CivCTF and PyroDM are obsolete terms now that Class DM and Class CTF exist, so it&#039;s best to mention their obsoleteness (e.g. CivDM - now called Class DM - is blah blah blah...) and then just use the new terms from that point on so it&#039;s much less confusing to read and write this page. --[[User:Static Fanatic|Static Fanatic]] ([[User talk:Static Fanatic|talk]]) 12:54, 21 September 2026 (UTC)&lt;br /&gt;
: I wouldn&#039;t say they&#039;re /obsolete/, just kind of colloquial and either imprecise or overly broad (in the same way a CivCTF map is referred to as CivDM by most people.) I kind of just made up terms for the article because there isn&#039;t really an overarching/consistent way to refer to class gamemodes. I tried at least to be adjacent to the recent decision between us and Moon to adopt CDM. But yeah I think it should be more clear how the term has evolved and its relation to everything else. [[User:Webb|Webb]] ([[User talk:Webb|talk]]) 16:11, 21 September 2026 (UTC)&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11566</id>
		<title>Class gamemodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11566"/>
		<updated>2026-09-21T11:30:46Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Class gamemodes&#039;&#039;&#039; are a family of community gamemodes that restrict teams to a certain class. Unlike &#039;&#039;Class Wars&#039;&#039;, the defining characteristic of these gamemodes are that weapons that are typically unusable by the class are available through pickups or custom item schemas. The most popular format is &#039;&#039;Class Team Deathmatch&#039;&#039; (referred to as just &#039;&#039;Class Deathmatch&#039;&#039;), usually only allowing the Civilian.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;!-- This history section is based on a section from the Civilian Deathmatch page on the Moon&#039;s Pub Wiki, released under the terms of the CC-BY-SA 4.0 license, written by Static Fanatic, Warrior5000, and webb --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Class TDM was created by Wheatttt, as a part of her map [https://gamebanana.com/mods/665406 Crush] for April Fools, 2024. The gamemode was dubbed &#039;&#039;Civilian Deathmatch&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moonrider would later go on to make his own CivDM map, [https://gamebanana.com/mods/662374 Rift], inspired by Crush a year later. The exact date of the initial release of Rift is unknown as Moonrider deleted earlier revisions on GameBanana, but it&#039;s believed to be April Fool&#039;s Day, 2025.&lt;br /&gt;
&lt;br /&gt;
Initially unaware of CivDM, mapper Static Fanatic released [https://gamebanana.com/mods/599995 Dead End] on June 11, 2025. This map was the first CivDM map to not use a &#039;&#039;Team Deathmatch&#039;&#039; ruleset, instead using a &#039;&#039;Capture the Flag&#039;&#039; format dubbed &#039;&#039;Civilian CTF&#039;&#039; that used a custom weapons pack instead of weapon pickups. He would later create [https://gamebanana.com/mods/617044 Sled End], a Team Deathmatch conversion of the map before ultimately converting it to an all-class CTF map.&lt;br /&gt;
&lt;br /&gt;
Static Fanatic later reworked the &#039;&#039;Half-Life 2: Deathmatch&#039;&#039; map [https://combineoverwiki.net/wiki/Powerhouse Powerhouse] for Team Fortress 2 Classified, using a variation of CivDM where the Civilian is swapped out for Pyro, dubbed &#039;&#039;PyroDM&#039;&#039;. As the map shared its name with a [[Powerhouse|stock Control Points map]], Static Fanatic renamed it to [https://gamebanana.com/mods/667739 Pyrohouse].&lt;br /&gt;
&lt;br /&gt;
Afterwards, webb would convert [[Hydro (Domination)]] to a Class Deathmatch format.&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Picture&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Format&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Authors&lt;br /&gt;
|- &lt;br /&gt;
| [https://gamebanana.com/mods/665406 &#039;&#039;&#039;Crush&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Crush.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Wheatttt&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/662374 &#039;&#039;&#039;Rift&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Rift.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Moonrider&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/599995 &#039;&#039;&#039;Dead End&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Dead End.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Capture the Flag (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/617044 &#039;&#039;&#039;Sled End&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Sled End.jpeg|200px]]&lt;br /&gt;
| {{tooltip|&#039;&#039;Capture the Flag (Civilian)&#039;&#039;|formerly Team Deathmatch (Civilian)}}&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/667739 &#039;&#039;&#039;Pyrohouse&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Pyrohouse.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Pyro)&#039;&#039;&lt;br /&gt;
| Static Fanatic, {{tooltip|Michael &amp;quot;Wolf&amp;quot; Schulz|Original map}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hydro (CDM)&#039;&#039;&#039;&lt;br /&gt;
| [[File:Hydro_(CDM).jpg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| webb, {{tooltip|Valve Software|Original map}}, {{tooltip|Eminoma|Original map}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Gamemodes]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11565</id>
		<title>Class gamemodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11565"/>
		<updated>2026-09-21T11:29:44Z</updated>

		<summary type="html">&lt;p&gt;Webb: Undid revision 11564 by Static Fanatic (talk) Rationale: &amp;quot;Class-specific gamemode&amp;quot; isn&amp;#039;t descriptive of the article.. &amp;quot;Class gamemode&amp;quot; is derived from PyroDM/CivDM where it&amp;#039;s $CLASS $GAMEMODE. The recent adoption of CDM as a prefix makes this feel more correct. Having a map designed for a gamemode is implicit, and I think the weapon aspect is a requirement to be a Class gamemode as opposed to Class Wars.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Class gamemodes&#039;&#039;&#039; are a family of community gamemodes that restrict teams to a certain class. Unlike &#039;&#039;Class Wars&#039;&#039;, the defining characteristic of these gamemodes are that weapons that are typically unusable by the class are available through pickups or custom item schemas. The most popular format is &#039;&#039;Class Team Deathmatch&#039;&#039; (referred to as just &#039;&#039;Class Deathmatch&#039;&#039;), usually only allowing the Civilian.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;!-- This history section is based on a section from the Civilian Deathmatch page on the Moon&#039;s Pub Wiki, released under the terms of the CC-BY-SA 4.0 license, written by Static Fanatic, Warrior5000, and webb --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Class TDM was created by Wheatttt, as a part of her map [https://gamebanana.com/mods/665406 Crush] for April Fools, 2024. The gamemode was dubbed &#039;&#039;Civilian Deathmatch&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moonrider would later go on to make his own CivDM map, [https://gamebanana.com/mods/662374 Rift], inspired by Crush a year later. The exact date of the initial release of Rift is unknown as Moonrider deleted earlier revisions on GameBanana, but it&#039;s believed to be April Fool&#039;s Day, 2025.&lt;br /&gt;
&lt;br /&gt;
Initially unaware of CivDM, mapper Static Fanatic released [https://gamebanana.com/mods/599995 Dead End] on June 11, 2025. This map was the first CivDM map to not use a &#039;&#039;Team Deathmatch&#039;&#039; ruleset, instead using a &#039;&#039;Capture the Flag&#039;&#039; format dubbed &#039;&#039;Civilian CTF&#039;&#039; that used a custom weapons pack instead of weapon pickups. He would later create [https://gamebanana.com/mods/617044 Sled End], a Team Deathmatch conversion of the map before ultimately converting it to an all-class CTF map.&lt;br /&gt;
&lt;br /&gt;
Static Fanatic later reworked the &#039;&#039;Half-Life 2: Deathmatch&#039;&#039; map [https://combineoverwiki.net/wiki/Powerhouse Powerhouse] for Team Fortress 2 Classified, using a variation of CivDM where the Civilian is swapped out for Pyro, dubbed &#039;&#039;PyroDM&#039;&#039; but officially referred to as just Team Deathmatch. As the map shared its name with a [[Powerhouse|stock Control Points map]], Static Fanatic renamed it to [https://gamebanana.com/mods/667739 Pyrohouse].&lt;br /&gt;
&lt;br /&gt;
Afterwards, webb would convert [[Hydro (Domination)]] to a Class Deathmatch format.&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Picture&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Format&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Authors&lt;br /&gt;
|- &lt;br /&gt;
| [https://gamebanana.com/mods/665406 &#039;&#039;&#039;Crush&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Crush.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Wheatttt&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/662374 &#039;&#039;&#039;Rift&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Rift.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Moonrider&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/599995 &#039;&#039;&#039;Dead End&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Dead End.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Capture the Flag (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/617044 &#039;&#039;&#039;Sled End&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Sled End.jpeg|200px]]&lt;br /&gt;
| {{tooltip|&#039;&#039;Capture the Flag (Civilian)&#039;&#039;|formerly Team Deathmatch (Civilian)}}&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| [https://gamebanana.com/mods/667739 &#039;&#039;&#039;Pyrohouse&#039;&#039;&#039;]&lt;br /&gt;
| [[File:Pyrohouse.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Pyro)&#039;&#039;&lt;br /&gt;
| Static Fanatic, {{tooltip|Michael &amp;quot;Wolf&amp;quot; Schulz|Original map}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hydro (CDM)&#039;&#039;&#039;&lt;br /&gt;
| [[File:Hydro_(CDM).jpg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| webb, {{tooltip|Valve Software|Original map}}, {{tooltip|Eminoma|Original map}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Gamemodes]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11558</id>
		<title>Class gamemodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11558"/>
		<updated>2026-09-21T09:05:31Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Class gamemodes&#039;&#039;&#039; are a family of community gamemodes that restrict teams to a certain class. Unlike &#039;&#039;Class Wars&#039;&#039;, the defining characteristic of these gamemodes are that weapons that are typically unusable by the class are available through pickups or custom item schemas. The most popular format is &#039;&#039;Class Team Deathmatch&#039;&#039; (referred to as just &#039;&#039;Class Deathmatch&#039;&#039;), usually only allowing the Civilian.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;!-- This history section is based on a section from the Civilian Deathmatch page on the Moon&#039;s Pub Wiki, released under the terms of the CC-BY-SA 4.0 license, written by Static Fanatic, Warrior5000, and webb --&amp;gt;&lt;br /&gt;
Class TDM was created by Wheatttt, as a part of her map [[Crush]] for April Fools, 2024. The gamemode was dubbed &#039;&#039;Civilian Deathmatch&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moonrider would later go on to make his own CivDM map, [[Rift]], inspired by Crush a year later. The exact date of the initial release of Rift is unknown as Moonrider deleted earlier revisions on GameBanana, but it&#039;s believed to be April Fool&#039;s Day, 2025.&lt;br /&gt;
&lt;br /&gt;
Initially unaware of CivDM, mapper Static Fanatic released Dead End on June 11, 2025. This map was the first CivDM map to not use a &#039;&#039;Team Deathmatch&#039;&#039; ruleset, instead using a &#039;&#039;Capture the Flag&#039;&#039; format dubbed &#039;&#039;Civilian CTF&#039;&#039; that used a custom weapons pack instead of weapon pickups. They would later create Sled End, a Team Deathmatch conversion of the map before ultimately converting it to an all-class CTF map.&lt;br /&gt;
&lt;br /&gt;
Static Fanatic later reworked the &#039;&#039;Half-Life 2: Deathmatch&#039;&#039; map &#039;&#039;Powerhouse&#039;&#039; for Team Fortress 2 Classified, using a variation of CivDM where the Civilian is swapped out for Pyro, dubbed &#039;&#039;PyroDM&#039;&#039; but officially referred to as just Team Deathmatch. As the map shared its name with a [https://wiki.tf2classic.com/wiki/Powerhouse stock Control Points map], Static Fanatic renamed it to [[Pyrohouse]].&lt;br /&gt;
&lt;br /&gt;
Afterwards, webb would convert [[Hydro (Domination)]] to a Class Deathmatch format.&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Picture&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Format&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Authors&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Crush&#039;&#039;&#039;&lt;br /&gt;
| [[File:Crush.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Wheatttt&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rift&#039;&#039;&#039;&lt;br /&gt;
| [[File:Rift.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Moonrider&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dead End&#039;&#039;&#039;&lt;br /&gt;
| [[File:Dead End.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Capture the Flag (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sled End&#039;&#039;&#039;&lt;br /&gt;
| [[File:Sled End.jpeg|200px]]&lt;br /&gt;
| formerly &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pyrohouse&#039;&#039;&#039;&lt;br /&gt;
| [[File:Pyrohouse.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Pyro)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hydro (CDM)&#039;&#039;&#039;&lt;br /&gt;
| [[File:Hydro_(CDM).jpg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| webb, Valve Software (original map), Eminoma (original map)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Gamemodes]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11557</id>
		<title>Class gamemodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Class_gamemodes&amp;diff=11557"/>
		<updated>2026-09-21T08:59:23Z</updated>

		<summary type="html">&lt;p&gt;Webb: Create page on community class gamemodes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Class gamemodes&#039;&#039;&#039; are a family of community gamemodes that restrict teams to a certain class. Unlike &#039;&#039;Class Wars&#039;&#039;, the defining characteristic of these gamemodes are that weapons that are typically unusable by the class are available through pickups or custom item schemas. The most popular format is &#039;&#039;Class Team Deathmatch&#039;&#039; (referred to as just &#039;&#039;Class Deathmatch&#039;&#039;), usually only allowing the Civilian.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;!-- This history section is based on a section from the Civilian Deathmatch page on the Moon&#039;s Pub Wiki, released under the terms of the CC-BY-SA 4.0 license, written by Static Fanatic, Warrior5000, and webb --&amp;gt;&lt;br /&gt;
Class TDM was created by Wheatttt, as a part of her map [[Crush]] for April Fools, 2024. The gamemode was dubbed &#039;&#039;Civilian Deathmatch&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Moonrider would later go on to make his own CivDM map, [[Rift]], inspired by Crush a year later. The exact date of the initial release of Rift is unknown as Moonrider deleted earlier revisions on GameBanana, but it&#039;s believed to be April Fool&#039;s Day, 2025.&lt;br /&gt;
&lt;br /&gt;
Initially unaware of CivDM, mapper Static Fanatic released Dead End on June 11, 2025. This map was the first CivDM map to not use a &#039;&#039;Team Deathmatch&#039;&#039; ruleset, instead using a &#039;&#039;Capture the Flag&#039;&#039; format dubbed &#039;&#039;Civilian CTF&#039;&#039; that used a custom weapons pack instead of weapon pickups. They would later create Sled End, a Team Deathmatch conversion of the map before ultimately converting it to an all-class CTF map.&lt;br /&gt;
&lt;br /&gt;
Static Fanatic later reworked the &#039;&#039;Half-Life 2: Deathmatch&#039;&#039; map &#039;&#039;Powerhouse&#039;&#039; for Team Fortress 2 Classified, using a variation of CivDM where the Civilian is swapped out for Pyro, dubbed &#039;&#039;PyroDM&#039;&#039; but officially referred to as just Team Deathmatch. As the map shared its name with a [https://wiki.tf2classic.com/wiki/Powerhouse stock Control Points map], Static Fanatic renamed it to [[Pyrohouse]].&lt;br /&gt;
&lt;br /&gt;
Afterwards, webb would convert [[Hydro (Domination)]] to a Class Deathmatch format.&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Name&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Picture&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Format&lt;br /&gt;
! class=&amp;quot;header&amp;quot; style=&amp;quot;font-size: 16px;background-color: #583a31;color: white;&amp;quot; | Authors&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Crush&#039;&#039;&#039;&lt;br /&gt;
| [[File:Crush.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Wheatttt&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rift&#039;&#039;&#039;&lt;br /&gt;
| [[File:Rift.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Moonrider&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Dead End&#039;&#039;&#039;&lt;br /&gt;
| [[File:Dead End.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Capture the Flag (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sled End&#039;&#039;&#039;&lt;br /&gt;
| [[File:Sled End.jpeg|200px]]&lt;br /&gt;
| formerly &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pyrohouse&#039;&#039;&#039;&lt;br /&gt;
| [[File:Pyrohouse.jpeg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Pyro)&#039;&#039;&lt;br /&gt;
| Static Fanatic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Hydro (CDM)&#039;&#039;&#039;&lt;br /&gt;
| [[File:Hydro_(CDM).jpg|200px]]&lt;br /&gt;
| &#039;&#039;Team Deathmatch (Civilian)&#039;&#039;&lt;br /&gt;
| webb, Valve Software (original map), Eminoma (original map)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=File:Hydro_(CDM).jpg&amp;diff=11556</id>
		<title>File:Hydro (CDM).jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=File:Hydro_(CDM).jpg&amp;diff=11556"/>
		<updated>2026-09-21T08:51:34Z</updated>

		<summary type="html">&lt;p&gt;Webb: A screenshot of webb&amp;#039;s CDM port of Hydro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of webb&#039;s CDM port of Hydro&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=File:Pyrohouse.jpeg&amp;diff=11555</id>
		<title>File:Pyrohouse.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=File:Pyrohouse.jpeg&amp;diff=11555"/>
		<updated>2026-09-21T08:33:50Z</updated>

		<summary type="html">&lt;p&gt;Webb: A screenshot of Pyrohouse by Static fanatic, taken by me.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of Pyrohouse by Static fanatic, taken by me.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=File:Sled_End.jpeg&amp;diff=11554</id>
		<title>File:Sled End.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=File:Sled_End.jpeg&amp;diff=11554"/>
		<updated>2026-09-21T08:23:02Z</updated>

		<summary type="html">&lt;p&gt;Webb: Screenshot of Sled End by Static Fanatic, taken by me.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Screenshot of Sled End by Static Fanatic, taken by me.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=File:Dead_End.jpeg&amp;diff=11552</id>
		<title>File:Dead End.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=File:Dead_End.jpeg&amp;diff=11552"/>
		<updated>2026-09-21T08:17:22Z</updated>

		<summary type="html">&lt;p&gt;Webb: A screen shot Dead End. The map is owned by Static Fanatic, screenshot taken by me.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screen shot Dead End. The map is owned by Static Fanatic, screenshot taken by me.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=File:Rift.jpeg&amp;diff=11551</id>
		<title>File:Rift.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=File:Rift.jpeg&amp;diff=11551"/>
		<updated>2026-09-21T08:08:57Z</updated>

		<summary type="html">&lt;p&gt;Webb: A screenshot of Rift by Moonrider. While this is taken from the port page, I was the one who took the screenshot, so I give permission for it to be used. Though the map overall still belongs to Moonrider.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of Rift by Moonrider. While this is taken from the port page, I was the one who took the screenshot, so I give permission for it to be used. Though the map overall still belongs to Moonrider.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=File:Crush.jpeg&amp;diff=11550</id>
		<title>File:Crush.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=File:Crush.jpeg&amp;diff=11550"/>
		<updated>2026-09-21T08:04:48Z</updated>

		<summary type="html">&lt;p&gt;Webb: A screenshot of Crush by Wheatttt. While this is taken from the port page, I was the one who took the screenshot, so I give permission for it to be used. Though the map overall still belongs to Wheatttt.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
A screenshot of Crush by Wheatttt. While this is taken from the port page, I was the one who took the screenshot, so I give permission for it to be used. Though the map overall still belongs to Wheatttt.&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{Other}}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=11342</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=11342"/>
		<updated>2026-08-27T02:56:23Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libcurl3-gnutls libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a public-facing server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You&#039;ll need to install the development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, the latest known working development build is 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF2 Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF2 Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/gamedata/custom/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SourceMod extensions doesn&#039;t load with &amp;quot;Extension version is too new/old to load&amp;quot; error ===&lt;br /&gt;
&lt;br /&gt;
Depending on what version of SourceMod you have installed you will either need to install the extension API 8 or API 9 version of extensions. Sourcemod 1.13 v7354 bumped the extension API number, which breaks extensions built for older versions. &lt;br /&gt;
&lt;br /&gt;
If it complains about the extension being too new, you&#039;ll probably need to install the API 8 version. If it complains about the extension being too old then you&#039;ll probably need to install the API 9 version.&lt;br /&gt;
&lt;br /&gt;
The patched TF2 Tools extension has builds for both extension API versions in the pinned message. However, an API 9 build is not available for Windows as of writing.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=11263</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=11263"/>
		<updated>2026-08-01T10:52:37Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add troubleshooting part for extension versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a public-facing server.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to install the &#039;&#039;&#039;a development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, the latest known working development build is 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF2 Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF2 Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/gamedata/custom/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SourceMod extensions doesn&#039;t load with &amp;quot;Extension version is too new/old to load&amp;quot; error ===&lt;br /&gt;
&lt;br /&gt;
Depending on what version of SourceMod you have installed you will either need to install the extension API 8 or API 9 version of extensions. Sourcemod 1.13 v7354 bumped the extension API number, which breaks extensions built for older versions. &lt;br /&gt;
&lt;br /&gt;
If it complains about the extension being too new, you&#039;ll probably need to install the API 8 version. If it complains about the extension being too old then you&#039;ll probably need to install the API 9 version.&lt;br /&gt;
&lt;br /&gt;
The patched TF2 Tools extension has builds for both extension API versions in the pinned message. However, an API 9 build is not available for Windows as of writing.&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Server_Verification&amp;diff=11245</id>
		<title>User:Webb/Server Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Server_Verification&amp;diff=11245"/>
		<updated>2026-07-20T19:10:33Z</updated>

		<summary type="html">&lt;p&gt;Webb: Fix URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Server Verification&#039;&#039;&#039; is a feature that allows servers to gain players, fortune, and fame without work or effort by feeding their servers to one of Satan&#039;s minions, named Veri. Servers must follow a set of guidelines in order to do so.&lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
Before the launch of TF2C on Steam, a former lead developer named NitoAndTheFunkyBunch was in a conundrum. He didn&#039;t have $100 for the Steam developer fee to publish the game, and in a desperate attempt to raise funds made a deal with the devil. In exchange for feeding servers and their souls to one of his hungry minions named Veri, he would receive the funds needed and would grant any fed server infinite fortune and fame. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, Veri&#039;s digestive tract needs devilish servers in order to avoid bouts of IBS. This lead to the Server Verification system, which outlined devilish guidelines to ensure he doesn&#039;t shit his pants. This included requiring servers to be woke, have a server population of at least 75% furry and/or queer people, and to violate the first amendment rights of their players. This is due to the Americans with Disability Act (ADA.) All servers would be required to follow these guidelines.&lt;br /&gt;
&lt;br /&gt;
While this worked fine at first, Jesus (the biblical one) came back to Earth to criticise Eminoma for this system due to it being Satanic, as he was pissed he couldn&#039;t play the game anymore. Many missionaries would hear his message and relentlessly spray holy water all over various verified TF2C servers. &lt;br /&gt;
&lt;br /&gt;
Veri would experience IBS attacks due to this. Eventually Boba, one of the current lead devs, would have enough of Veri hogging the toilet at Eminoma HQ and tried to kick Veri out. However, as the game grew and many more servers would be created, Veri gained weight. He wasn&#039;t able to fit through the front door due to his size. This left Eminoma legally liable for Veri. Until he loses enough weight to fit through the door they are required to care for him and feed him servers. This has indefinitely delayed the removal of server verification.&lt;br /&gt;
&lt;br /&gt;
= Application =&lt;br /&gt;
&lt;br /&gt;
Servers are able to apply at tf2classified.com/verification through a special portal where they give up the legal right to their servers&#039; souls before being fed to Veri. However, this site temporarily goes up and down to help manage Veri&#039;s weight.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* [https://servers.tf2classified.com/ Verified server list]&lt;br /&gt;
* [https://youtube.com/watch?v=dQw4w9WgXcQ Leaked bodycam footage of Eminoma and police attempting to remove Veri from their headquarters]&lt;br /&gt;
&lt;br /&gt;
{{Ambox|contents=This article is intended to be humourous, and isn&#039;t an official statement by Eminoma or anyone on the wiki. It&#039;s my user namespace. MINE. MINE!!!}}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Server_Verification&amp;diff=11244</id>
		<title>User:Webb/Server Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Server_Verification&amp;diff=11244"/>
		<updated>2026-07-20T19:09:56Z</updated>

		<summary type="html">&lt;p&gt;Webb: Humourous user namespace article about server verification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Server Verification&#039;&#039;&#039; is a feature that allows servers to gain players, fortune, and fame without work or effort by feeding their servers to one of Satan&#039;s minions, named Veri. Servers must follow a set of guidelines in order to do so.&lt;br /&gt;
&lt;br /&gt;
= History =&lt;br /&gt;
&lt;br /&gt;
Before the launch of TF2C on Steam, a former lead developer named NitoAndTheFunkyBunch was in a conundrum. He didn&#039;t have $100 for the Steam developer fee to publish the game, and in a desperate attempt to raise funds made a deal with the devil. In exchange for feeding servers and their souls to one of his hungry minions named Veri, he would receive the funds needed and would grant any fed server infinite fortune and fame. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, Veri&#039;s digestive tract needs devilish servers in order to avoid bouts of IBS. This lead to the Server Verification system, which outlined devilish guidelines to ensure he doesn&#039;t shit his pants. This included requiring servers to be woke, have a server population of at least 75% furry and/or queer people, and to violate the first amendment rights of their players. This is due to the Americans with Disability Act (ADA.) All servers would be required to follow these guidelines.&lt;br /&gt;
&lt;br /&gt;
While this worked fine at first, Jesus (the biblical one) came back to Earth to criticise Eminoma for this system due to it being Satanic, as he was pissed he couldn&#039;t play the game anymore. Many missionaries would hear his message and relentlessly spray holy water all over various verified TF2C servers. &lt;br /&gt;
&lt;br /&gt;
Veri would experience IBS attacks due to this. Eventually Boba, one of the current lead devs, would have enough of Veri hogging the toilet at Eminoma HQ and tried to kick Veri out. However, as the game grew and many more servers would be created, Veri gained weight. He wasn&#039;t able to fit through the front door due to his size. This left Eminoma legally liable for Veri. Until he loses enough weight to fit through the door they are required to care for him and feed him servers. This has indefinitely delayed the removal of server verification.&lt;br /&gt;
&lt;br /&gt;
= Application =&lt;br /&gt;
&lt;br /&gt;
Servers are able to apply at tf2classified.com/verification through a special portal where they give up the legal right to their servers&#039; souls before being fed to Veri. However, this site temporarily goes up and down to help manage Veri&#039;s weight.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* [https://servers.tf2classified.com/ Verified server list]&lt;br /&gt;
* [https://youtube.com/watch&amp;amp;v=dQw4w9WgXcQ Leaked bodycam footage of Eminoma and police attempting to remove Veri from their headquarters]&lt;br /&gt;
&lt;br /&gt;
{{Ambox|contents=This article is intended to be humourous, and isn&#039;t an official statement by Eminoma or anyone on the wiki. It&#039;s my user namespace. MINE. MINE!!!}}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=11135</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=11135"/>
		<updated>2026-07-05T09:05:27Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64. || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for Linux on amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049&lt;br /&gt;
|-&lt;br /&gt;
| Rest in Pawn (Moon&#039;s Pub fork) || webb || Ripext recompiled for the latest 1.13 Sourcemod branch. || https://github.com/moonspub/sm-ext-ripext || https://github.com/moonspub/sm-ext-ripext/actions/runs/28586021800&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Chat bridge between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Spraytime || Jester || Adds a server playtime requirement before players are allowed to spray. || https://github.com/magisjester/spraytime || https://github.com/magisjester/spraytime/raw/refs/heads/master/compiled/spraytime.smx&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|-&lt;br /&gt;
| Roll the Dice (Heapons Fork) || Heapons || Roll the Dice forked to work with TF2 mods. || https://github.com/Heapons/RTD || https://github.com/Heapons/RTD/raw/refs/heads/master/scripting/rtd.smx&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=11134</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=11134"/>
		<updated>2026-07-05T09:03:59Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add Moon&amp;#039;s Pub ripext fork&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64. || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for Linux on amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049&lt;br /&gt;
|-&lt;br /&gt;
| Rest in Pawn (Moon&#039;s Pub fork) || webb || Ripext recompiled for the latest 1.13 Sourcemod branch. || https://github.com/moonspub/sm-ext-ripext || https://github.com/moonspub/sm-ext-ripext/actions/runs/28586021800&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Chat bridge between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Spraytime || Jester || Adds a server playtime requirement before players are allowed to spray. || https://github.com/magisjester/spraytime || https://github.com/magisjester/spraytime/raw/refs/heads/master/compiled/spraytime.smx&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|-&lt;br /&gt;
| Roll the Dice (Heapons Fork) || Heapons || Roll the Dice forked to work with TF2 mods. || https://github.com/Heapons/RTD || https://github.com/Heapons/RTD/raw/refs/heads/master/scripting/rtd.smx&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom weapons ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|-&lt;br /&gt;
| Roll the Dice (Heapons Fork) || Heapons || Roll the Dice forked to work with TF2 mods. || https://github.com/Heapons/RTD || https://github.com/Heapons/RTD/raw/refs/heads/master/scripting/rtd.smx&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10929</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10929"/>
		<updated>2026-06-18T10:13:04Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a public-facing server.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to install the &#039;&#039;&#039;a development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, the latest known working development build is 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF2 Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF2 Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to disable automatic game data updating to prevent our gamedata file from being removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nano ~/classified/tf2classified/addons/sourcemod/configs/core.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; in this part of the file with &amp;lt;code&amp;gt;&amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        /**&lt;br /&gt;
         * Enables or Disables SourceMod&#039;s automatic gamedata updating.&lt;br /&gt;
         *&lt;br /&gt;
         * The default value is &amp;quot;no&amp;quot;. A value of &amp;quot;yes&amp;quot; will block the Auto Updater.&lt;br /&gt;
         */&lt;br /&gt;
        &amp;quot;DisableAutoUpdate&amp;quot;                     &amp;quot;no&amp;quot; // Change to &amp;quot;yes&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/gamedata/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10865</id>
		<title>User:Webb/Better GitHub FastDL</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10865"/>
		<updated>2026-06-14T09:35:51Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article outlines a better method for hosting your FastDL on GitHub. Both the spider den and Moon&#039;s Pub have been successfully using this for many months.&lt;br /&gt;
&lt;br /&gt;
First of all, you&#039;ll just need to upload your files to a GitHub repository. Unlike the GitHub Pages method there is a total repository size limit of about 100GB and individual files can be up to 100MB (you can use bzip2 compression like any other FastDL to get around this limitation somewhat.) You do not need to wait for GitHub Actions so file uploads/changes will be instant. Most maps should work this way.&lt;br /&gt;
&lt;br /&gt;
Create a GitHub repository and upload your files using the typical FastDL file structure. You can find the repository I use [here https://github.com/webbongithub/fastdl]. &lt;br /&gt;
&lt;br /&gt;
Next you&#039;ll need to set your &amp;lt;code&amp;gt;sv_downloadurl&amp;lt;/code&amp;gt; console variable to a specific value to have it download directly from the repository. In the case of my repository, that is &amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/&amp;lt;/code&amp;gt;. You may need to adjust this value depending on the name of your branch (which is by default &amp;quot;main&amp;quot;) and what subfolder you chose (or if you chose one at all,) and your username/repository name. A simple way of getting it is to go to, say a map file and copy the raw link:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/maps/4arena_downtown_rc.bsp.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then strip the end off until it&#039;s the root of where the files are stored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you do this, then it should just work.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10302</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10302"/>
		<updated>2026-05-23T00:21:40Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add Heapons&amp;#039; RTD.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64. || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for Linux on amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Chat bridge between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Spraytime || Jester || Adds a server playtime requirement before players are allowed to spray. || https://github.com/magisjester/spraytime || https://github.com/magisjester/spraytime/raw/refs/heads/master/compiled/spraytime.smx&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|-&lt;br /&gt;
| Roll the Dice (Heapons Fork) || Heapons || Roll the Dice forked to work with TF2 mods. || https://github.com/Heapons/RTD || https://github.com/Heapons/RTD/raw/refs/heads/master/scripting/rtd.smx&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10301</id>
		<title>User:Webb/Better GitHub FastDL</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10301"/>
		<updated>2026-04-21T16:35:16Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article outlines a better method for hosting your FastDL on GitHub. Both the spider den and Moon&#039;s Pub have been successfully using this for many months.&lt;br /&gt;
&lt;br /&gt;
First of all, upload your files to a GitHub repository. Unlike the GitHub Pages method there is a total repository size limit of about 100GB and individual files can be up to 100MB (you can use bzip2 compression like any other FastDL to get around this limitation somewhat.) You do not need to wait for GitHub Actions so file uploads/changes will be instant. Most maps should work this way.&lt;br /&gt;
&lt;br /&gt;
First, create a GitHub repository and upload your files using the typical FastDL file structure. You can find the repository I use [here https://github.com/webbongithub/fastdl]. &lt;br /&gt;
&lt;br /&gt;
Next you&#039;ll need to set your &amp;lt;code&amp;gt;sv_downloadurl&amp;lt;/code&amp;gt; console variable to a specific value to have it download directly from the repository. In the case of my repository, that is &amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/&amp;lt;/code&amp;gt;. You may need to adjust this value depending on the name of your branch (which is by default &amp;quot;main&amp;quot;) and what subfolder you chose (or if you chose one at all,) and your username/repository name. A simple way of getting it is to go to, say a map file and copy the raw link:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/maps/4arena_downtown_rc.bsp.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then strip the end off until it&#039;s the root of where the files are stored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you do this, then it should just work.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10300</id>
		<title>User:Webb/Better GitHub FastDL</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10300"/>
		<updated>2026-04-21T16:33:50Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article outlines a better method for hosting your FastDL on GitHub. Both the spider den and Moon&#039;s Pub have been successfully using this for many months.&lt;br /&gt;
&lt;br /&gt;
First of all, upload your files to a GitHub repository. Unlike the GitHub Pages method there is a total repository size limit of about 100GB and individual files can be up to 100MB (you can use bzip2 compression like any other FastDL to get around this limitation somewhat.) You do not need to wait for GitHub Actions so file uploads/changes will be instant. Most maps should work this way.&lt;br /&gt;
&lt;br /&gt;
First, create a GitHub repository and upload your files using the typical FastDL file structure. You can find the repository I use [here https://github.com/webbongithub/fastdl]. &lt;br /&gt;
&lt;br /&gt;
Next you&#039;ll need to set your &amp;lt;code&amp;gt;sv_downloadurl&amp;lt;/code&amp;gt; console variable to a specific value to have it download directly from the repository. In the case of my repository, that is &amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/&amp;lt;/code&amp;gt;. You may need to adjust this value depending on the name of your branch (which is by default &amp;quot;main&amp;quot;) and what subfolder you chose (or if you chose one at all.) A simple way of getting it is to go to, say a map file and copy the raw link:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/maps/4arena_downtown_rc.bsp.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then strip the end off until it&#039;s the root of where the files are stored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you do this, then it should just work.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10299</id>
		<title>User:Webb/Better GitHub FastDL</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Better_GitHub_FastDL&amp;diff=10299"/>
		<updated>2026-04-21T16:32:29Z</updated>

		<summary type="html">&lt;p&gt;Webb: Created page with &amp;quot;This article outlines a better method for hosting your FastDL on GitHub.  First of all, upload your files to a GitHub repository. Unlike the GitHub Pages method there is a total repository size limit of about 100GB and individual files can be up to 100MB (you can use bzip2 compression like any other FastDL to get around this limitation somewhat.) You do not need to wait for GitHub Actions so file uploads/changes will be instant. Most maps should work this way.  First, cr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article outlines a better method for hosting your FastDL on GitHub.&lt;br /&gt;
&lt;br /&gt;
First of all, upload your files to a GitHub repository. Unlike the GitHub Pages method there is a total repository size limit of about 100GB and individual files can be up to 100MB (you can use bzip2 compression like any other FastDL to get around this limitation somewhat.) You do not need to wait for GitHub Actions so file uploads/changes will be instant. Most maps should work this way.&lt;br /&gt;
&lt;br /&gt;
First, create a GitHub repository and upload your files using the typical FastDL file structure. You can find the repository I use [here https://github.com/webbongithub/fastdl]. &lt;br /&gt;
&lt;br /&gt;
Next you&#039;ll need to set your &amp;lt;code&amp;gt;sv_downloadurl&amp;lt;/code&amp;gt; console variable to a specific value to have it download directly from the repository. In the case of my repository, that is &amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/&amp;lt;/code&amp;gt;. You may need to adjust this value depending on the name of your branch (which is by default &amp;quot;main&amp;quot;) and what subfolder you chose (or if you chose one at all.) A simple way of getting it is to go to, say a map file and copy the raw link:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c/maps/4arena_downtown_rc.bsp.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then strip the end off until it&#039;s the root of where the files are stored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;https://github.com/webbongithub/fastdl/raw/refs/heads/main/tf2c&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you do this, then it should just work.&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10298</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10298"/>
		<updated>2026-04-21T16:15:26Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a publicly-facing server.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to install the &#039;&#039;&#039;a development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, the latest known working development build is 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF2 Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF2 Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to disable automatic game data updating to prevent our gamedata file from being removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nano ~/classified/tf2classified/addons/sourcemod/configs/core.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; in this part of the file with &amp;lt;code&amp;gt;&amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        /**&lt;br /&gt;
         * Enables or Disables SourceMod&#039;s automatic gamedata updating.&lt;br /&gt;
         *&lt;br /&gt;
         * The default value is &amp;quot;no&amp;quot;. A value of &amp;quot;yes&amp;quot; will block the Auto Updater.&lt;br /&gt;
         */&lt;br /&gt;
        &amp;quot;DisableAutoUpdate&amp;quot;                     &amp;quot;no&amp;quot; // Change to &amp;quot;yes&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/gamedata/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10232</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10232"/>
		<updated>2026-04-08T01:12:04Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64. || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for Linux on amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Chat bridge between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Spraytime || Jester || Adds a server playtime requirement before players are allowed to spray. || https://github.com/magisjester/spraytime || https://github.com/magisjester/spraytime/raw/refs/heads/master/compiled/spraytime.smx&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10231</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10231"/>
		<updated>2026-04-08T00:39:41Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64.  || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Chat bridge between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Spraytime || Jester || Adds a server playtime requirement before players are allowed to spray. || https://github.com/magisjester/spraytime || https://github.com/magisjester/spraytime/raw/refs/heads/master/compiled/spraytime.smx&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10230</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10230"/>
		<updated>2026-04-08T00:39:02Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add spraytime&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64.  || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Spraytime || Jester || Adds a server playtime requirement before players are allowed to spray. || https://github.com/magisjester/spraytime || https://github.com/magisjester/spraytime/raw/refs/heads/master/compiled/spraytime.smx&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10229</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10229"/>
		<updated>2026-04-08T00:34:57Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add MiniSentryFix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64.  || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| MiniSentryFix || Maxim766 || Plugin that fixes various problems with mini-sentries. || https://github.com/Maxim766/TF2Classified_MiniSentryFix || https://github.com/Maxim766/TF2Classified_MiniSentryFix/archive/refs/heads/main.zip&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10228</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10228"/>
		<updated>2026-04-08T00:27:47Z</updated>

		<summary type="html">&lt;p&gt;Webb: Use permalink for SMJansson&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64.  || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showpost.php?p=2822313&amp;amp;postcount=80 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10227</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10227"/>
		<updated>2026-04-08T00:25:52Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add dependencies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Some existing plugins have dependencies which need to be rebuilt to work with post-Steam builds. This section contains a list of extensions that are rebuilt or otherwise fixed to work with modern TF2C.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| TF2 Tools || Azzy || AlliedModders&#039; TF2 Tools extension patched to work with TF2C. || https://discord.gg/3zMk4vn || https://discord.com/channels/196337717267791874/1011914229307166780/1467172013637636327&lt;br /&gt;
|-&lt;br /&gt;
| SteamWorks || IRQL_NOT_LESS_OR_EQUAL || SteamWorks extension built for amd64.  || https://github.com/irql-notlessorequal/SteamWorks || https://github.com/irql-notlessorequal/SteamWorks/actions&lt;br /&gt;
|-&lt;br /&gt;
| SMJansson || bottiger || JSON extension recompiled for amd64. Community build with no corresponding source code, use with caution. || https://forums.alliedmods.net/showthread.php?t=184604&amp;amp;page=8 || https://forums.alliedmods.net/attachment.php?attachmentid=204314&amp;amp;d=1715116049 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10226</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10226"/>
		<updated>2026-04-08T00:09:14Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community plugins and tools that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=User:Webb/Dedicated_server_plugins&amp;diff=10225</id>
		<title>User:Webb/Dedicated server plugins</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=User:Webb/Dedicated_server_plugins&amp;diff=10225"/>
		<updated>2026-04-08T00:09:00Z</updated>

		<summary type="html">&lt;p&gt;Webb: Webb moved page User:Webb/Dedicated server plugins to List of dedicated server tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[List of dedicated server tools]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10224</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10224"/>
		<updated>2026-04-08T00:09:00Z</updated>

		<summary type="html">&lt;p&gt;Webb: Webb moved page User:Webb/Dedicated server plugins to List of dedicated server tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10223</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10223"/>
		<updated>2026-04-08T00:08:18Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux || https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10222</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10222"/>
		<updated>2026-04-08T00:08:01Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add SRCDS Discord Redux&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| SRCDS Discord Redux || Heapons || Adds chat bridging between srcds and Discord. || https://github.com/Serider-Lounge/SRCDS-Discord-Redux| https://github.com/Serider-Lounge/SRCDS-Discord-Redux/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10221</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10221"/>
		<updated>2026-04-08T00:06:50Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a publicly-facing server.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to install the &#039;&#039;&#039;latest development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, it&#039;s 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF2 Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF2 Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to disable automatic game data updating to prevent our gamedata file from being removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nano ~/classified/tf2classified/addons/sourcemod/configs/core.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; in this part of the file with &amp;lt;code&amp;gt;&amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        /**&lt;br /&gt;
         * Enables or Disables SourceMod&#039;s automatic gamedata updating.&lt;br /&gt;
         *&lt;br /&gt;
         * The default value is &amp;quot;no&amp;quot;. A value of &amp;quot;yes&amp;quot; will block the Auto Updater.&lt;br /&gt;
         */&lt;br /&gt;
        &amp;quot;DisableAutoUpdate&amp;quot;                     &amp;quot;no&amp;quot; // Change to &amp;quot;yes&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/gamedata/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10220</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10220"/>
		<updated>2026-04-07T21:19:44Z</updated>

		<summary type="html">&lt;p&gt;Webb: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scramble  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10219</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10219"/>
		<updated>2026-04-07T21:10:20Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata. Check each plugin&#039;s page for their respective dependencies.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scrmable  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10218</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10218"/>
		<updated>2026-04-07T21:09:46Z</updated>

		<summary type="html">&lt;p&gt;Webb: Adjust wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scrmable  || BitsE9 || A simple team scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10217</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10217"/>
		<updated>2026-04-07T21:08:46Z</updated>

		<summary type="html">&lt;p&gt;Webb: Fix basic chat fork&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scrmable  || BitsE9 || A simple player scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModders&#039; Basic Chat plugin forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10216</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10216"/>
		<updated>2026-04-07T21:08:03Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add simple scramble&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|-&lt;br /&gt;
| Simple-Scrmable  || BitsE9 || A simple player scramble plugin. || https://github.com/BitsE9/simple-scramble || https://github.com/BitsE9/simple-scramble/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModder&#039;s Basechat forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10215</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10215"/>
		<updated>2026-04-07T21:00:38Z</updated>

		<summary type="html">&lt;p&gt;Webb: Add MCP chat plugins&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Basic Chat (MCP Fork) || DosMike || AlliedModder&#039;s Basechat forked to work with MCP. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Chat Tags || DosMike || Allows for chat tags and coloring of player&#039;s chat messages. Backwards compatible with Custom Chat Colors configs. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| MCP Mentions || DosMike || Allows players to ping others in chat using their name. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| MCP SayRedirects || DosMike || Common redirects for chat messages. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10214</id>
		<title>List of dedicated server tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=List_of_dedicated_server_tools&amp;diff=10214"/>
		<updated>2026-04-07T20:34:25Z</updated>

		<summary type="html">&lt;p&gt;Webb: Initial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of community SourceMod plugins that are known to work with &#039;&#039;Team Fortress 2 Classified&#039;&#039; or are designed for it. Many plugins require the patched TF2 Tools extension and appropriate gamedata.&lt;br /&gt;
&lt;br /&gt;
== General == &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Drug Test || webb || Provides command targets for GRN and YLW (i.e. &amp;lt;code&amp;gt;sm_slay @yellow&amp;lt;/code&amp;gt;). || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| NativeVotes (Heapons Fork) || Heapons || Allows servers to use native menus for voting. || https://github.com/Heapons/sourcemod-nativevotes-updated || https://github.com/Heapons/sourcemod-nativevotes-updated/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chat ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|- &lt;br /&gt;
| Meta Chat Processor || DosMike || A chat processor known to work well with Team Fortress 2 Classified that includes backwards compatibility with other chat processors like Simple Chat Processor Redux. Includes its own suite of chat tools. || https://forums.alliedmods.net/showthread.php?p=2777572 || https://github.com/DosMike/SM-MetaChatProcessor/releases&lt;br /&gt;
|-&lt;br /&gt;
| Zensitive || webb || Provides the ability to mark messages as &amp;quot;sensitive&amp;quot; which are not visible unless opted in, similar to spoilered messages. Can work standalone or in conjunction with Meta Chat Processor. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Server administration ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Admin Caboose || webb || Provides small utility commands to admins such as the ability to get information like spray hexes and traditional Steam IDs from players, as well as generate steamhistory.net links. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| CIDR Blocker || rumblefrog || Can block IP ranges from joining your server, useful for blocking proxies. || https://cidr-blocker.github.io/ || https://github.com/CIDR-Blocker/CIDR-Blocker/releases&lt;br /&gt;
|-&lt;br /&gt;
| IDlesslessness || webb || Makes players without Steam IDs unable to chat or spray. Includes a command to kick all IDless players. Optionally can kick them after a period of time after being put in game if they don&#039;t still have one. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Lumberjack || webb || Provides logging of chat and other information to Discord via webhooks. Optionally can work with CallAdmin to ping admins. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Rat Poison || webb || Allows admins to specify a whitelist of players who can spray. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| SM Utilities || Heapons || A variety of tools for various games, including Team Fortress 2 Classified. || https://github.com/Serider-Lounge/SM-Utilities || https://github.com/Serider-Lounge/SM-Utilities/releases/&lt;br /&gt;
|-&lt;br /&gt;
| Sourcebans++ || Sourcebans++ Dev Team || A suite of tools for managing bans, comm blocks, and more across multiple servers. Requires special setup outside of SourceMod. || https://sbpp.github.io/ || https://github.com/sbpp/sourcebans-pp/releases&lt;br /&gt;
|-&lt;br /&gt;
| Stuffify || webb || Provides commands to change certain attributes of players like class, team, as well as regenerate them and respawn them. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|-&lt;br /&gt;
| VPNBlock || PwnK || Blocks IPs with poor reputations using the Blackbox API. || https://forums.alliedmods.net/showthread.php?t=312792 || Unavailable from original author&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Custom gamemodes/fun ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Author !! Description !! Web page !! Download&lt;br /&gt;
|-&lt;br /&gt;
| Class Consciousness || webb || Configurable and stable Class Wars/per-team class enforcement plugin. || https://codeberg.org/spiderden/sp || https://codeberg.org/spiderden/sp/releases&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10104</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10104"/>
		<updated>2026-03-14T08:40:13Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a publicly-facing server.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to install the &#039;&#039;&#039;latest development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, it&#039;s 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to disable automatic game data updating to prevent our gamedata file from being removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nano ~/classified/tf2classified/addons/sourcemod/configs/core.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; in this part of the file with &amp;lt;code&amp;gt;&amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        /**&lt;br /&gt;
         * Enables or Disables SourceMod&#039;s automatic gamedata updating.&lt;br /&gt;
         *&lt;br /&gt;
         * The default value is &amp;quot;no&amp;quot;. A value of &amp;quot;yes&amp;quot; will block the Auto Updater.&lt;br /&gt;
         */&lt;br /&gt;
        &amp;quot;DisableAutoUpdate&amp;quot;                     &amp;quot;no&amp;quot; // Change to &amp;quot;yes&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/gamedata/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
	<entry>
		<id>https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10103</id>
		<title>Dedicated Linux server</title>
		<link rel="alternate" type="text/html" href="https://wiki.tf2classified.com/w/index.php?title=Dedicated_Linux_server&amp;diff=10103"/>
		<updated>2026-03-14T08:38:22Z</updated>

		<summary type="html">&lt;p&gt;Webb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ambox|contents=This article is based on a guide written by Raizo, the original of which can be found [https://blog.raizo.dev/posts/tf2-classic-linux-server-tutorial/ here].}}&lt;br /&gt;
&lt;br /&gt;
== Reading this article ==&lt;br /&gt;
&amp;lt;!-- Originally from https://wiki.teamfortress.com/wiki/Linux_dedicated_server#Reading_this_article --&amp;gt;&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; is meant to be run as &#039;&#039;&#039;root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; is meant to be run as a &#039;&#039;&#039;regular user&#039;&#039;&#039; without root permissions. In this case the &amp;lt;code&amp;gt;srcds&amp;lt;/code&amp;gt; user.&lt;br /&gt;
&lt;br /&gt;
A command prefixed by &amp;lt;code&amp;gt;Steam&amp;gt;&amp;lt;/code&amp;gt; is meant to be run inside of a SteamCMD shell.&lt;br /&gt;
&lt;br /&gt;
Some commands are listed in-line with the rest of a paragraph and lack this symbol, in which case you should run the command as whichever account you&#039;re currently logged in with.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* A Linux server running Ubuntu Server&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; on an amd64 CPU&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt; with root access&lt;br /&gt;
* At least 25GB of free storage&lt;br /&gt;
* A minimum of a ten megabit upload speed if you intend on hosting a server over the Internet, more will be needed if you host custom content&lt;br /&gt;
* An opened port on your firewall for the server if you want a persistent IP address (unless using SDR, see [[#Enabling the Steam Datagram Relay|this section on enabling the Steam Datagram Relay]])&lt;br /&gt;
* &#039;&#039;Optional&#039;&#039;: An SSH/SFTP client if doing remote access/file management&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt; This guide was written for and tested on Ubuntu Server 24.04 LTS Minimal. Other Linux distributions may use different package names and conventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;**&amp;lt;/sup&amp;gt;Architectures other than amd64 (including 32-bit x86) are unsupported. Compatibility layers like FEX or Box64 may not work or cause unexpected problems.&lt;br /&gt;
&lt;br /&gt;
== Preparing for install ==&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ll need to install some required software and tools for our server first. Let&#039;s start with SteamCMD, which we&#039;ll use to download and update the server software.&lt;br /&gt;
&lt;br /&gt;
Since SteamCMD is built for 32-bit, we&#039;ll need to enable 32-bit packages. We&#039;ll also add the &amp;lt;code&amp;gt;multiverse&amp;lt;/code&amp;gt; repository which has SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# add-apt-repository multiverse&lt;br /&gt;
# dpkg --add-architecture i386&lt;br /&gt;
# apt update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we&#039;ll install the &amp;lt;code&amp;gt;dialog&amp;lt;/code&amp;gt; package so the Steam Subscriber Agreement dialog works, and then the rest of the packages we need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apt install dialog&lt;br /&gt;
# apt install steamcmd p7zip aria2 tilde lib32z1 libbz2-1.0:i386 lib32gcc-s1 lib32stdc++6 libcurl3-gnutls:i386 libsdl2-2.0-0:i386 wget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your version of Ubuntu doesn&#039;t come with a text editor, you may install one now. For this guide we&#039;ll use &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt install nano&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a user for the server ===&lt;br /&gt;
&lt;br /&gt;
Pick a directory to install your server into. Many put it under a directory in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;, but for this guide we&#039;ll be using &amp;lt;code&amp;gt;/home/srcds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Create a disabled user with a home directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# useradd -s /bin/false -mr srcds&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;-m&amp;lt;/code&amp;gt; creates a home directory for the new user, &amp;lt;code&amp;gt;-r&amp;lt;/code&amp;gt; specifies that it&#039;s a system account that will not have a password, and &amp;lt;code&amp;gt;-s /bin/false&amp;lt;/code&amp;gt; prevents the account from having a default shell.&lt;br /&gt;
&lt;br /&gt;
=== Installing the live TF2 server ===&lt;br /&gt;
&lt;br /&gt;
The live version of TF2&#039;s dedicated server is required to run a Classified server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sudo -Hu srcds bash&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/tf&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 232250 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
Ensure you&#039;ve quit SteamCMD before continuing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before continuing, we&#039;ll need to symlink the install&#039;s &amp;lt;code&amp;gt;steamclient.so&amp;lt;/code&amp;gt; to a special directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/.steam/sdk64&lt;br /&gt;
$ ln -s ~/classified/linux64/steamclient.so ~/.steam/sdk64/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testing the server ===&lt;br /&gt;
&lt;br /&gt;
Before proceeding, we can manually run the server to make sure the install was successful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/classified&lt;br /&gt;
$ ./srcds.sh -port 27015 -tf_path ~/tf +map ctf_2fort +sv_password changethis&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, it should start and be accessible over the internet.&lt;br /&gt;
&lt;br /&gt;
== Server configuration ==&lt;br /&gt;
&lt;br /&gt;
For a basic, private server, you should only need to set a password in &amp;lt;code&amp;gt;classified/tf2classified/cfg/server.cfg&amp;lt;/code&amp;gt; by appending the file with &amp;lt;code&amp;gt;sv_password yourpassword&amp;lt;/code&amp;gt;.&lt;br /&gt;
You can also make it LAN-only by appending &amp;lt;code&amp;gt;sv_lan 1&amp;lt;/code&amp;gt; in the same file.&lt;br /&gt;
&lt;br /&gt;
If you want a more complicated setup, consider using [https://cfg.tf/ cfg.tf]. If you don&#039;t need this you can skip to the next section.&lt;br /&gt;
&lt;br /&gt;
Make sure the server type is set to “Internet and LAN” if you want players outside your LAN to be able to join (you may need to port forward if you’re on consumer broadband or open ports on your firewall).&lt;br /&gt;
&lt;br /&gt;
Upload the generated ZIP file to your server, perhaps using SFTP, and unzip the folder.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /tmp&lt;br /&gt;
$ unzip $PATH_TO_ARCHIVE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And merge the &amp;lt;code&amp;gt;cfg&amp;lt;/code&amp;gt; folder with &amp;lt;code&amp;gt;/home/srcds/classified/tf2classified/cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ rsync /tmp/cfg ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -rf /tmp/cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Managing the server via Systemd ==&lt;br /&gt;
&lt;br /&gt;
Systemd is a program that will automatically handle things like logging, restarts, and starting your server when your machine boots. We&#039;ll use this to run our server, instead of manually running commands.&lt;br /&gt;
&lt;br /&gt;
=== Creating an update script ===&lt;br /&gt;
&lt;br /&gt;
We&#039;re going to create a script that will update the dedicated server for us instead of typing it out manually each time. Later, we&#039;ll optionally use this script to check and update our server automatically when the server starts. &lt;br /&gt;
&lt;br /&gt;
First, let&#039;s create a directory for the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir ~/bin&lt;br /&gt;
$ nano ~/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fill the file with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/classified&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 3557020&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can execute this script manually by using the +runscript argument on SteamCMD.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, we will create one for the live TF2 server as that will need to be updated occasionally. We&#039;ll put&lt;br /&gt;
it at &amp;lt;code&amp;gt;/home/srcds/bin/update-tf.steamcmd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once&lt;br /&gt;
@NoPromptForPassword 1&lt;br /&gt;
force_install_dir /home/srcds/tf&lt;br /&gt;
login anonymous&lt;br /&gt;
app_update 232250&lt;br /&gt;
quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a service file ===&lt;br /&gt;
&lt;br /&gt;
Create a service file in &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; as root. For this guide we&#039;ll use &amp;lt;code&amp;gt;/etc/systemd/system/tf2c.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=TF2C Server&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=srcds&lt;br /&gt;
StandardError=journal&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
WorkingDirectory=/home/srcds/classified&lt;br /&gt;
RemainAfterExit=no&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-tf.steamcmd&lt;br /&gt;
ExecStartPre=-/usr/games/steamcmd +runscript /home/srcds/bin/update-classified.steamcmd&lt;br /&gt;
Environment=&amp;quot;LD_LIBRARY_PATH=&amp;quot;.:bin/linux64:$LD_LIBRARY_PATH&amp;quot;&amp;quot;&lt;br /&gt;
ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&lt;br /&gt;
TimeoutStartSec=infinity&lt;br /&gt;
Restart=always&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, enable the service to start with Systemd on boot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl enable tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may create as many services as you have TF2C servers but remember to name the service files uniquely. When modifying existing service files, remember to run &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt; before restarting the service.&lt;br /&gt;
&lt;br /&gt;
=== Automatic restarts using crontab ===&lt;br /&gt;
&lt;br /&gt;
Cron is a program built into most Linux distros that runs scheduled commands.&lt;br /&gt;
&lt;br /&gt;
As root, execute &amp;lt;code&amp;gt;crontab -e&amp;lt;/code&amp;gt;. This will open a special file in your editor where you can declare what jobs you want to run and when. Let&#039;s add a job to run at 04:00 that will restart our server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0 4 * * * systemctl restart tf2c.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Manually managing services ===&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t wish to use the service files above to automatically boot servers, or you need to perform these actions for maintenance: you may issue commands to manually &#039;&#039;start&#039;&#039;, &#039;&#039;stop&#039;&#039;, &#039;&#039;restart&#039;&#039;, or &#039;&#039;update&#039;&#039; the server(s) through systemd. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# systemctl restart tf2c # in case you need to restart manually or to grab updates!! &lt;br /&gt;
# systemctl stop tf2c # in case you need to stop the server manually&lt;br /&gt;
# systemctl start tf2c # in case you need to start the server manually&lt;br /&gt;
# systemctl disable tf2c # in case you need to stop the server from booting as your system initializes &lt;br /&gt;
# systemctl enable tf2c # in case you need to start the server to boot as your system initializes &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extras ==&lt;br /&gt;
&lt;br /&gt;
=== Enabling the Steam Datagram Relay ===&lt;br /&gt;
&lt;br /&gt;
Servers can use the Steam Datagram Relay. It masks your server&#039;s IP address, helps prevent DDoS attacks, and allows you to run a server without port forwarding or configuring firewalls. However, this comes at the cost of added latency and using ephemeral IP addresses for your server, the latter breaking server favoriting and IP bans.&lt;br /&gt;
&lt;br /&gt;
You can enable this by adding &amp;lt;code&amp;gt;sv_use_steam_networking 1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;classified/tf2classified/cfg/default.cfg&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want your server to appear on the server browser with SDR enabled you will need to supply a GLST token. You can acquire a key by going to [https://steamcommunity.com/dev/managegameservers this page]. Once you&#039;ve got it, put &amp;lt;code&amp;gt;sv_setsteamaccount $KEY&amp;lt;/code&amp;gt; in your configuration, replacing $KEY with the token from the page.&lt;br /&gt;
&lt;br /&gt;
=== Installing SourceMod ===&lt;br /&gt;
&lt;br /&gt;
SourceMod is a server modding platform that provides admin tools, permissions, and plugin support. Installing it is strongly recommended if you plan to run a publicly-facing server.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to install the &#039;&#039;&#039;latest development version&#039;&#039;&#039; of SourceMod, as well as MetaMod which SourceMod depends on to work. &#039;&#039;&#039;It will not work with stable releases currently&#039;&#039;&#039;. As of writing this article, it&#039;s 7301 and 1389 respectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ wget https://mms.alliedmods.net/mmsdrop/2.0/mmsource-2.0.0-git1389-linux.tar.gz -O /tmp/mm.tar.gz&lt;br /&gt;
$ wget https://sm.alliedmods.net/smdrop/1.13/sourcemod-1.13.0-git7301-linux.tar.gz -O /tmp/sm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/mm.tar.gz&lt;br /&gt;
$ tar -xf /tmp/sm.tar.gz&lt;br /&gt;
$ mv addons ~/classified/tf2classified&lt;br /&gt;
$ mv cfg/sourcemod ~/classified/tf2classified/cfg&lt;br /&gt;
$ rm -r cfg&lt;br /&gt;
$ rm /tmp/mm.tar.gz&lt;br /&gt;
$ rm /tmp/sm.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the server starts it should work. A good way to test if everything is running properly is to use the &amp;lt;code&amp;gt;!motd&amp;lt;/code&amp;gt; command in chat. If the MOTD pops up after the command that means SourceMod is working. For further information on setting up SourceMod, read [https://wiki.alliedmods.net/Category:SourceMod_Documentation the documentation].&lt;br /&gt;
&lt;br /&gt;
Existing SourceMod plugins are not guaranteed to work and may require special steps or patching to get working.&lt;br /&gt;
&lt;br /&gt;
==== Installing the patched TF Tools extension ====&lt;br /&gt;
&lt;br /&gt;
Many plugins depend on the built-in TF Tools extension that comes with Sourcemod. This isn&#039;t compatible with TF2C. Instead, we can use a patched version of the extension which enables the use of many plugins.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no public download link for this extension. After joining the Team Fortress 2 Classified Discord server you can find the files you need in [https://discordapp.com/channels/196337717267791874/1011914229307166780/1467172013637636327 this message]. Specifically, you need &amp;lt;code&amp;gt;game.tf2.ext.2.tf2.so&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sm-tf2.games.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First, we&#039;ll need to disable automatic game data updating to prevent our gamedata file from being removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nano ~/classified/tf2classified/addons/sourcemod/configs/core.cfg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace &amp;lt;code&amp;gt;&amp;quot;no&amp;quot;&amp;lt;/code&amp;gt; in this part of the file with &amp;lt;code&amp;gt;&amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        /**&lt;br /&gt;
         * Enables or Disables SourceMod&#039;s automatic gamedata updating.&lt;br /&gt;
         *&lt;br /&gt;
         * The default value is &amp;quot;no&amp;quot;. A value of &amp;quot;yes&amp;quot; will block the Auto Updater.&lt;br /&gt;
         */&lt;br /&gt;
        &amp;quot;DisableAutoUpdate&amp;quot;                     &amp;quot;no&amp;quot; // Change to &amp;quot;yes&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we&#039;ll add both the gamedata file and the plugin to our installation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/sm-tf2.games.txt ~/classified/tf2classified/addons/sm-tf2.games.txt&lt;br /&gt;
$ mv $WHEREVER_YOU_PUT_IT/game.tf2.ext.2.tf2.so ~/classified/tf2classified/addons/extensions/x64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, create an empty file so that the extension is automatically loaded.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ touch ~/classified/tf2classified/addons/sourcemod/extensions/game.tf2.autoload&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Sounds are missing/only stock weapons are usable ===&lt;br /&gt;
&lt;br /&gt;
This is likely due to a problem with &amp;lt;code&amp;gt;libvstdlib.so&amp;lt;/code&amp;gt;. It&#039;s possible it wasn&#039;t updated or is corrupted. Validate your install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~&lt;br /&gt;
$ . /etc/environment&lt;br /&gt;
$ steamcmd&lt;br /&gt;
Steam&amp;gt;force_install_dir /home/srcds/classified&lt;br /&gt;
Steam&amp;gt;login anonymous&lt;br /&gt;
Steam&amp;gt;app_update 3557020 validate&lt;br /&gt;
Steam&amp;gt;quit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server not showing up on the server browser while using SDR ===&lt;br /&gt;
&lt;br /&gt;
This is likely happening because you enabled use of the SDR but didn&#039;t supply a game key. Read [[#Enabling the Steam Datagram Relay|the last paragraph of this section]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== Server using high levels of CPU when ran via the service file ===&lt;br /&gt;
&lt;br /&gt;
The service file included in this guide has a workaround for Source servers refusing to log without a TTY present. There has been at least one report of this causing unusually high CPU usage. It&#039;s believed this happens on servers with slower SSDs and spinning hard drives. You can disable it, but it will mean there will be no journald logs for your server and you can&#039;t use features like Systemd sockets.&lt;br /&gt;
&lt;br /&gt;
To disable it, unwrap the &amp;lt;code&amp;gt;srcds_linux64&amp;lt;/code&amp;gt; command from &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/usr/bin/script -e -c &amp;quot;/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;quot; /dev/null&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ExecStart=/home/srcds/classified/srcds_linux64 -port 27015 -tf_path /home/srcds/tf +map ctf_2fort +maxplayers 24&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Webb</name></author>
	</entry>
</feed>