Update: killinuxfloor has been updated to support both Killing Floor 2 Retail and Classic. Please read Playing Killing Floor 2 Classic for more info.
Why, it’s the easiest way to install and manage Killing Floor 2 on Linux. All you need is a fresh, up-to-date install of Fedora Server 35.
- One-command installation of the Killing Floor 2 Linux Server
- One-command uninstallation as well
- Automatic backup of previous config during install and uninstall
- Full support for firewalld and Security-Enhanced Linux
- systemd integration to manage your server as a standard Linux service
- sudo integration for proper rights delegation
- Separated config for settings you actually change, getting thousands of unchanged defaults out of the way
- Support for installing workshop maps and mutators
- Automatically generated and updated map cycle for workshop maps
- User-defined map cycles, too
- Bundled, integrated auto-kick bot (thanks Sinewyk!)
- killinuxfloor command to manage all aspects of your KF2 server
- Corrected mutator management on webadmin, offering your previous parameters during manual map change
- Wave counter instead of time counter in webadmin during Endless games (thanks zachjd!)
First, fire up a Fedora Server 35 instance at your favorite VPS provider. If in doubt, see Tested VPS Providers
Once up and running, log in via SSH, and grab the latest release of killinuxfloor:
sudo yum install -y git git clone --recurse-submodules https://github.com/noobient/killinuxfloor.git cd killinuxfloor
Then there’s really not that much to do here. You can install the Retail version with:
And the Classic version with:
sudo ./install.sh --classic
Have doubts? Well, see it for youself.
Then you can manage your installation of killinuxfloor wih the
sudo -iu steam
Once finished, simply exit from this user’s session with
How about uninstall?
No, I mean it.
Tested VPS Providers
These providers have been tested with their default Fedora Server 35 images, and are known to work flawlessly with killinuxfloor out of the box. You should be up and running within 15 minutes, of which 13 minutes will be Steam downloading KF2.
|DigitalOcean||$5||25 GB||1 GB||1|
|Vultr||$5||25 GB||1 GB||1|
If you find my work helpful, please use my affiliate links in the table above for signing up, thank you 🙂
Tips & Tricks
Let’s walk you through the most important options:
- Current game / Change map: use this to switch between maps. Make sure to click on the Change game button on the bottom! As mentioned earlier, this triggers a webadmin restart, so be patient.
- Access Policy / Passwords / Game password: here you can set a game password so that you can play privately with your teammates.
- Settings / General / Game: change Game difficulty and Game length here. Note: after changing these, you also need to perform a Change map action for these to take effect.
- Settings / Map cycles: select the active map cycle here (Make active button). Don’t edit map cycles here though, use
My-Cycles.csvfor permanent changes.
We’ll use KF-Minecraft_Defense_Day as an example. You need 2 things:
The ID can be found in the Workshop page URL, after the
?id= part. In this example, it’s
The name is a bit tricky, because often it’s the same as on the Workshop page. But sometimes it isn’t. The easiest way to find it out is by subscribing to the map, then checking out the downloaded file’s name. You can find them under
%ProgramFiles(x86)\%Steam\steamapps\workshopcontent\232090. In this case, if you go to
%ProgramFiles(x86)\%Steam\steamapps\workshopcontent\232090\1098009749\BrewedPC, you’ll see the filename:
KF-Minecraft_Defense_Day_Fixed.kfm. So the actual name you need is KF-Minecraft_Defense_Day_Fixed.
Now all you need to do is add the following line to
Then stop, regenerate the config, and start:
killinuxfloor stop && killinuxfloor config && killinuxfloor start
The server will soon start to download the maps you added. You can check the status, too:
killinuxfloor status workshop
It’s going to take a few minutes if you added several big maps. Once all downloads finish, the server restarts automatically once more, then you’re ready to go.
Once started up, open webadmin and open the Change game menu, select KF-Minecraft_Defense_Day, then click the Change game button on the bottom. This actually restarts the webadmin, but after a minute or so the KF2 server should be running on your shiny new map. When players who don’t have the map connect, they should see a screen similar to this:
Then you’re ready to play!
Mutators are pretty similar, but even simpler. All you need is the ID. Enter that on a new line in
~/Config/My-Mutators.csv, apply the config, done.
Then you can load mutators the usual way, by adding URL variables. Separate multiple mutators with commas.
If you want these parameters to be loaded automatically when the server starts, add them to
Updating the KF2 server should be as simple as:
killinuxfloor stop killinuxfloor update killinuxfloor reset killinuxfloor config killinuxfloor start
If you want to update to a preview update, replace
killinuxfloor update with:
killinuxfloor update preview
Where preview is the branch name. It may change, but AFAIK it’s been always preview in the past.
In case something gets messed up, like most players can download and play the map but one just can’t, instruct the problematic player to close the game and delete the
%HOMEPATH%\Documents\My Games\KillingFloor2\KFGame\Cache folder to make KF2 download the map again.
They can also try to subscribe manually, or if already subscribed, unsubscribe, delete the map file under
%ProgramFiles(x86)%\Steam\steamapps\workshopcontent\232090\<map id>, then retry.
If you have a broken map, you can try to nuke it. In the case of KF-Minecraft_Defense_Day:
killinuxfloor purge 1098009749
Now you can try to add it back to
~/Config/My-Maps.csv, re-apply with
killinuxfloor config, restart the server, and see if it helps.
The nuclear option is, of course, to do a reset:
killinuxfloor stop killinuxfloor reset killinuxfloor config killinuxfloor start
Note: make sure you don’t use a workshop map in
~/Config/My-Startup.conf after this.
reset, amongst other things, removes all downloaded Workshop maps, so if you have a workshop map set as a startup map, KF2 will be unable to find it, and will keep crashing infinitely.
How do I play on my fresh new server?
For guidance, please refer to: Playing on the Noobient Killing Floor 2 Servers. Substitute the noobient.com addresses with your IP, and you’re all set.
Why is my server deranked when I load whitelisted mutators?
It’s a Killing Floor 2 bug. Please copy
C:\Program Files (x86)\Steam\steamapps\common\killingfloor2\Binaries\Win64\balance_tweaks.bin from your desktop PC to
/home/steam/Steam/KF2Server/Binaries/Win64/balance_tweaks.bin on the server, and it should be ranked again.
Webadmin is accessible via
http://YOUR_IP:8080/. Make sure you set
My-LinuxServer-KFGame.ini, otherwise it won’t let you in.
Why isn’t auto-kick working?
The auto-kick bot relies on webadmin, so if you don’t set
AdminPassword, or block/disable webadmin in any other way, auto-kick won’t work either.
Webadmin still goes down randomly, what’s going on?
Webadmin restarts occasionally, particularly during map changes, be it initiated by the admin or by finishing a match. During this period, you may get timeouts, but it should come back live within a minute or so.
In the rare event of a webadmin crash, it won’t come back live. In this case, you can still play games on the server though. You decide if you wait until the next match for webadmin to restart on its own, or you can restart the KF2 server altogether manually with
I hate typing
killinuxfloor all the time, why is it so long?
Don’t worry! For this very reason, there’s a nice, short alias:
How do I back up my settings?
Should I edit the
Config files, or the
Config/Internal files? It’s confusing!
Yes, at first sight it really is. Thanks to Tripwire, and probably to Unreal Engine for exposing all friggin’ options to users, making it next to impossible to keep your changes in one place and well-organized.
Traditionally, you’re expected to find the options you want to change, among the thousands that are available. When you upgrade to a new KF2 patch, you either collect your changes scattered over in those huge files, then change them again in the new files (so much time), or just carry over your old files, risking the loss of any change in defaults, or the addition of new settings that Tripwire may have done. I find both options horrible.
With killinuxfloor it’s different. You only list the options you want to change from the defaults. Then killinuxfloor applies these settings to the internal config files. This way you always get the fresh internal config files after KF2 patches, and it’s extremely easy to carry over your config to a different server – you just copy your
Config folder, and that’s it. All your customizations, workshop maps, map cycles, mutators, auto-kick settings are preserved.
TL;DR You should never edit
Config/Internal files. Use the files under
Config, then run the
killinuxfloor config command to have your settings applied to the internal config files.
For step-by-step guides please refer to:
- Using SSH Key Pairs on Windows
- CentOS 7 done right on Vultr
- CentOS 7 Post-Installation Best Practices
- Cheap VPS 2018/02 – DigitalOcean vs Linode vs Vultr
- Playing on the Noobient Killing Floor 2 Servers