Сервер KF2 в Docker: SteamCMD и настройка compose.yml
Перевод короткого китайского гайда по запуску выделенного сервера Killing Floor 2 на Linux через Docker. Дополняет общий гайд по выделенному серверу и руководство по Docker и VPS с картами из мастерской.
1. Установите Docker
Если Docker нет, установите его по официальной документации (docs.docker.com/engine/install).
2. Подготовьте каталог и SteamCMD
Перейдите в папку, где будет сервер, например:
cd /data
mkdir kf2
cd kf2
Инициализируйте SteamCMD из образа cm2network/steamcmd:
docker create --name steamcmd cm2network/steamcmd
mkdir steamcmd
docker cp steamcmd:/home/steam/steamcmd/. ./steamcmd
docker rm steamcmd
chown -R 1000:1000 steamcmd/
3. Скачайте сервер
docker run --rm -it -v ./steamcmd:/home/steam/steamcmd cm2network/steamcmd ./steamcmd.sh +force_install_dir ./KF2Server +login anonymous +app_update 232130 validate +exit
4. Создайте compose.yml
services:
kf2-server:
image: cm2network/steamcmd:latest
restart: unless-stopped
network_mode: bridge
ports:
- 7777:7777/udp
- 27015:27015/udp
- 8080:8080/tcp
volumes:
- ./steamcmd:/home/steam/steamcmd
extra_hosts:
- time.google.com:169.254.0.79
logging:
driver: json-file
options:
max-size: 3m
command: >-
/home/steam/steamcmd/KF2Server/Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-bioticslab
Последняя строка запускает сервер на карте Biotics Lab. Дополнительная запись хоста time.google.com - часть исходной настройки.
5. Дополнительная конфигурация
Включение веб-интерфейса. В KFGame/Config/KFWeb.ini в разделе [IpDrv.WebServer] поставьте bEnabled=true.
Подписки мастерской. В KFGame/Config/LinuxServer-KFEngine.ini в разделе [OnlineSubsystemSteamworks.KFWorkshopSteamworks] добавьте ServerSubscribedWorkshopItems=<id> (в гайде в качестве примера мультиплеерного мода указан 675314991). Моды для мультиплеера нужно вручную переложить в папку BrewedPC.
Настройки сервера. В KFGame/Config/LinuxServer-KFGame.ini:
[Engine.AccessControl]:AdminPasswordиGamePassword.[KFGame.KFGameInfo]:BannerLink,ServerMOTD,WebsiteLink,ClanMotto.[Engine.GameReplicationInfo]:ServerNameиShortName.
Имена не на латинице нужно сохранять в UTF-16 LE с BOM, иначе будут «кракозябры». Игра сбрасывает файл к значениям по умолчанию при закрытии сервера, поэтому сделайте его только для чтения.
Отключите перехват. Иначе даже сервер с паролем могут перехватить через автоподбор. В LinuxServer-KFEngine.ini в разделе [Engine.GameEngine] поставьте bUsedForTakeover=FALSE.
Больше параметров смотрите на официальной вики по выделенному серверу Killing Floor 2.
6. Запуск
docker compose up -d Вопросы и ответы
- Какой app ID у выделенного сервера KF2?
- 232130, скачивается анонимно через SteamCMD.
- Какие порты открывает compose-файл?
- 7777/udp (игра), 27015/udp (запросы) и 8080/tcp (WebAdmin).
- Как не дать посторонним перехватить сервер с паролем?
- В LinuxServer-KFEngine.ini в разделе [Engine.GameEngine] поставьте bUsedForTakeover=FALSE.