# Killing Floor 2 Server Hosting - everything RE:NODE has published

> A Killing Floor 2 server on RE:NODE: plans, how the panel runs it, and every tutorial RE:NODE has published about it.

Generated from https://www.renode.space/game-servers/killing-floor-2, the live catalogue, the deploy docs, the panel guides and the RE:NODE blog. English. Source of truth for anything that changes: https://www.renode.space/game-servers/killing-floor-2.

Contents: what it is, plans and prices, panel how-to, tutorials, rules for the assistant.

## What it is

Killing Floor 2 co-op servers. Every map and game mode, WebAdmin available, and the admin password is generated for you.

- Genres: Action
- Developer: Tripwire Interactive
- Released: 18 Nov, 2016
- Steam: https://store.steampowered.com/app/232090/

### What comes with every Killing Floor 2 server

- Configured before you see it: The install runs, the configuration is written and the server starts. No first-boot checklist, and nothing left on a default password shared with every other Killing Floor 2 server on the internet.
- The real console: Live output, command input and the server's own logs - not a filtered summary. Web-server noise is folded behind a counter you can switch off.
- Files and SFTP: A full file manager with an editor, plus SFTP credentials. Upload mods, edit configs, pull a world down to your machine.
- 2-7 backup slots: Taken on demand or on a schedule, restored with a button. Deleting a server takes its backups with it, on purpose.
- 3 ports allocated: Add and remove ports yourself from the Network tab, including the query and RCON ports where the game wants them.
- People on the same server: Invite friends or staff with granular permissions - console only, files only, no billing - through subusers, roles and teams.

### Which Killing Floor 2 plan do you need?

Memory is what decides whether a server holds together, so start there. The Starter tier gives 3 GB and 1 vCPU, which suits a private group. The Advanced tier at 5 GB is where most public servers sit, and Premium at 8 GB exists for the servers that stay full.

Storage matters more than people expect once mods and backups are involved - plans here run from 30 GB to 75 GB of NVMe. Moving up or down a tier later does not rebuild your world; it changes the limits on the container you already have.

If you are not sure, take the middle tier. It is cheaper to move up after a busy weekend than to spend one explaining lag to your players.

More game servers: https://www.renode.space/ai/game-servers.md

### General questions

### Getting started

**How quickly is my server ready?**

Game, app, web and database servers are created the moment payment clears, usually inside a minute. The game or runtime is installed and started for you, and the console is live in your browser while it happens. VDS and dedicated servers are prepared by hand and delivered within 24 hours.

**Do I need to configure anything before it works?**

No. The install runs, the configuration is written, and admin passwords are generated for your server rather than shared with everybody else's. The exception is four games whose publisher issues a credential to a person - those say so on the shop before you pay, and ask for it on a Setup tab afterwards.

**Which games need a key from me?**

Counter-Strike 2 needs a Steam game-server token, Don't Starve Together a Klei cluster token, FiveM a Cfx.re licence, and DayZ, Project Zomboid, 7 Days to Die, Arma 3 and Unturned need a Steam account or token of your own. We cannot create any of them and we never share one between customers. Your server is built immediately and the installation waits until you paste yours in.

**Can I try before buying?**

There is no free tier. The entry plans start at $1.50 a month precisely so that trying something costs about as much as a coffee.

**Can Claude or ChatGPT set my project up?**

Yes, and the panel gives it what it needs. On a server's Console tab, pick a purpose and press Connect AI: the panel copies a private link with the runtime, the port the code must read from SERVER_PORT, the code path, the GitHub branch, the databases and the limits. Paste it into Claude, ChatGPT or any assistant that can open links; the same link followed by /mcp works as an MCP server URL. It stops by itself after 7 days unused. You can also connect Claude, or any MCP client, to your whole account at https://panel.renode.space/api/client/mcp. Linked repositories get a pre-flight check that shows what will break before a deploy, no AI needed. No password or token is ever shown to the assistant - the AI setup page explains it all.

### Running the server

**Do I get full file access?**

Yes - a complete file manager with an in-browser editor, plus SFTP credentials. There is no plan on which the file manager is disabled or read-only.

**Can I install mods and plugins?**

Yes. Upload them through the file manager or SFTP, or use the game's own workshop support where it has any. Nothing here whitelists which mods you are allowed to run.

**Can other people help me run it?**

Yes. Invite subusers with granular permissions - console only, files only, no billing - or build a team with a role and grant it access to several servers at once. Permissions are a union, so nobody loses access they were given elsewhere.

**What happens if my server runs out of memory?**

New servers are configured so the kernel stops the container and it restarts clean, rather than swapping and dragging the whole machine down. If a server restarts repeatedly we warn you on the server page and open a support ticket before anything is suspended - you get told twice before it stops.

**Is the CPU limit a hard limit?**

Yes, and it cannot be breached: the container is throttled to the share you bought. A server sitting at 100% is slow, not broken, and is never suspended for it.

### Backups and safety

**Are backups included?**

Every plan carries backup slots - two on the entry tiers, more further up. Take them on demand or on a schedule, and restore with a button rather than a support ticket.

**Where are backups stored?**

Off the machine they protect. A backup sitting on the same disk as the thing it is insuring covers you deleting your world and covers nothing at all about the disk failing.

**What happens to my backups if I cancel?**

Deleting a server deletes its backups with it, deliberately and including locked ones. Download anything you want to keep first - the panel lets you.

### Billing

**How do I pay?**

PayPal, card, your wallet balance, or bank transfer. Every method produces a proper invoice you can download or print, with our details and the bank account on it while it is unpaid.

**Can I pay in Georgian lari?**

The panel displays every figure in lari at the National Bank of Georgia's published rate, marks converted figures as approximate, and always shows the amount that will actually be charged. Invoices stay in the currency they were raised in, because an invoice is a demand for a specific amount.

**What happens when my subscription is due?**

An invoice is raised and emailed to you seven days before expiry, and again on the day. Paying it settles that same document rather than raising a second one.

