Создание HLTV-сервера на Linux

Доброго времени суток, друзья! Подумав, решил написать руководство для поднятия собственного сервера HLTV под управлением OS:Linux

Для подготовки статьи специально был куплен виртуальный сервер (OpenVZ: debian-7.0-x86)

  • Первым делом, что нам необходимо сделать это выкачать с помощью SteamCMD актуальный, на сегодняшний день сервер, build 6153. Конечно, можно и более ранних версий, но я предпочитаю свеженькие файлы  Предположим, что у нас сервер раcположен по следующему пути: /home/hlds
  • Вторым делом мы создадим нового пользователя (для запуска HLTV) и нужные нам директории для дальнейшей работы. По умолчанию при создание нового пользователя директория имеет следующий путь: /home/hltv. При добавлении нового пользователя нам запросят ввести пароль, повторить пароль, ввести дополнительные данные (необязательно) и подтвердить корректность информации.

  • root@vds142:~# adduser hltv
    Adding user `hltv' ...
    Adding new group `hltv' (1000) ...
    Adding new user `hltv' (1000) with group `hltv' ...
    Creating home directory `/home/hltv' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Changing the user information for hltv
    Enter the new value, or press ENTER for the default
    Full Name []:
    Room Number []:
    Work Phone []:
    Home Phone []:
    Other []:
    Is the information correct? [Y/n] y

    • Для удобство создадим еще две директории внутри нашего нового пользователя. Это папка cstrike (куда будут записываться будущие demo-записи) и папка valve (куда будут вестись логи, если вам это необходимо)

    root@vds142:~# mkdir /home/hltv/cstrike
    root@vds142:~# mkdir /home/hltv/valve

    • Третьим делом мы скопируем все необходимые файлы из корня сервера hlds в нашу папку hltv. Нам понадобятся следующие файлы: hltv; core.so; proxy.so; filesystem_stdio.so; hltv.cfg(создаем сами).

    root@vds142:~# cp /home/hlds/hltv /home/hltv
    root@vds142:~# cp /home/hlds/core.so /home/hltv
    root@vds142:~# cp /home/hlds/proxy.so /home/hltv
    root@vds142:~# cp /home/hlds/filesystem_stdio.so /home/hltv
    root@vds142:~# cd /home/hltv

    • Четвертым делом мы рекурсивно изменим права доступа файлов/директорий на нового пользователя hltv, так-как мы изначально работали из под root, соответственно файлы "принадлежали" ему.

    root@vds142:/home/hltv# chown -R hltv:hltv /home/hltv/

    • Пятым делом попробуем запустить наш hltv сервер от имени нового пользователя HLTV.

    root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030
    Console initialized.
    FileSystem initialized.
    Error:libsteam_api.so: cannot open shared object file: No such file or directory
    WARNING! System::DispatchCommand: command "connect 37.230.210.77:27015" not registered.
    Type 'help' for a list of commands.
    WARNING! System::RunFrame: system time difference <= 0.
    WARNING! System::RunFrame: system time difference <= 0.

    • К сожалению нам выдало ошибку о том, что отсутствует файл: libsteam_api.so Исправим эту ситуацию.

    root@vds142:/home/hltv# cp /home/hlds/libsteam_api.so /usr/lib/

    • Не будем отчаиваться и снова попробуем запустить сервер.

root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030

Console initialized.
FileSystem initialized.
Network initialized.
Master module initialized.
Server module initialized.
World module initialized.
Demo client initialized.
Couldn't open config file hltv.cfg.
Proxy module initialized.
Type 'help' for a list of commands.
Challenging 37.230.210.77:27015 (1/3).
Get challenge (HASHEDCDKEY)
Connecting to 37.230.210.77:27015 (1/3).
>
BUILD 6153 SERVER (0 CRC)
Server # 1

Added 781 resources.
Received baseline with 68 entities.
qError:/home/hlds/cstrike/dlls/director.so: cannot open shared object file: No such file or directory
Couldn't open config file director.cfg.
Director module initialized.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
dlopen failed trying to load: steamclient.so with error:steamclient.so: cannot open shared object file: No such file or directory

  • Но и тут нас ожидает неудача. Отсутствие двух путей/файлов: director.so и steamclient.so Исправим и это, а так же снова изменим права доступа.

root@vds142:/home/hltv# cp /home/hlds/steamclient.so /usr/lib/
root@vds142:/home/hltv# mkdir /home/hltv/cstrike/dlls
root@vds142:/home/hltv# cp /home/hlds/valve/dlls/director.so /home/hltv/cstrike/dlls
root@vds142:/home/hltv# chown -R hltv:hltv /home/hltv

  • Пробуем еще раз запустить наш HLTV сервер с надеждой.

root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030

Console initialized.
FileSystem initialized.
Network initialized.
Master module initialized.
Server module initialized.
World module initialized.
Demo client initialized.
Executing file hltv.cfg.
Recording initialized.
Proxy module initialized.
Type 'help' for a list of commands.
Challenging 37.230.210.77:27015 (1/3).
Get challenge (HASHEDCDKEY)
Connecting to 37.230.210.77:27015 (1/3).
>
BUILD 6153 SERVER (0 CRC)
Server # 1

Added 781 resources.
Received baseline with 68 entities.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 10
dlopen failed trying to load: /home/hltv/.steam/sdk32/libsteam.so with error: /home/hltv/.steam/sdk32/libsteam.so: cannot open shared object file: No such file or directory

  • Немного злимся, но исправляем ошибку с отсутствием пути/файла: libsteam.so

root@vds142:/home/hltv# mkdir /home/hltv/.steam/
root@vds142:/home/hltv# mkdir /home/hltv/.steam/sdk32
root@vds142:/home/hltv# cp /home/hlds/libsteam.so /home/hltv/.steam/sdk32
root@vds142:/home/hltv# chown -R hltv:hltv /home/hltv

  • Если не запустится убиваем виртуальный сервер к чертям...

root@vds142:/home/hltv# sudo -u hltv ./hltv +connect 37.230.210.77:27015 -port 27030

Console initialized.
FileSystem initialized.
Network initialized.
Master module initialized.
Server module initialized.
World module initialized.
Demo client initialized.
Executing file hltv.cfg.
Recording initialized.
Proxy module initialized.
Type 'help' for a list of commands.
Challenging 37.230.210.77:27015 (1/3).
Get challenge (HASHEDCDKEY)
Connecting to 37.230.210.77:27015 (1/3).
>
BUILD 6153 SERVER (0 CRC)
Server # 1

Added 781 resources.
Received baseline with 68 entities.
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
Setting breakpad minidump AppID = 10
Start recording to clc-1605032107-de_dust2.dem.

О, чудо =DD Сервер успешно запустился и demo-запись началась. ) Всем спасибо за внимание.



  1. Запустить HLTV сервер можно по-разному, напишем для HLTV следующий скрипт:

    Назовём hltv_start.sh

    Код
    #!/bin/sh

    LD_LIBRARY_PATH=/home/servers/cs_27015/; export LD_LIBRARY_PATH
    ./hltv +connect strike64.ru:27015 -port 27020 +maxclients 20 +exec hltv.cfg

    Рассмотрим более детально
    • /home/servers/cs_27015/
      • Главная директория вашего сервера
    • connect
      • Присоединяем демку к вашему серверу, например +connect strike64.ru:27015
    • port
      • Порт HLTV сервера, по которому игроки смогут присоединиться для просмотра трансляции
    • maxclients
      • Количество слотов для просмотра трансляции. Максимально - 255
    • exec hltv.cfg
      • Подгружаем конфиг нашего HLTV сервера

    Сохраняем hltv_start.sh в директории вашего сервера, на примере это ./home/servers/cs_27015/ и даем ему права на выполнение:

    Код
    chmod +x hltv_start.sh

    Переходим в директорию с нашим сервером это ./home/servers/cs_27015/ и запускаем наш HLTV сервер с помощью скрипта, в фоновом режиме через screen

    Код
    screen -d -m -S hltv ./hltv_start.sh

    Для того чтобы войти в фоновый режим пишите

    Код
    screen -r hltv
16:09
39
RSS
Нет комментариев. Ваш будет первым!
Загрузка...