Сервер KF2 на Ubuntu: SteamCMD, WebAdmin и systemd
Страница основана на китайском руководстве из Steam (здесь в переводе) по установке выделенного сервера Killing Floor 2 на Ubuntu. Автор выбирает Ubuntu, потому что она близка к SteamOS (обе происходят от Debian) и SteamCMD ставится через apt, а не распаковкой бинарников вручную. Другие способы: выделенный сервер KF2 через SteamCMD и Docker на VPS.
Установка SteamCMD
Создайте отдельного пользователя и поставьте SteamCMD:
sudo useradd -m -s /bin/bash steam
sudo add-apt-repository multiverse -y
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt-get remove needrestart -y
echo steam steam/license note '' | sudo debconf-set-selections
echo steam steam/question select "I AGREE" | sudo debconf-set-selections
sudo apt install steamcmd -y
Для других дистрибутивов смотрите вики SteamCMD.
Установка файлов сервера
sudo -u steam /usr/games/steamcmd +login anonymous +app_update 232130 +quit
Создание конфигов по умолчанию
Запустите сервер один раз, чтобы он записал стандартную конфигурацию:
sudo -u steam /home/steam/.local/share/Steam/steamapps/common/kf2server/Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-bioticslab
Быстрая настройка (только WebAdmin)
Тем, кто плохо знает Linux, проще всего включить веб-консоль и менять всё остальное в ней. Нужные файлы лежат в .../kf2server/KFGame/Config/.
- В
KFWeb.ini, секция[IpDrv.WebServer], поставьтеbEnabled=true. Для безопасности можно сменитьListenPortс 8080. Одной командой:sed -i "s/bEnabled=false/bEnabled=true/" .../KFWeb.ini - В
LinuxServer-KFGame.ini, секция[Engine.AccessControl], задайтеAdminPassword=(он нужен и для WebAdmin, и для входа админа в игре).GamePassword=- необязательный пароль на комнату. - Отключите takeover в
LinuxServer-KFEngine.ini:sed -i "s/bUsedForTakeover=TRUE/bUsedForTakeover=FALSE/" .../LinuxServer-KFEngine.ini
Порты
В облаке эти порты нужно открыть в группе безопасности или файрволе.
| Порт | Протокол | Назначение |
|---|---|---|
| Game Port | UDP | Обязателен. Основной игровой порт |
| Query Port | UDP | Необязателен. Определяет, виден ли сервер в публичном списке |
| Steam Port | UDP | Необязателен. Связь со Steam, в основном загрузка Workshop |
| NTP Port | UDP | Необязателен. Только для режима Weekly: синхронизация времени с официальными серверами, чтобы работали еженедельные задания |
| Web Admin | TCP | Необязателен. WebAdmin, по умолчанию 8080 |
Пример правил группы безопасности (автор использует Alibaba Cloud).
После этого откройте http://<адрес-сервера>:<ListenPort>, войдите как Admin с паролем администратора и настройте остальные параметры.
Консоль WebAdmin после входа.
Установка модов сообщества
Пример: мод отображения урона (ID Workshop 2625647922) и мод изменения максимума игроков (ID 2143104493). Запишите ID подписки, убедитесь, что сервер остановлен, и отредактируйте LinuxServer-KFEngine.ini:
[IpDrv.TcpNetDriver]
; добавьте строку выше всех существующих DownloadManagers=
DownloadManagers=OnlineSubsystemSteamworks.SteamWorkshopDownload
[OnlineSubsystemSteamworks.KFWorkshopSteamworks]
ServerSubscribedWorkshopItems=2625647922
ServerSubscribedWorkshopItems=2143104493
Перезапустите сервер и дождитесь загрузки. Признак успеха - папки с ID Workshop в каталоге KFGame\Cache.
Управление сервером
По умолчанию сервер работает на переднем плане и останавливается, как только вы покидаете сессию. Есть три варианта: запуск в фоне через nohup <команда> &, screen или tmux, либо служба systemd (автор настоятельно рекомендует именно её).
cat <<EOF > /usr/lib/systemd/system/killingfloor2-server.service
[Unit]
Description=killingfloor2-server.service
After=network.target
[Service]
User=steam
Restart=on-failure
RestartSec=30s
ExecStart=/home/steam/.local/share/Steam/steamapps/common/kf2server/Binaries/Win64/KFGameSteamServer.bin.x86_64 kf-bioticslab
[Install]
WantedBy=multi-user.target
EOF
| Команда | Назначение |
|---|---|
systemctl start killingfloor2-server | Запустить сервер |
systemctl status killingfloor2-server | Показать состояние |
systemctl stop killingfloor2-server | Остановить сервер |
systemctl restart killingfloor2-server | Перезапустить сервер |
Чтобы сервер стартовал при загрузке системы: systemctl enable killingfloor2-server --now.
Служба под управлением systemd.
Скрипт установки одним запуском
В конце руководства приведён bash-скрипт, который выполняет все шаги выше: создаёт пользователя steam, если его нет, добавляет репозиторий multiverse и архитектуру i386, ставит SteamCMD, скачивает приложение 232130 в /home/steam/kf2server, один раз запускает сервер для генерации конфигов, пишет unit-файл systemd, включает веб-консоль, задаёт пароль администратора через sed, отключает takeover и в конце включает и запускает службу. Он выводит сообщение об успехе или указывает на /tmp/killingfloor2_install.log. Перед использованием смените пароль администратора в скрипте и не забудьте открыть порты в группе безопасности.
Вопросы и ответы
- Какой ID приложения у выделенного сервера KF2?
- 232130. Ставится через steamcmd: +login anonymous +app_update 232130.
- Какие порты нужны серверу KF2?
- Обязателен игровой порт (UDP). Необязательные: порт запросов (UDP) для публичного списка, порт Steam (UDP) для загрузки Workshop, порт NTP (UDP) для синхронизации времени в режиме Weekly и порт WebAdmin (TCP, по умолчанию 8080).
- Как оставить сервер работать после выхода из сессии?
- Зарегистрировать его как службу systemd либо запустить через nohup или screen/tmux. Автор советует systemd.