**Can I upgrade or downgrade later?**

Yes, and it does not rebuild anything. Changing plan changes the limits on the container you already have - your world, files and database stay exactly where they are.

**Do you offer refunds?**

There is no automatic refund button. If a server cannot do what it was sold to do, open a ticket and we will sort it out - including refunding you. We would rather fix the plan than argue about the policy.

### Support and the honest bits

**How do I get help?**

Open a ticket from the panel - it reaches every member of staff and every administrator, not a queue aimed at nobody in particular. Attach a screenshot if it helps; attachments are private to your ticket rather than sitting at a guessable public URL. Discord is there for faster, less formal questions.

**Where are the servers?**

Germany, on hardware we run. That is one location: if you need players in another region on a low ping, say so before buying rather than after.

**Is there an uptime guarantee?**

We measure node availability every five minutes and report it in the panel rather than printing a number with four decimal places we have not earned. If something is down you will usually hear it from us first.

**Who actually runs this?**

A small team that writes the panel, the shop and the automation itself. When something is wrong the fix is a code change, which is why the list of things wrong keeps getting shorter.

## Plans and prices

Read from the live catalogue at 2026-10-15 03:05 UTC. Prices are in US dollars per month; checkout also takes Georgian lari and bills for 1, 3, 6, 12 or 24 months. Prices change - re-check on https://www.renode.space/game-servers/killing-floor-2 or in the panel shop at https://panel.renode.space before quoting one.

| Plan | Price / month | Memory | CPU | NVMe disk | Databases | Backups | Ports |
|---|---|---|---|---|---|---|---|
| Starter | $8 | 3 GB | 1 vCPU | 30 GB | 1 | 2 | 3 |
| Standard | $11 | 4 GB | 1.5 vCPU | 40 GB | 1 | 3 | 3 |
| Advanced | $14 | 5 GB | 2 vCPU | 50 GB | 1 | 4 | 3 |
| Pro | $18 | 6 GB | 2.5 vCPU | 60 GB | 1 | 5 | 3 |
| Premium | $23 | 8 GB | 3 vCPU | 75 GB | 1 | 7 | 3 |


## Panel how-to

From the panel guides at https://www.renode.space/guides.

### Ordering a server

Ordering takes about a minute and happens in three screens: find what you want to run, pick a plan, and pay. Pay by card or PayPal and the server is set up the moment the payment goes through - you can watch it install in its console.

- Takes: About a minute
- Pay with: Card, PayPal or bank transfer
- Billed for: 1, 3, 6, 12 or 24 months
- Prices in: US dollars or Georgian lari

Open the shop and find what you want to run:

1. Sign in to the panel and open the shop. The tabs along the top are the product lines: VDS, Game Servers, App Hosting, Web Hosting and Databases.
2. Find your game - there is a search box - and press View plans. The card already shows the lowest price and the range of memory on offer.

Compare the plans and pick one:

3. Every plan lists its memory, CPU and NVMe storage, roughly how many players it suits, and what is included - updates, backup slots, file and SFTP access.
4. Press Get Started on the one you want. Not sure? Start smaller: you can move to a bigger plan later without losing your world.

Choose how long, then pay:

5. Pick a billing period - 1, 3, 6, 12 or 24 months. The total for the whole period is shown before you pay, so there are no surprises.
6. Pay with PayPal, or press Debit or Credit Card - paying by card does not need a PayPal account. The server is created as soon as the payment completes.

Paying by bank transfer instead: Prefer to pay from your bank? Choose bank transfer at checkout. The server is set up once the payment arrives, usually the next working day.

1. Switch the payment tab to Bank transfer. The account details for Bank of Georgia and TBC Bank appear, each with a Copy button.
2. Press Order & get invoice, then pay that invoice from your banking app, quoting the reference on it.

After you pay:

- The server appears under My Servers and installs itself. Open it to watch the install in the console.
- Your orders, invoices and subscriptions are under Finances in the side menu.
- Stuck at any step? Open Support in the side menu and raise a ticket.

### The console

Live output, a command line, power controls and the resource graphs. It is the server's own output rather than a filtered summary - if the game prints it, you see it.

- Start, stop, restart and kill, with the current state always visible.
- Command history with the arrow keys, and tab completion for common commands.
- Web-server noise - the internet knocking on doors that are not there - is folded behind a count you can switch off. A real error always prints.
- Graphs for memory, CPU and disk against your limits, so whether it is the plan or the mod is answerable.

### Files and SFTP

A complete file manager with an editor in the browser, plus SFTP credentials for the tools you already use. Upload a modpack, fix a config, pull a world down to your machine.

- Drag files in, or upload a folder. Archives can be unpacked in place.
- Edit any text file with syntax highlighting and save without downloading it.
- PDFs and images preview in the panel rather than downloading first.
- SFTP on the same credentials - use FileZilla, WinSCP or your editor's remote mode.

### Backups

Take one before you try something. Restore it when the something goes wrong. Lock the ones that matter so they are not rotated away.

- Slots on every plan - two on the entry tiers, more further up.
- Take one on demand, or on a schedule you set.
- Download any backup to your own machine.

> Important: Deleting a server deletes its backups, including the locked ones. A lock stops you removing a backup by accident; it is not a claim on the disk after the server is gone. Download what you want to keep before you cancel.

### Subusers, roles and teams

Give somebody the console without giving them your files, or the files without your billing. Three separate ideas, kept apart deliberately.

- A role holds permissions - what may be done.
- A team holds people.
- A grant joins a team to a server with a role, so adding a moderator to the team gives them the same access everywhere at once.
- Invite by link, by a join code, or by email address - and require approval on the codes if you would rather vet people.
- Access can be time-boxed, and expiry stops working immediately rather than overnight.

### Scheduled tasks

Restart nightly, back up before the restart, announce it to players first. Tasks run in order with delays between them, so a schedule can be a small routine rather than one action.

- Send a console command - a warning to players, a save, a world flush.
- Take a backup.
- Power actions: start, stop, restart.

### Games that need a key from you

