Dockerfile for running a Killing Floor 2 server
1M+
Dockerfile for running a Killing Floor 2 server
2GB RAM and 20GB free disk space are essential. SSD recommended, otherwise map changes will take a long time. Disk space requirements will keep going up as updates are released.
A couple of amendments specific to RHEL and any offshoots:
To allow an IPv4 address to be shared with containers on a RHEL host, you need to ensure that net.ipv4.ip_forward is enabled. This can be set using sysctl -w net.ipv4.ip_forward=1. Afterwards, you must restart docker systemctl restart docker or service docker restart depending on if you are using init.d or systemd.
With docker -v mounts you can add :z to the end of the mount argument to add the relevant SELinux contexts to use the bind mount automatically. For example -v $HOME/kf2:/home/steam/kf2server becomes -v $HOME/kf2:/home/steam/kf2server:z.
mkdir -p $HOME/{kf2,kf2_steamdir}
docker run -d -t --name kf2 -p 0.0.0.0:20560:20560/udp \
-p 0.0.0.0:27015:27015/udp \
-p 0.0.0.0:7777:7777/udp \
-p 0.0.0.0:8080:8080 \
-v $HOME/kf2:/home/steam/kf2server \
-v $HOME/kf2_steamdir:/home/steam/steam \
dwurf/docker-kf2:latest
Configuration is done via environment variables. To run a long, hard server:
docker run -d -t --name kf2 -p 0.0.0.0:20560:20560/udp \
-p 0.0.0.0:27015:27015/udp \
-p 0.0.0.0:7777:7777/udp \
-p 0.0.0.0:8080:8080 \
-v $HOME/kf2:/home/steam/kf2server \
-v $HOME/kf2_steamdir:/home/steam/steam \
-e KF_DIFFICULTY=1 \
-e KF_GAME_LENGTH=2 \
dwurf/docker-kf2:latest
Run with the command update
docker run -d -t --name kf2 -p 0.0.0.0:20560:20560/udp \
-p 0.0.0.0:27015:27015/udp \
-p 0.0.0.0:7777:7777/udp \
-p 0.0.0.0:8080:8080 \
-v $HOME/kf2:/home/steam/kf2server \
-v $HOME/kf2_steamdir:/home/steam/steam \
dwurf/docker-kf2:latest \
update
Further arguments get passed to the update command, e.g.
docker run -d -t --name kf2 -p 0.0.0.0:20560:20560/udp \
-p 0.0.0.0:27015:27015/udp \
-p 0.0.0.0:7777:7777/udp \
-p 0.0.0.0:8080:8080 \
-v $HOME/kf2:/home/steam/kf2server \
-v $HOME/kf2_steamdir:/home/steam/steam \
dwurf/docker-kf2:latest \
update -beta preview validate
| Variable | Default | Description |
|---|---|---|
KF_MAP | KF-BioticsLab | Starting map when the server is first loaded. |
KF_DIFFICULTY | 0 | Game difficulty. * 0 - normal * 1 - hard * 2 - suicidal * 3 - hell on earth |
KF_ADMIN_PASS | secret | Used for web console and in-game admin logins. |
KF_GAME_PASS | '' | The password used to access the game. Setting this will make the server "private". |
KF_GAME_LENGTH | 1 | The length of the game. * 0 - 4 waves * 1 - 7 waves * 2 - 10 waves |
KF_GAME_MODE | Survival | The gametype to use. * Survival * VersusSurvival * WeeklySurvival * Endless |
KF_PORT | 7777 | The game port (UDP) used to accept incoming clients. This is the port entered in the ingame console's open command. |
KF_QUERY_PORT | KF_PORT + 19238 | The query port used to this server instance. |
KF_MUTATORS | '' | If the mutators are correctly installed on the server they can be used like this: mutator=ClassicScoreboard.ClassicSCMut,KFMutator.KFMutator_MaxPlayersV2 Multiple mutators must be seperated with a , |
KF_SERVER_NAME | KF2 | The server name to display in the server browser. |
KF_ENABLE_WEB | false | A boolean toggle for the web interface hosted on the KF_WEBADMIN_PORT (default 8080) If setting this to true, it's recommended you change the KF_ADMIN_PASS variable too. |
KF_WEBADMIN_PORT | 8080 | The port used to access the web admin interface. |
KF_DISABLE_TAKEOVER | false | Allows the server to be used by other players looking to create a private game when the server is uninhabited. |
KF_BANNER_LINK | http:\/\/art.tripwirecdn.com\/TestItemIcons\/MOTDServer.png | A link to a PNG file to display on the server welcome page. You must escape special characters. |
KF_MOTD | Welcome to our server. \n \n Have fun and good luck! | A MOTD message to show under the banner image on the welcome page. You must escape special characters. |
KF_WEBSITE_LINK | http:\/\/killingfloor2.com | A website link shown at the bottom of the srver welcome page to allow the visitor to go to your site. You must escape special characters. |
MULTIHOME_IP | '' | Sets the IP to run the server on in cases where it has been assigned multiple public IPs. |
NOTE: Special characters are anything that sed considers special, so /, ^, , * etc. To escape the character, prepend \ before it as in the examples provided in the compose files and above.
Update the volume mounts as follows:
Map the following read-only volume from server 1
Map the following read-write volumes
These are only required for Steam Workshop maps (see below)
You must also copy the basic config files from server1
mkdir -p $HOME/kf2-server2/kf2server/KFGame/Config
cp -a $HOME/kf2/kf2server/KFGame/Config/* $HOME/kf2-server2/kf2server/KFGame/Config
Under kf2server, modify the file KFGame/Config/LinuxServer-KFEngine.ini as per Tripwire's wiki
Example shown below is for Biolapse - Biotics Holdout by
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=1258411772
You'll also need to add the maps to LinuxServer-KFGame.ini as described in the wiki here and here.
Examples:
[KFGame.KFGameInfo]
...
GameMapCycles=(Maps=("KF-BurningParis","KF-Biolapse"))
...
[KF-Biolapse KFMapSummary]
MapName=KF-Biolapse
ScreenshotPathName=UI_MapPreview_TEX.UI_MapPreview_Placeholder
docker build -t dwurf/docker-kf2:latest .
docker logs) and config should be done via env variables (i.e. move the config file outside of the volume but it doesn't need to be exposed)Content type
Image
Digest
Size
38.9 MB
Last updated
over 5 years ago
docker pull dwurf/docker-kf2