Установка l4d2 сервера на Debian 12 x64



Для установки серверной части Left 4 Dead 2 будем использовать арендованный vds

  • 2 ядра процессора
  • 2 Гб оперативной памяти
  • 40Гб SSD накопителя

В панели управлением хостинга переустанавливаем сервер.

В панели управлением хостинга переустанавливаем сервер

Заходим в консоль сервера под root и вводим.

  • apt update && apt full-upgrade

apt update apt full-upgrade

Перезагружаем сервер.

  • reboot

Чистим от устаревших пакетов.

  • apt autoremove

Смотрим текущую версию ядра

  • uname -a

Смотрим доступные версии ядер

  • dpkg --list | grep linux-image

dpkg --list | grep linux-image

Удаляем старые версии ядер. Вместо XXXX вписываем старую версию ядра. Пользоваться только для опытных.

  • apt --purge remove linux-image-XXXX

Обновляем конфиг GRUB

  • update-grub

update-grub

Устанавливаем дополнительные пакеты.

  • dpkg --add-architecture i386 && apt update && apt install lib32gcc-s1 lib32stdc++6 lib32z1
  • dpkg --add-architecture amd64 && apt update && apt install screen vsftpd wget

dpkg --add-architecture i386

dpkg --add-architecture amd64

Изменяем редактор по умолчанию на более удобный nano

  • export EDITOR=nano

Устанавливаем часовой пояс Москвы

  • rm /etc/localtime
  • ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Проверяем правила фаервола (все чисто)

  • systemctl status nftables

systemctl status nftables

Блокируем лишние порты (Данные правила обязательно надо будет изменить и они предназначены лишь обеспечить базовую защиту на момент запуска l4d2 сервера)

  • nano /etc/nftables.conf

Блокируем лишние порты (Данные правила обязательно надо будет изменить и они предназначены лишь обеспечить базовую защиту на момент запуска l4d2 сервера)

#!/usr/sbin/nft -f

flush ruleset

table ip filter {
    set ban_list {
        type ipv4_addr
        flags dynamic
        timeout 60s
        size 10000
    }

    chain input {
        type filter hook input priority filter; policy drop;
        ip saddr @ban_list drop

        iif lo accept
        ct state established,related accept
        icmp type echo-request accept

        tcp dport { 23, 25, 53 } add @ban_list { ip saddr } drop
        udp dport 53 add @ban_list { ip saddr } drop

        tcp dport 22 ct state new limit rate 10/minute add @ban_list { ip saddr } drop
        tcp dport 20 accept
        tcp dport 21 accept
        tcp dport 49000-49050 accept

        udp dport 27015-27050 accept
        tcp dport 27015-27050 accept

        udp sport 27000-27030 udp dport 1025-65355 accept
        udp sport 4380 udp dport 1025-65355 accept
    }

    chain forward {
        type filter hook forward priority filter; policy drop;
    }

    chain output {
        type filter hook output priority filter; policy accept;
    }
}

nano /etc/nftables.conf

Проверяем корректность правил. Если команда ничего не вывела — всё заполнено правильно.

  • nft -c -f /etc/nftables.conf

Применяем новые правила:

  • nft -f /etc/nftables.conf

Перезапускам службу (на всякий случай)

  • systemctl restart nftables

Настраивает FTP

Открываем конфигурационный файл ftp и правим примерно так.

  • nano /etc/vsftpd.conf

vsftpd

vsftpd

vsftpd

vsftpd

Делаем рестарт ftp

  • systemctl restart vsftpd

Изменяем ограничения на максимальное число открытых файлов (Рекомендация valve по настройке SteamCMD)

  • nano /etc/security/limits.conf

Вписываем

  • game soft nofile 2048
  • game hard nofile 2048

limits.conf

Установка l4d2 сервера скриптами github.com/TyUser/l4d2_install_hx

Заранее настроем крон (под учетной записью root).

  • crontab -e
*/2 * * * * su - game -c 'python3 /home/game/l4d2_cron.py' > /dev/null 2>&1
30 6 * * * su - game -c 'python3 /home/game/l4d2_restart.py' > /dev/null 2>&1

crontab -e

Создаем пользователя и заходим по учетной записью обычного пользователя.

  • adduser game

adduser game

Выходим с учетной записи root и заходим под учетной записью game

  • exit
  • su - game

su - game

Скачиваем скрипт

  • wget https://www.russerver.com/blog/file/l4d2_install.sh && chmod +x ./l4d2_install.sh

Устанавливаем

  • ./l4d2_install.sh

Необходимо вписать логин и пароль аккаунта Steam через пробел. Рекомендуется создать новый аккаунт для сервера. Пример: steamuser password123

  • nano authorization.txt

После настройки authorization.txt и первом запуске, необходимо ввести ввести код подтверждения SteamCMD Guardian. Данная команда отвечает за запуск, перезапуск и автоматическое обновление сервера l4d2

  • python3 ./l4d2_restart.py

python3 ./l4d2_restart.py

Остановка работы l4d2 сервера

  • python3 ./l4d2_stop.py

Примечание:

  • Во время своей работы создает лог файл l4d2.log
  • cron перезапускает сервер в 6:30 каждый день
  • cron раз в 2 минуты проводит опрос l4d2 сервера и если он завис, то принудительно перезагрузит (файл l4d2_cron.py)
  • После перезагрузки VDS, сервер l4d2 сам запустится от имени пользователя game
  • Данные скрипты работают на python 3
  • За блокировку автоматического запуска отвечает файл l4d2.lock который создается/удаляется автоматически

Ссылки

  • developer.valvesoftware.com/wiki/Ru/SteamCMD
  • developer.valvesoftware.com/wiki/Dedicated_Servers_List
  • www.russerver.com/blog/ustanovka-l4d2-servera-na-debian-10-x64
  • github.com/TyUser/l4d2_install_hx