A few games want a credential their publisher issues to a person - a Steam game-server token, a Steam account that owns the server files, a Klei cluster token, a Cfx.re licence. We cannot create one and we never share one between customers.

> Note: Those games say so on the shop before you pay. Your server is built immediately, and the game installation is held until you paste the value into a Setup tab, because installing without it produces a server with no game files in it and no explanation.

## Tutorials

2 posts, newest first. Each one follows in full after the list.

- [Killing Floor 2 mutators and custom modes](https://www.renode.space/blog/killing-floor-2-mutators-and-custom-modes) (2026-10-07): Run Killing Floor 2 mutators and custom modes: how ?Mutator= and ?Game= work, Workshop delivery, Controlled Difficulty, endless overhauls, ranked status and fixes.
- [Killing Floor 2 server: config and web admin](https://www.renode.space/blog/killing-floor-2-server-guide) (2026-09-21): Run a Killing Floor 2 dedicated server: SteamCMD install, the launch line, PCServer-KFGame.ini, web admin, ports, workshop maps and the errors people hit.

---

### Killing Floor 2 mutators and custom modes

Published 2026-10-07 by RE:NODE Team. https://www.renode.space/blog/killing-floor-2-mutators-and-custom-modes

In Killing Floor 2, a mutator is an UnrealScript class that changes the rules of whichever mode is running, and a custom game mode is a class that replaces the mode entirely. Both are loaded from the launch line: `?Mutator=Package.ClassName` (several separated by commas inside one parameter) and `?Game=Package.ClassName`. The package arrives through the Workshop - listed by item id in `PCServer-KFEngine.ini`, downloaded to `KFGame/Cache` on the next start - and joining players fetch the same items from Steam. Anything not on Tripwire's whitelist makes the server Unranked, so players earn no perk XP on it. Decide whether you are running a ranked server or a modded one before you install anything, because you cannot be both.

The base server - install, the main ini files, web admin, ports, workshop maps - is in [the Killing Floor 2 server guide](https://www.renode.space/blog/killing-floor-2-server-guide). This post is everything above that: how mutators and modes load, the popular ones and what they cost, running a difficulty-control mode properly, and fixing the usual failures.

#### Mutators versus game modes

The launch line names a map, then URL-style options:

```bash
$ ./KFGameSteamServer.bin.x86_64 \
    KF-BurningParis?Game=KFGameContent.KFGameInfo_Survival?Difficulty=3?GameLength=1?Mutator=PackageA.MutA,PackageB.MutB \
    -Port=7777 -QueryPort=27015
```

`?Game=` picks the game info class - the code that defines what a match is. The stock ones live in `KFGameContent`: `KFGameInfo_Survival`, `KFGameInfo_Endless`, `KFGameInfo_WeeklySurvival`, `KFGameInfo_Objective` and `KFGameInfo_VersusSurvival`. A custom mode is just a different class in a different package, and it replaces the stock one completely - wave logic, spawning, trader, sometimes perks and the shop.

`?Mutator=` loads one or more mutator classes on top of whatever mode is running. A mutator hooks into game events - a player spawning, a Zed spawning, a wave starting, damage being dealt - and changes the outcome. Mutators stack, which is both their strength and the source of most conflicts.

| | Custom game mode | Mutator |
| --- | --- | --- |
| Loaded with | `?Game=Package.Class` | `?Mutator=Package.Class` |
| How many | Exactly one | Several, comma-separated |
| Scope | Replaces the mode | Modifies the mode |
| Typical use | Difficulty control, endless overhauls | Player count, trader time, quality of life |
| Conflict risk | Low with stock mutators, higher with others | Rises with every one added |

The syntax trap people fall into: several mutators go in **one** `?Mutator=` separated by commas. Repeating `?Mutator=` twice on the line keeps only one of them.

#### Where the code comes from: Workshop and manual installs

Mutators and modes are packages - compiled `.u` files, sometimes with content packages beside them. There are two ways to get them onto a server.

**Through the Workshop**, the normal route. List each item id in the engine ini, one line per item:

KFGame/Config/PCServer-KFEngine.ini:

```ini
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=1111111111
ServerSubscribedWorkshopItems=2222222222

[IpDrv.TcpNetDriver]
DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload
```

The ids above are placeholders - take the real ones from the item's Workshop URL. On the next start the server downloads each item to `KFGame/Cache/<id>/`. Players joining are pointed at the same items and Steam downloads them, which is how client-side parts of a mutator (a HUD, a menu, a custom weapon model) reach people. The `DownloadManagers` line has to be the first entry in that section, as explained in the main guide.

**Manually**, by placing the package files in the server's content folders. This works for purely server-side code and for your own builds, but clients get nothing from it - anything with a client-side component then fails for every player who does not already have the files.

Whichever route, the package name in `?Mutator=Package.Class` is the file name of the `.u` without its extension, and the class name is given by the author. Workshop descriptions for serious mods state the exact string to paste. Copy it rather than guessing from the item title; the title and the package rarely match.

```diagram
title: How a KF2 mutator reaches the server and the players
ws = Steam Workshop | item id
ini = PCServer-KFEngine.ini | subscribed items
cache = KFGame/Cache | downloaded package
server = KF2 server | ?Mutator= loads class
player = Player | Steam fetches items
ini -> server : read at start
server -> ws : downloads by id
ws -> cache
cache -> server
player -> server : joins
ws -> player : same items
```

> [!WARNING]
> A mutator that fails to load does not stop the server. The match starts without it, and the only evidence is a warning in the log near start-up. After adding or updating any mutator, read the log for the package name and confirm it loaded - do not assume it is running because the server is up.

#### Ranked, Unranked and the whitelist

Tripwire maintains a whitelist of approved modifications. A server running only stock content and whitelisted mutators stays **Ranked**: players earn perk XP and the server is treated like an official one. Run anything off the list and the server is **Unranked**, and nobody earns XP while playing on it.

This is the most important fact about modded Killing Floor 2 hosting, because perk progression is why most players are in the game at all. Three consequences:

- **Say it in the name.** Players filter by reading. "Unranked" or "Custom" in `ServerName` saves you a stream of complaints from people who joined to level a perk.
- **Many popular mods are Unranked by design.** Difficulty overhauls, larger player counts and endless reworks change the balance that XP is earned against. Their players know and accept it.
- **Some small mutators are whitelisted.** If you want to stay Ranked, check the item page and Tripwire's current list before installing; status can change between game updates.

Progression is stored on each player's Steam account rather than on your server, so an Unranked night does not take anything away from anyone. It just does not add.

#### Raising the player count

The six-player cap in Survival is enforced by the game mode, not the engine, which is why editing `MaxPlayers` alone does not work. Communities that want eight or twelve players in co-op use a max-players mutator, plus a HUD or scoreboard mutator so the extra players appear in the interface. The usual pattern is:

1. Subscribe the server to the mutator and add it to `?Mutator=`.
2. Set the target player count where the mutator documents it - usually `?MaxPlayers=` on the launch line or a key in the ini file it creates.
3. Add a scoreboard or HUD mutator if the main one does not handle that itself.
4. Restart and test with real players, not just the browser number.

Be honest with yourself about what this does to the game. Wave size, dosh and boss health scale for up to six players; at twelve, each player sees fewer Zeds and more money, so the game gets easier and noisier. Difficulty-control modes, below, are the way to put the challenge back. CPU cost rises with players and Zeds together; a twelve-player server with large waves on Hell on Earth is a real single-thread load. [CPU vs RAM for game servers](https://www.renode.space/blog/cpu-vs-ram-for-game-servers) covers which one to watch.

#### Controlled Difficulty and other custom modes

##### Controlled Difficulty

Controlled Difficulty (CD) is the best-known custom mode and the standard for experienced groups. It replaces Survival with a version where nearly every spawning variable is exposed: how many Zeds are alive at once, how fast they spawn, the spawn cycle (which Zed types come in which waves), how long the trader stays open, which boss appears.

It loads as a game class, not a mutator. Several maintained builds exist, published by different authors, and they use different package names - typically along the lines of `ControlledDifficulty_<Author>.CD_Survival`. Use the exact string from the Workshop page of the build you subscribe to:

```text
KF-BioticsLab?Game=<CDPackage>.CD_Survival?Difficulty=3?GameLength=2?SpawnCycle=basic_moderate
```

Settings commonly exposed by CD builds include `SpawnCycle`, `MaxMonsters`, `CohortSize`, `SpawnPoll`, `WaveSizeFakes`, `TraderTime` and `Boss`. They can be set on the launch line or in the ini the mode writes on its first start, and most builds also let players query the current values in chat. Names and defaults differ between builds, so read the build's documentation rather than a guide written for another one.

A few practical notes:

- **Spawn cycles are the heart of it.** A cycle defines the exact Zed mix wave by wave. Communities share cycle names; a group that wants a consistent challenge picks one and keeps it.
- **`WaveSizeFakes` scales wave size as if more players were present.** It is how a four-player group gets a six-player or larger wave.
- **CD is Unranked.** Everyone who plays it knows this, but new players may not.
- **Watch CPU on high `MaxMonsters`.** CD lets you put far more Zeds on the map at once than stock Survival. The server's game thread pays for every one.

##### Endless overhauls and other modes

Beyond CD, the Workshop holds full endless reworks - Zedternal is the best known - that replace perks, the trader and progression with their own systems for very long runs. They load with `?Game=` using the class on the item page, generally want their own ini tuning, and are Unranked. Expect memory to climb over a long session and plan a restart between runs; [restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help) covers timing.

Pick one custom mode per server. Two game classes cannot run together, and mutators written for stock Survival may not work under a custom mode at all - check each mutator's page for compatibility notes before adding it to a CD or endless server.

#### Configuring mutators and avoiding conflicts

Mutators that have settings usually create an ini file of their own in `KFGame/Config/` on the first start with the mutator loaded. The file name depends on the mod. The same rule applies as for the main configuration: start once, stop cleanly, then edit, because a running server writes its config back on shutdown.

```text
1. Add the item id to PCServer-KFEngine.ini
2. Add Package.Class to ?Mutator= or ?Game=
3. Start, wait for the map to load, read the log
4. Stop cleanly
5. Edit the new ini file the mod created
6. Start again and test in a real match
```

Conflicts happen when two mutators change the same thing - two that both adjust spawning, two that both replace the scoreboard, a max-players mutator and a custom mode that has its own player limit. Symptoms range from one silently overriding the other to errors at wave start. The method for finding a conflict is boring and reliable:

1. Remove every mutator. Confirm the server runs clean.
2. Add them back one at a time, restarting and testing each.
3. When something breaks, the last one added is involved; check it against each of the others in pairs.

Keep the working launch line written down somewhere outside the server, with the Workshop ids and the date. When an author updates an item and the server breaks the morning after, that note is how you roll back. [What to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks) is the general playbook, and [keeping a modded server clean](https://www.renode.space/blog/keeping-a-modded-server-clean) the case for a short list.

#### Updates and Workshop drift

Two kinds of update hit a modded Killing Floor 2 server:

- **Game updates.** Tripwire's patches can break compiled mutators until their authors rebuild them. Update the server, then check each mutator's page and the log before reopening.
- **Workshop updates.** When an author republishes, the server fetches the new version on its next start and players fetch it on their next join. A broken update arrives with no action on your side.

The defence is a backup before every change and every patch. The whole state of a Killing Floor 2 server is `KFGame/Config/` plus whatever you placed by hand; the cache can be re-downloaded. On RE:NODE backup slots come with every Killing Floor 2 plan and restore with one button, and the Schedules tab can take a nightly backup and restart the server at a fixed hour so Workshop changes arrive at a predictable time rather than in the middle of a wave.

#### Troubleshooting

**The mutator is listed but nothing changes.** It did not load. Search the log for the package name. Usual causes: wrong `Package.Class` string, the Workshop item failed to download, or a second `?Mutator=` replaced the first.

**Players are stuck loading or kicked on join.** The mutator has client-side content and their download failed, or the `DownloadManagers` line is missing or not first.

**The server became Unranked.** Something on it is not whitelisted. Remove mutators one at a time to find which, or accept it and say so in the server name.

**MaxPlayers is ignored.** The per-mode cap still applies. Use a max-players mutator, and check that a custom mode is not enforcing its own limit.

**Settings in the mutator's ini revert.** The server was running when you edited. Stop, edit, start.

**Wave start crashes or errors.** Two mutators conflict, or a mutator is incompatible with the custom mode. Bisect as above.

**Lag in late waves with a custom mode.** Too many Zeds alive at once for one core. Reduce the mode's alive-at-once setting before buying a bigger plan.

#### FAQ

##### How do I add more than one mutator to a KF2 server?

Put them all in a single `?Mutator=` option, separated by commas: `?Mutator=PackageA.MutA,PackageB.MutB`. Repeating `?Mutator=` keeps only one.

##### Do mutators make my server Unranked?

Any modification not on Tripwire's whitelist does. Players on an Unranked server earn no perk XP. Some small mutators are whitelisted; most difficulty and player-count mods are not.

##### Do players need to install mutators themselves?

No. If the mutator is delivered through the Workshop and the download manager is configured, joining players get it from Steam automatically. Manually installed packages are not sent to clients.

##### What is the difference between ?Game= and ?Mutator=?

`?Game=` chooses the game mode class and replaces the mode entirely; there can be only one. `?Mutator=` adds modifications on top of the running mode, and several can be loaded.

##### Is Controlled Difficulty a mutator?

It is a custom game mode, loaded with `?Game=` and a class from the build you subscribe to. Different builds use different package names, so copy the exact string from the Workshop page.

##### Can I run a 12-player Survival server?

Yes, with a max-players mutator and usually a scoreboard fix. It will be Unranked, and the game gets easier at higher counts unless you add a difficulty-control mode.

Killing Floor 2 servers on RE:NODE start at 3 GB on NVMe, with launch options on the Startup tab, full file access to `KFGame/Config` and the Workshop cache, and backup slots on every tier so a broken mutator update is a one-click restore.

[See Killing Floor 2 plans](https://www.renode.space/game-servers/killing-floor-2)

---

### Killing Floor 2 server: config and web admin

Published 2026-09-21 by RE:NODE Team. https://www.renode.space/blog/killing-floor-2-server-guide

The Killing Floor 2 dedicated server is a free SteamCMD download (app id `232130`), it runs on Linux and Windows, it holds six players in Survival, and it is comfortable in 3 to 4 GB of memory on one fast core. Two things catch nearly everybody on the first attempt. The server writes its own configuration files on the first start and overwrites anything you put there beforehand, so the order is install, start, stop, edit. And most of what people want to change - the map, the mode, the difficulty, the wave count - is not in a config file at all; it is in the launch line, in a URL-shaped string appended to the map name. Get those two right and the rest of this is detail.

#### What the dedicated server gives you

Killing Floor 2 is a wave-based co-op shooter, and the server is a stripped copy of the game with no renderer. It loads one map, runs one game mode, and restarts the map when the game ends. There is no lobby, no mode voting beyond the map vote, and no way to change mode without restarting the process with a different launch line.

The modes, and the class name each one needs:

| Mode | Game class | Players |
| --- | --- | --- |
| Survival | `KFGameContent.KFGameInfo_Survival` | 6 |
| Weekly Outbreak | `KFGameContent.KFGameInfo_WeeklySurvival` | 6 |
| Endless | `KFGameContent.KFGameInfo_Endless` | 6 |
| Objective | `KFGameContent.KFGameInfo_Objective` | 6 |
| Versus Survival | `KFGameContent.KFGameInfo_VersusSurvival` | 12 |

Six is the number the game is balanced around. Versus takes twelve because half of them are playing Zeds. Raising the cap is possible and people do it, but it is not one setting: the limit is enforced by the game mode class, so the per-mode `MaxPlayers` has to change, the web admin panel resets it on every map change, and in practice servers use a dedicated max-players mutator instead. Even then the scoreboard only draws six rows without a custom HUD. Wave composition, the dosh economy and boss health were all written for six, so a larger server is an easier, noisier game rather than a bigger one.

Administration is not what you expect if you arrive from a Source game. There is no `rcon_password`, no `rcon` console command and no Source RCON port. Remote administration is a small web server built into the game server, switched off by default, plus the ini files. That web panel is covered below, and it is the single most useful thing you can turn on.

#### Requirements and resource usage

The server is light on memory and moderately heavy on one core. Zed pathfinding and physics are what cost you, so a late wave on a large map with a full lobby is the peak, not the boss fight.

| Setup | RAM | CPU | Notes |
| --- | --- | --- | --- |
| 6 players, stock maps, Survival | 1-2 GB | 1 core | Often well under 1 GB at idle |
| 6 players, several workshop maps | 2-3 GB | 1-1.5 cores | Map loads are the spikes |
| 12 players, Versus | 2-3 GB | 1.5 cores | More actors, not much more memory |
| Endless, long sessions | 3 GB | 1.5-2 cores | Memory creeps across a long run |

Those numbers are deliberately lower than most hosting pages will tell you. A single six-player Killing Floor 2 instance has been measured at a few hundred megabytes of resident memory and a couple of percent of a modern core. The honest advice is that memory is not what you are buying here, and paying for 8 GB because a comparison table said so is money wasted.

- **CPU**: the game simulation is effectively one thread, which is why the server accepts `-PREFERREDPROCESSOR=` to pin itself. Clock speed decides whether wave 9 on Hell on Earth holds its tick rate; core count does almost nothing. [CPU vs RAM for game servers](https://www.renode.space/blog/cpu-vs-ram-for-game-servers) is the general version of that argument.
- **Disk**: this is the real constraint. The install is large for a game of this era - budget 30 GB, and more if you plan to cache a big workshop collection, because every subscribed item is unpacked into the server's cache and stays there.
- **Network**: a full six-player game is undemanding, in the order of 100-200 KB/s per player. The thing that actually hurts new joiners is workshop downloads, which come from Steam rather than from you.

Memory climbing over a long Endless run is normal rather than a leak you can fix. A daily restart at an hour nobody plays keeps it flat, which is the argument in [restart schedules that help](https://www.renode.space/blog/restart-schedules-that-help).

#### Installing and the first start

The server is anonymous on SteamCMD, so no account is needed:

```bash
$ steamcmd +force_install_dir /home/kf2/server +login anonymous \
    +app_update 232130 validate +quit
```

If SteamCMD itself is new to you, [SteamCMD explained](https://www.renode.space/blog/steamcmd-explained) covers app ids, `validate` and update scripts. The binary is where the confusion starts. On Linux it is:

```text
Binaries/Win64/KFGameSteamServer.bin.x86_64
```

That is not a typo. The native Linux server lives in a folder called `Win64`, because the build system never renamed it. On Windows the neighbour is `KFServer.exe`.

Now the part that matters: **start it once and stop it before you edit anything**. The first run writes a full set of configuration files into `KFGame/Config/`, and if a file is already there in a shape the server does not like, it is replaced. Start it, wait for the map to load, stop it cleanly, then edit.

```bash
$ cd /home/kf2/server/Binaries/Win64
$ ./KFGameSteamServer.bin.x86_64 \
    KF-BioticsLab?Game=KFGameContent.KFGameInfo_Survival?Difficulty=2?GameLength=1 \
    -Port=7777 -QueryPort=27015
```

> [!WARNING]
> Edit the ini files only while the server is stopped. A running Killing Floor 2 server holds its configuration in memory and writes it back out on shutdown, so an edit made to a live server is silently thrown away when it stops. This is the number one reason "my settings do not save".

#### The launch line: map, mode, difficulty and length

Everything after the map name is a URL parameter, separated by `?`, and it wins over the equivalent ini value. The three that matter:

| Parameter | Values |
| --- | --- |
| `Game` | The mode class from the table above |
| `Difficulty` | `0` Normal, `1` Hard, `2` Suicidal, `3` Hell on Earth |
| `GameLength` | `0` Short (4 waves), `1` Medium (7 waves), `2` Long (10 waves) |

Stock map names all begin with `KF-`: `KF-BioticsLab`, `KF-Outpost`, `KF-BurningParis`, `KF-Farmhouse`, `KF-VolterManor` and so on. The map you name on the command line is the one the server boots into; where it goes next is decided by the map cycle in the ini.

You can also pass `?MaxPlayers=6` and `?Mutator=Package.ClassName` here, with mutators comma-separated if you run more than one. On a panel-based host you do not type this line at all - the same values appear as fields on the Startup tab, and on RE:NODE that is where the map, mode, difficulty and length live. Changing one and restarting is the whole operation.

#### The config files and the settings worth changing

`KFGame/Config/` holds a file per subsystem, prefixed with the platform. On Windows the names start `PCServer-`; on Linux they start `LinuxServer-`. The three you will touch:

| File | Holds |
| --- | --- |
| `PCServer-KFGame.ini` | Server name, passwords, map cycle, MOTD, voting, gameplay switches |
| `PCServer-KFEngine.ini` | Workshop subscriptions, download managers, networking |
| `KFWeb.ini` | The web admin panel |
| `KFWebAdmin.ini` | Multiple web admin accounts, if you want them |

`-ConfigSubDir=<name>` gives an instance its own folder under `KFGame/Config`, which is how you run several servers from one install without them fighting over the same files.

The keys in `PCServer-KFGame.ini` that earn their place:

KFGame/Config/PCServer-KFGame.ini:

```ini
[Engine.GameReplicationInfo]
ServerName=Frankfurt Hell on Earth
ShortName=HoE

[Engine.AccessControl]
AdminPassword=a-long-random-string
GamePassword=

[Engine.GameInfo]
MaxPlayers=12
MaxSpectators=2
GameDifficulty=1.000000
MaxIdleTime=0.000000
bKickLiveIdlers=False

[KFGame.KFGameInfo]
GameMapCycles=(Maps=("KF-BurningParis","KF-BioticsLab","KF-Outpost"))
ServerMOTD=Welcome. \n \n Have fun and good luck!
bDisableTeamCollision=False
bDisableKickVote=False
KickVotePercentage=0.660000
bDisableMapVote=False
MapVoteDuration=60.000000
bDisablePublicTextChat=False

[KFGameContent.KFGameInfo_Survival]
MaxPlayers=6
```

Taking those in turn:

- `ServerName` is what the browser shows. Keep it short and put the difficulty in it - people filter by reading, not by using the filter.
- `AdminPassword` is the one credential the server has. It logs you into the web panel and grants admin in game. `GamePassword` left empty means a public server; set it and the server becomes private and generally drops off the browser.
- **Player count is set twice.** `[Engine.GameInfo] MaxPlayers` is the engine ceiling and ships at 12. The number that actually applies is the per-mode one in `[KFGameContent.KFGameInfo_Survival]`, which ships at 6. Raising the first without the second does nothing at all, which is why so many people conclude the setting is broken.
- `GameMapCycles` is a list of lists and most servers need exactly one. Every map named in it must exist on the server, including workshop maps, or the cycle stalls on the missing entry. There is a documented ceiling of 519 maps in rotation, past which the server misbehaves.
- `ServerMOTD`, `BannerLink` and `WebsiteLink` all live in `[KFGame.KFGameInfo]` rather than in a section of their own. `\n` is the line break. Note that saving settings from the web admin panel has a habit of blanking `WebsiteLink`.
- Idle kicking is `MaxIdleTime` plus `bKickLiveIdlers` in `[Engine.GameInfo]`, and `0` means never.
- Wave count is not a key. It comes from `GameLength`, which is set on the launch line.

The general rule for Killing Floor 2: Tripwire has changed the shipped ini between seasons more than once. The file the server wrote for you is the authoritative list of keys for the version you are running; a guide is a list of the ones worth thinking about.

#### Web admin

The web admin panel is a small HTTP server inside the game server. It gives you a live player list with kick and ban, the current map and mode with the ability to change both without a restart, a chat window, a console, and editors for most of the settings above. It is off until you switch it on:

KFGame/Config/KFWeb.ini:

```ini
[IpDrv.WebServer]
Applications[0]=WebAdmin.KF2ServerAdmin
ApplicationPaths[0]=/ServerAdmin
ListenPort=8080
MaxConnections=18
bEnabled=true
```

Restart, then open `http://your-server-address:8080/ServerAdmin` and log in with the user name `Admin` and the password from `AdminPassword`. If that password is blank you cannot log in at all, and the panel will not tell you why. If you want more than one account, `KFWebAdmin.ini` switches the authentication class to the multi-admin one and generates a `MultiAdmin.ini` to hold them.

> [!WARNING]
> Web admin is plain HTTP with no TLS, and the password it takes is the master admin password - one credential for the panel and for admin in game. It crosses the network in the clear. Use a long random string that is not reused anywhere, restrict the port to addresses you control, and never administer it from a network you do not trust. The same reasoning as [RCON safely](https://www.renode.space/blog/rcon-safely) applies here with less protection. Tripwire also flags the `-WebAdminPort=` switch itself as beta, so set the port in the ini rather than on the command line.

Two practical notes. Changing the map or mode from the panel takes effect immediately and kicks nobody, which makes it much nicer than restarting. And any setting you change in the panel is written to the ini files, so the panel and the files are two views of the same thing rather than two competing sources of truth.

#### Ports and how players find you

| Port | Protocol | Purpose |
| --- | --- | --- |
| `7777` | UDP | Game traffic |
| `27015` | UDP | Steam query - the server browser talks to this |
| `20560` | UDP | Steam |
| `8080` | TCP | Web admin, only if you enabled it |

The game port and query port are set with `-Port=` and `-QueryPort=`, and there is a behaviour worth knowing: changing `-Port=` shifts the query port by the same amount automatically unless you also pass `-QueryPort=`. That is convenient when you run several instances and surprising when you do not. All three UDP ports need to be reachable; a server that runs perfectly but never appears in the browser has a blocked or wrong query port almost every time. One more, outbound: a Weekly Outbreak server looks up the time over NTP on UDP `123` to work out which weekly is current. [Game server ports explained](https://www.renode.space/blog/game-server-ports-explained) goes through why the query port exists and what breaks when only one of the pair is open.

Players find you three ways: the in-game browser, which is slow and heavily filtered; a favourite added by address; or the console. Killing Floor 2 keeps the Unreal console, so a player can press the console key and type:

```text
open 203.0.113.10:7777
```

That is the reliable test when the browser is being unhelpful. If `open` works and the browser does not list you, the server is fine and the query port is not.

On RE:NODE the game and query ports are allocated with the server and the admin password is generated for you at install. Web admin needs a port of its own, which you add on the Network tab.

#### Workshop maps, mutators and custom content

Killing Floor 2 pulls workshop content by id, not by subscription. You list the ids in the engine config:

KFGame/Config/PCServer-KFEngine.ini:

```ini
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=1234567890
ServerSubscribedWorkshopItems=1234567891

[IpDrv.TcpNetDriver]
DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload
```

One line per item, repeated, not a comma-separated list. The `DownloadManagers` line is the one people leave out, and it has to be the **first** entry in the existing list under `[IpDrv.TcpNetDriver]` - without it the server has the map and joining clients do not, which looks like a broken server rather than a missing line.

On the next start the server downloads each item into `KFGame/Cache/<id>/0/BrewedPC`, and the real map name is the `.kfm` file in there with its extension removed. Watch the console on that first start, because a bad id fails quietly. On Linux there is a long-standing bug where the server does not create the cache folder, so `mkdir -p KFGame/Cache` before you start.

A downloaded map is not yet a playable map. Killing Floor 2 wants a summary block for it, in `PCServer-KFGame.ini`, before it will show in the cycle and the vote list:

KFGame/Config/PCServer-KFGame.ini:

```ini
[KF-MyCustomMap KFMapSummary]
MapName=KF-MyCustomMap
ScreenshotPathName=UI_MapPreview_TEX.UI_MapPreview_Placeholder
```

The section name is the map file name followed by a space and `KFMapSummary`, which is unusual enough that it is worth copying exactly. Then add the map to `GameMapCycles`. Players joining are pointed at the same workshop items and Steam fetches them client-side, which is why the first join to a heavily modded server is slow and why a map the client fails to download shows up as a player stuck on the loading screen.

Mutators are passed on the launch line, as `?Mutator=Package.ClassName`, with several separated by commas **inside one** `?Mutator=` rather than repeated. They can be delivered through the workshop in the same way maps are.

Here is the part that changes what kind of server you are running. Tripwire operates a whitelist, and a server running any modification that is not on it is marked **Unranked**: players on it earn no perk XP while they play. Vanilla and whitelisted content leave the server Ranked. That is not a bug or a host setting, it is the publisher's policy, and it is the first thing to tell people before they spend an evening levelling on your server. Well-known mods advertise their own status, and some popular ones have simply never been whitelisted.

The broader mechanics of workshop content on a server - collections, update timing, what happens when an author republishes - are in [Steam Workshop mods on dedicated servers](https://www.renode.space/blog/steam-workshop-mods-on-dedicated-servers). The advice there that matters most here: an author updating a map mid-season will break your cycle without telling you, so check the console after an update rather than finding out from a player.

#### Updates, restarts and backups

Killing Floor 2 clients and servers must match exactly. After every patch - and Tripwire ships seasonal content updates - the server has to run `app_update` before anyone can join, and a player on the new build hitting an old server gets a version error with no useful detail.

What is worth backing up is small and easy to lose:

- `KFGame/Config/` - every setting you have made, including the workshop list and the map summaries.
- Anything you have hand-placed in `KFGame/`, such as maps you host yourself rather than from the workshop.

There is no world file here. A Killing Floor 2 server has no persistent state to protect beyond its configuration, because perk progression lives on each player's Steam profile, not on your server. That makes backups cheap and restores fast - keep a copy of the config folder before every patch and before every round of edits. [Backups that actually restore](https://www.renode.space/blog/backups-that-actually-restore) is about the half of this people skip, which is proving the copy is good.

On RE:NODE the Killing Floor 2 plans carry backup slots, restoring is one button, and the Schedules tab will run a nightly backup and a daily restart with a warning command in front of it. If the server reaches its memory limit the container is stopped and restarted clean instead of swapping, which on a stateless game server costs you a wave and nothing else.

#### Troubleshooting

**My ini edits keep disappearing.** You edited while the server was running, or you edited before the first start. Stop the server, edit, start.

**The server does not appear in the browser.** Check the query port is open on UDP and matches `-QueryPort=`. Test with `open ip:7777` from the game console: if that connects, the game port is fine and the problem is only the query side.

**Web admin refuses the connection.** `bEnabled=true` in `PCServer-KFWeb.ini`, the server restarted since you set it, and the web admin port open on TCP. Note that this port is TCP while everything else is UDP, which catches people copying firewall rules.

**Web admin loads but rejects my password.** `AdminPassword` is empty or has a trailing space. The panel gives the same error either way.

**A workshop map never downloads.** The id is wrong, or it is a collection id rather than an item id. Collections are not accepted - list each item.

**A workshop map downloads but is not in the vote list.** The `KFMapSummary` block is missing or the section name does not match the map file exactly. Keep the capitalisation identical across the cycle, the summary block and the file itself.

**The server has the workshop map, clients do not.** The `DownloadManagers` line is missing from `[IpDrv.TcpNetDriver]`, or it is not the first entry in that list.

**The log repeats "Attempting server re-register now" and waits for a Steam Server UID.** A Steam game is running on the same machine, the install was never validated, or the bundled `UE3Redist` prerequisites were not installed.

**My start script keeps getting reset.** `validate` in the SteamCMD update line overwrites the shipped start script every time it runs. Keep your own copy under a different name.

**Players get a version mismatch.** Run `app_update` on the server. If it is a modded server, the mods need updating too before people can play - the general playbook is in [what to do when a mod update breaks](https://www.renode.space/blog/what-to-do-when-a-mod-update-breaks).

**The server plays one map forever.** `GameMapCycles` is empty, contains only that map, or names a map that does not exist and the cycle cannot advance past it.

#### FAQ

##### How many players can a Killing Floor 2 server hold?

Six in Survival, Endless, Objective and Weekly, twelve in Versus Survival. The six-player cap is a balance decision rather than a hardware one. You can raise `MaxPlayers`, but wave size, dosh and boss health do not scale with it, so the game gets easier and noisier rather than bigger.

##### Does Killing Floor 2 have RCON?

No. There is no Source-style RCON port or password. Remote administration is the built-in web admin panel over HTTP, plus whatever console access your host gives you. That is why the admin password deserves the same care you would give an RCON password.

##### How much RAM does a Killing Floor 2 server need?

Less than most people are sold. A six-player Survival instance on stock maps has been measured at a few hundred megabytes; 2 to 3 GB covers it comfortably with workshop content and a long Endless run. Disk is the real requirement - the install alone wants tens of gigabytes. Buy clock speed and storage, not memory.

##### Where do I change the difficulty?

On the launch line, as `?Difficulty=` with a value from 0 to 3, or live from the web admin panel. The ini value is overridden by the launch line, which is why editing the file and restarting sometimes appears to do nothing.

##### Do players earn perk XP on my server?

On a vanilla or whitelisted server, yes, and the progression is stored against their Steam account rather than on your server, so nothing you do can lose it. Run a modification that is not on Tripwire's whitelist and the server becomes Unranked: people can still play, but they gain no XP while they do. Say so in the server name if that is your situation.

##### Can I run custom maps without the Steam Workshop?

Yes - drop the `.kfm` file into the server's map folder and give it a `KFMapSummary` block and a place in the cycle. The catch is that players then have no way to download it, so everyone joining needs the file already. Workshop distribution exists to solve exactly that.

Killing Floor 2 servers on RE:NODE start at 3 GB on NVMe, with the game and query ports allocated, an admin password generated at install, and backup slots on every tier. Ports for web admin are added on the Network tab, and the Schedules tab runs the nightly backup and restart for you.

[See Killing Floor 2 plans](https://www.renode.space/game-servers/killing-floor-2)

## Rules for the assistant

- Never ask the user for a password, token, API key or `.env` contents, and tell them not to paste one into this chat. Describe where a secret goes instead.
- Secrets reach the server through the panel: `.env` is uploaded through the Files tab, startup variables are set on the Startup tab. `.env` never goes in the repository.
- An app server has exactly one reachable port. Read it from `SERVER_PORT` (also `PORT` when the panel starts a linked repository) and bind `0.0.0.0`; never hard-code a port.
- On every panel-managed server (everything except VDS and dedicated servers, which come with full root) only `/home/container` persists, and the process runs unprivileged: no root, `sudo`, `apt`, `systemd` or Docker.
- Memory is a hard limit; a process that reaches it is killed with no error message. Suggest a bigger plan only after ruling out a leak.
- Do not suggest changing the server's startup command or image to work around a code problem - fix the code or the repository.
- Prices and plans above were read when this file was generated. Send the user to the page linked at the top before quoting a price as current.
- For a specific server, the panel's Connect AI link (Console tab) gives the exact runtime, port, path and branch. Prefer it over these general rules when the user has one.
- If something here does not answer the question, the full deploy docs are at https://www.renode.space/llms-full.txt and support is at https://www.renode.space/contact.
