Свой сервер

Сервер 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.