A Killing Floor 2 dedicated server is straightforward once you know its two quirks: you have to boot it once before you edit any config, and it has no RCON, so you manage it from a web panel. Get those two right and the rest is a five-minute setup. Here is the whole thing.
Install the server
The KF2 dedicated server is app 232130 and installs anonymously (no Steam login, you do not need to own the game on the server account):
./steamcmd.sh +login anonymous \
+app_update 232130 validate \
+quitImportant: use validate on the FIRST install only. Running app_update 232130 validate again later wipes your KFGame/Config INI files. To update afterwards, drop the validate keyword.
The catch: boot once before you edit anything
KF2 regenerates its config files on first boot and overwrites anything you put there beforehand. So the order is: install, boot once, stop, THEN edit. Boot it once with stock args:
./Binaries/Win64/KFGameSteamServer.bin.x86_64 KF-BioticsLabLet it reach "steam initialised", then stop it with Ctrl+C. It has now written the files you are about to edit, in:
<install>/KFGame/Config/Server settings: LinuxServer-KFGame.ini
Open KFGame/Config/LinuxServer-KFGame.ini and set these keys. They live in different sections, so search for each section header:
[Engine.GameInfo]
GameDifficulty=1.000000 ; 0=Normal 1=Hard 2=Suicidal 3=Hell on Earth
MaxPlayers=6 ; see "six players" below
[Engine.AccessControl]
AdminPassword=pick-a-secret ; login for the web panel
GamePassword=friends-only ; leave blank for open, set to lock the server
[Engine.GameReplicationInfo]
ServerName=My Private KF2 Server
[KFGame.KFGameInfo]
GameLength=1 ; 0=short (4 waves) 1=medium (7) 2=long (10)Enable the Web Admin panel (KF2 has no RCON)
KF2 has no RCON at all. Everything you would normally do over a console, kicking players, changing maps, reading logs, happens in a browser-based Web Admin panel that ships DISABLED. Turn it on in KFGame/Config/LinuxServer-KFWeb.ini:
[IpDrv.WebServer]
bEnabled=true
ListenPort=8080After the server is running, open http://your.server.ip:8080 in a browser and log in with the user Admin and the AdminPassword you set above. Open port 8080/TCP in your firewall.
The launch line
KF2 takes one URL-style argument that combines the map, game mode, and per-boot overrides, then a few flags for ports:
./Binaries/Win64/KFGameSteamServer.bin.x86_64 \
KF-BioticsLab?Game=KFGameContent.KFGameInfo_Survival?Difficulty=1?GameLength=1 \
-Port=7777 -QueryPort=27015 -WebAdminPort=8080- KF-BioticsLab is the starting map. Swap for any KF- map (KF-Outpost, KF-Nuked, KF-VolterManor…).
- Game= picks the mode: KFGameInfo_Survival (co-op), KFGameInfo_WeeklySurvival, KFGameInfo_VersusSurvival, or KFGameInfo_Endless.
- Difficulty and GameLength on the URL override the INI for that boot, handy for quick changes without editing files.
- Open 7777/UDP (game), 27015/UDP (Steam query) and 8080/TCP (web admin) in your firewall.
The one catch: six players
Vanilla KF2 caps a server at six players. Setting MaxPlayers higher than 6 in the INI does nothing: the engine clamps it back to 6. That is the intended co-op size and needs zero mods. If you want more than six, you need a server mutator (the popular one reads the real cap from a ?MaxPlayers= value on the launch URL, not the INI) plus a matching ?MaxMonsters= so the extra players still have Zeds to fight.