Alexell.Ru
Официальный сайт Alexell
Установка сервера Counter-Strike: Source с нуля на Linux (Ubuntu)
Добрый день, дорогие читатели и гости, которым интересна эта тематика.
Как известно, для работы игрового сервера меньше ресурсов (а значит и меньше затрат) нужно именно на ОС семейства Linux. Установка сервера Counter-Strike: Source на Linux с нуля в целом не сложная, но если вы не разбираетесь в Линуксе, тогда лучше все делать по пошаговой инструкции. В интернете можно найти информацию по установке сервера с нуля на Linux, но достаточно грамотных статей я встречал всего парочку. Недавно мы с друзьями запустили свой сервер для CS: Source, поэтому я решил свежим взглядом описать и показать весь процесс, а также обратить внимание на возможные проблемы и пути их решения.
Сразу оговорюсь, что речь идет об установке официального Steam сервера, потому что я не одобряю пиратство (по крайней мере с играми) и вам не советую. На момент написания статьи, цена на Counter-Strike: Source в Steam — всего 435р.
Для запуска сервера Counter-Strike: Source на Linux нам подойдет компьютер или VDS (виртуализация KVM) на любой ОС семейства Linux, имеющий минимум 1 ядро, 1 Гб ОЗУ и свободные 3 Гб места на диске под сам сервер. Если вы собираетесь запускать сервер дома, то вам понадобится внешний IP адрес или придется настраивать no-ip. Недорогие VDS с DDoS защитой вы можете посмотреть здесь. В этой статье мы будем удаленно устанавливать сервер на Ubuntu 14.04.5 LTS.
Если у вас под рукой компьютер на ОС Linux, то вам понадобится консоль и менеджер файлов, а если подключаться будем удаленно, то нам понадобятся shell-клиент PuTTY и FTP-клиент FileZilla (или любой другой, удобный вам).
Подготовка к установке сервера
1. Если у вас 64-битная система, то в первую очередь нужно установить библиотеки для запуска 32-битных приложений, потому что сервер игры как раз 32-битный. Сделать это можно одной командой:
2. Запускать сервер в целях безопасности рекомендуется от имени отдельного пользователя, поэтому давайте создадим нового пользователя. В моем примере это будет test.
После выполнения этой команды, вам нужно будет указать пароль для создаваемого пользователя, а также дополнительные данные. Вы можете пропустить ввод доп. данных, просто нажимая Enter. В конце, вам нужно будет подтвердить ввод данных, отправив Y.
Установка сервера
1. Заходим под именем созданного пользователя:
Вводим его пароль, а после отправляем команду cd, чтобы перейти в домашний каталог пользователя. Вы можете отправить команду ls и в ответ ничего не придет, потому что в домашнем каталоге нового пользователя пусто, там есть только системные файлы.
2. Теперь нам нужно создать папку для установки SteamCMD и перейти в нее. Для этого по очереди набираем команды:
Если все прошло успешно, вы увидите
3. Скачиваем архив SteamCMD:
Скачаться он должен быстро, потому что его размер небольшой. Затем сразу распаковываем его:
После распаковки, у вас появятся файлы и папки:
linux32/
linux32/libstdc++.so.6
linux32/steamcmd
steamcmd.sh
steam.sh
Значит все хорошо и можно удалить скачанный архив:
4. Запускаем командную оболочку Steam:
Дожидаемся загрузки обновлений, после чего должна появиться консоль SteamCMD, вы поймете это по заголовку Steam>
5. Получаем гостевой доступ к сервису скачивания серверов:
Должно появиться 2 строчки, в конце обеих должно быть OK.
Теперь указываем, в какую папку будем скачивать сервер (папка будет создана автоматически). Сервер для CS: Source можно установить в папку css, но вы можете назвать ее по своему.
Директория css будет создана в домашнем каталоге, рядом с папкой steamcmd.
6. Запускаем загрузку сервера игры, указывая специальный стимовский app_id. Для CS: Source это 232330.
Начнется загрузка, которая будет выдавать Update state в процентах. Размер загружаемых данных примерно 2.30 Гб, поэтому придется подождать несколько минут до окончания загрузки.
Примечание : Если вдруг загрузка прервется и у вас будет написано «Error! App ‘232330’ state is 0x402 after update job.» или похожая ошибка, то просто снова отправьте команду app_update 232330 validate и процесс продолжится с того места, где прервался.
После успешной загрузки, вы увидите следующее:
7. Выходим из SteamCMD нажатием сочетания клавиш Ctrl+C или отправив команду quit.
Затем переходим в папку загруженного сервера.
Поскольку сервер фактически установлен, мы можем попробовать сделать тестовый запуск.
У вас перед глазами пробежит много строк и в конце должно быть VAC secure mode is activated. Однако, как мы видим на скриншоте, в процессе загрузки сервера возникли некоторые ошибки. Иногда он запускается при их наличии, а иногда может выдать FATAL ERROR.
Если при запуске вы видите ошибку . /.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory, то не пугайтесь, она легко поправима:
Эта команда создаст символьную ссылку с директории sdk32 на директорию linux32 и при следующем запуске, таких ошибок вы уже не увидите:
Первичная настройка сервера
Теперь давайте перейдем к визуальной работе с файлами, поскольку это удобнее, чем в консоли. Для этого подключаемся по FTP к нашему серверу (в случае удаленной работы).
1. Заходим в папку /css/cstrike/cfg/
В этой папке должен находиться главный файл конфигурации сервера — server.cfg. Вы можете создать этот файл, найти его описание и параметры в интернете, затем загрузить готовый файл в указанную папку по FTP. Но я рекомендую воспользоваться лучшим подробным конфигом, который я нашел и подкорректировал — в нем все настройки описаны на русском языке и вам не составит труда изменить все под ваши нужды. Скачайте его (ПКМ->Сохранить как), затем откройте в любом текстовом редакторе, измените название сервера и другие необходимые настройки под себя, затем загрузите в папку css/cstrike/cfg на вашем сервере.
СКАЧАТЬ (19,4 KiB, 932 скачиваний)
2. В этой же папке вы увидите и другие файлы конфигурации. Обратите внимание на файлы motd_default.txt , motd_text_default.txt и mapcycle_default.txt. Эти файлы вы можете скачать, изменить под себя и загрузить на сервер, убрав суффикс default.
- motd.txt — файл используется для отображения информации в окне приветствия при подключении к серверу. Можно использовать HTML, картинки и даже музыку.
- motd_text.txt — простой текстовый вариант приветствия, если не используется motd.txt
- mapcycle.txt — файл со списком карт, смена карт происходит по списку из него. В него вы будете добавлять и новые карты, если будете загружать их на сервер.
3. При запуске сервера мы в логах видели надпись «anonymous game server account«. Для полноценной работы сервера и проверки игроков по STEAM_ID, нам нужно привязать сервер к Steam. Для этого переходим на эту страницу Steam, авторизуемся в своем аккаунте, внизу страницы вводим номер приложения : 240 и нажимаем кнопку Создать. Полученный идентификатор копируем и сохраняем где-нибудь, он нам скоро понадобится.
4. Чтобы сервер было проще запускать, мы можем создать специальный файл для запуска, в котором будет прописана команда запуска сервера с необходимыми параметрами. Позже, вы сможете добавить этот файл в автозагрузку (Cron) и сервер игры будет запускаться автоматически при перезапуске самого сервера Linux.
ramer
Делай добро и бросай его в воду
(убей всех людей)
Counter-Strike: Source сервер на Linux
поднимаем выделенный игровой сервер CS:S на линуксе
статью пишу для себя (в первую очередь), для друзей, которые интересуются, и для сочувствующих it-шников.
1. установка.
2. настройка.
3. безопасность.
4. моды.
5. возможные траблшуты.
1. установка.
1.1. создаём директорию для игры и заходим в неё:
# mkdir hlds
# cd hlds
1.2. скачиваем с официального сервера Steam бинарник для установки игры (
1.3. даём скачанному файлу hldsupdatetool.bin права на запуск и запускаем его:
# chmod +x hldsupdatetool.bin
# ./hldsupdatetool.bin
1.4. соглашаемся в вывалившимся лицензионным соглашением:
yes
1.5. появилось два файла: steam и readme.txt. файлу steam даём права на запуск и запускаем его на обновление:
# chmod +x steam
# ./steam -command update
1.6. после обновления steam (несколько минут) мы начинаем закачивать файлы дистрибутива CS:Source (
1.01 Gb). это уже на долго:
# ./steam -command update -game «Counter-Strike Source» -dir .
2. настройка.
2.1. в файле server.cfg содержатся все настройки по работе сервера. по-умолчанию этот файл отсутствует. можно написать самому ручками или воспользоваться виндовой утилитой SRCDS CFG Creator.
если ручками, то примерно так:
# nano -w /hlds/cstrike/cfg/server.cfg
содержимое файла server.cfg:
// server name
hostname «название сервера»
// rcon passsword
rcon_password «пароль»
sv_rcon_maxfailures 10
sv_rcon_minfailures 5
sv_rcon_minfailuretime 30
mp_friendlyfire 0
mp_footsteps 1
mp_autoteambalance 1
mp_autokick 0
mp_flashlight 1
mp_tkpunish 1
mp_forcecamera 0
sv_alltalk 0
sv_pausable 1
sv_consistency 1
sv_cheats 0
sv_allowupload 1
sv_allowdownload 1
sv_maxspeed 320
mp_limitteams 2
mp_hostagepenalty 5
sv_voiceenable 1
mp_allowspectators 1
mp_timelimit 15
mp_chattime 2
sv_timeout 65
// round specific cvars
mp_freezetime 6
mp_roundtime 5
mp_startmoney 800
mp_c4timer 45
mp_fraglimit 0
mp_maxrounds 0
mp_winlimit 0
mp_playerid 0
mp_spawnprotectiontime 5
// bandwidth rates/settings
sv_minrate 0
sv_maxrate 0
decalfrequency 10
sv_maxupdaterate 60
sv_minupdaterate 10
log on
sv_logbans 0
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
sv_lan 0
sv_region 3
sv_contact ramer@jabber.ru
bot_quota 6
bot_quota_mode normal
bot_difficulty 1
bot_chatter normal
bot_auto_follow 1
bot_auto_vacate 1
bot_join_after_player 1
bot_defer_to_human 0
bot_allow_rogues 0
bot_walk 0
bot_join_team any
bot_eco_limit 2000
bot_all_weapons
bot_allow_grenades 1
bot_allow_pistols 1
bot_allow_sub_machine_guns 1
bot_allow_shotguns 1
bot_allow_rifles 1
bot_allow_snipers 1
bot_allow_machine_guns 1
// execute ban files
exec banned_user.cfg
exec banned_ip.cfg
2.2. создадим скрипт для более удобного запуска сервера игры:
# nano -w cs-s.sh
содержимое скрипта:
#!/bin/bash
cd /hlds
./srcds_run -autoupdate -game cstrike +maxplayers 16 +map de_dust
3. безопасность.
для предотвращения проникновения на сервер посторонних лиц, запускать игру будем не от рута, а от обычного пользователя с максимально ограниченными правами.
3.1. создадим пользователя и назначим пароль на вход в систему:
# useradd css1
# passwd css1
3.2. теперь создадим на «нейтральной территории» папку для скрипта на запуск нашего боевого игрового сервера, например в папке /home.
# cd /home
# mkdir games
# cd games
# mkdir cs-s
3.3. скопируем скрипт на запуск игры в нашу «безопасную» папку:
# cp /hlds/cs-s.sh /home/games/cs-s/cs-s.sh
3.4. дадим права на запуск скрипта:
# cd /home/games/cs-s
# chmod +x cs-s.sh
3.4. теперь отредактируем файл с правами /etc/sudoers, чтобы пользователь css1 ничего, кроме игрового сервера, запускать не мог. лучше всего для этого использовать visudo:
# visudo
содержимое файла sudoers
User_Alias STANDART_USERS = css1
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the man page for details on how to write a sudoers file.
#
Cmnd_Alias MUSTBE = /home/games/cs-s/cs-s.sh
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
STANDART_USERS ALL = MUSTBE
# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
3.5. попробуем запустить игровой сервер от имени пользователя css1:
# login css1
$ cd /home/games/cs-s
$ sudo ./cs-s.sh
если всё гуд, то вы увидите лог загружающегося сервера.
3.6. в консоли запущенного сервера можно использовать команды:
version — версия сервера
stats — статистика игры (фпс, юзеры, аптайм. )
status — информация о сервере (ip, порт, хостнэйм, карта. )
exit — выход (рестарт сервера)
killserver — выключение сервера
4. metamod, sourcemod, моды, плагины
чтобы разнообразить игру, сделать её интересней и необычней, а также добавить админку (раз уж сервер ваш, то надо и быть на нём главным со всеми правами), надо ставить моды и плагины.
для начала необходимо поставить metamod. он позволяет запускать несколько модификаций для сервера, в том числе и sourcemod.
sourcemode, главным образом, предназначен для облегчения жизни админам сервера. это удобный, простой, и, вместе с тем, мощный инструмент. всем известная плюшка с наказаниями тимкиллеров всеми возможными способами, включая поджигание или превращение в ходячую бомбу, есть плагин к сурсмоду. конечно, только этим дело не ограничивается, в вашем распоряжении просто уйма стандартных команд и действий. более удобный кик, бан (чем встроенные, в которых вам нужно либо полностью указать ник игрока, либо его ID). вы также можете управлять правами доступа к серверу как различных игроков, так и целых кланов, объединенных одним тегом. создание плагинов является не очень сложной задачей, можно использовать как встроенный скриптовый язык, так и С++.
4.1. ставим sourcemod. на момент написания поста версия была 1.2.4 (скачать). также вам понадобится скачать MetaMod. все эти разработки являются Open-Source и выпускаются под GPL.
4.2. настраиваем для работы. для начала надо настроить MetaMod. распаковывайте архив в папку с сервером, каталог /cstrike.
например, у меня это /opt/server/cs-s/cstrike.
должна появиться папка addons. в неё мы должны поместить файл metamod.vdf, сгенерированный на этой странице.
проделав данные манипуляции, запустим сервер и введем команду meta version, чтобы убедиться, что все сделано правильно.
если всё правильно сделали, вы увидите примерно это:
] meta version
Metamod:Source version 1.7.1
Build ID: 644:f526469efdeb
Loaded As: Valve Server Plugin
Compiled on: Feb 25 2009
Plugin interface version: 10:7
SourceHook version: 4:3
http://www.metamodsource.net/
теперь переходим непосредственно к SourceMod’y. распаковываем в ту же папку, перезапускаем сервер, пишем команду sm version.
если всё правильно сделали, вы увидите примерно это:
] sm version
SourceMod Version Information:
SourceMod Version: 1.2.1
SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.2.1)
SourcePawn API: v1 = 4, v2 = 3
Compiled on: May 30 2009 23:59:05
Build ID: 2708:69195a250d70
http://www.sourcemod.net/
4.3. окончательная настройка.
сервер работает, метамод подключен, сурсмод тоже, осталось самое главное — настроить всё это добро под себя и свой сервер.
4.3.1. добавляем админа.
cервером должен кто-то управлять, верно? базовое средство для этого (через rcon) не очень удобно. SourceMod предоставляет следующую схему администрирования и выдачи прав игрокам: вы можете связать определенный набор прав на всевозможные стандартные действия либо с ником игрока (тогда ему придется завести пароль), либо с IP-адресом машины, либо со SteamID нужного нам человека.
для этого необходимо подредактировать файл admins_simple.ini по адресу /cstrike/addons/sourcemod/configs.
на мой взгляд, самым удобным и надёжным является привязка к SteamID (стимайди — ваш уникальный идентификатор в системе стим, узнать его можно открыв в игре консоль и выполнив команду status; это запись вида STEAM_0:1:1234567).
в этот файл (admins_simple.ini) каждый администратор задается отдельной строчкой.
добавьте себя:
# nano -w admins_simple.ini
«ВАШ_SteamID» «99:z»
здесь первое поле — ваш идентификатор (стимайди, айпи, ник), второе поле — уровень иммунитета и права. данная запись означает, что вы обладаете всеми правами (флаг z) и ваш иммунитет = 99. иммунитет — число, эдакая система иерархии между админами. люди с меньшим иммунитетом, чем у вас, не смогут с вами ничего сделать.
примеры строк:
«STEAM_0:1:16» «bce» // основные права, кик, разбан, иммунитета нет
«!127.0.0.1» «5:z» // полный доступ по ip, иммунитет = 5
«BAILOPAN» «abc» «Gab3n» // ник BAILOPAN, пароль»Gab3n»: резервация слота, базовые команды + кик
все возможные флаги доступа:
Описание Флаг Назначение (право на. )
reservation. a. Доступ к резервным слотам.
generic. b. Базовый уровень доступа; обязателен для админов.
kick. c. Кик игроков (выброс с сервера).
ban. d. Бан игроков (запрещение доступа к серверу)
unban. e. Снятие банов.
slay. f. Убить или ранить игроков.
changemap. g. Смена карты
cvar. h. Изменение серверных переменных.
config. i. Выполнять произвольные конфиги на сервере.
chat. j. Доп. действия с чатом.
vote. k. Устраивать голосования и управлять ими.
password. l. Установка пароля на сервер.
rcon. m. Использование команд rcon.
cheats. n. Менять значение sv_cheats и выполнять другие читерские команды.
root. z. Включает все флаги, перечисленные выше ( = полный доступ).
4.3.2. возможности sm.
резервация слотов
достаточно удобная вещь, благодаря которой на сервере всегда (ну, или почти всегда) найдется место для админа. суть заключается в следующем: задаются несколько запасных, иначе говоря, резервных слотов, которые при заполнении сервера останутся свободными, доступными для админов.
хранятся эти настройки в sourcemod.cfg в cstrike/cfg/sourcemod.
настройки резервации слотов:
sm_reserve_type 0|1|2
0: резервные слоты могут быть заняты только админами и только после заполнения всех свободных слотов. игрок в резервном слоте не может быть автоматически кикнут. при заполнении запасных мест сервер становится полным и для админов, и они тоже не могут приконнектиться. таким образом, на сервер всегда может зайти по крайней мере 1 админ.
1: если кто-то с доступом к резервным слотом пытается зайти на сервер и при этом все свободные слоты заполнены, то кикается игрок либо с самым высоким пингом, либо с самым долгим временем игры, либо случайно. таким образом, резервные слоты практически всегда пустуют, за исключением ситуации, при который сервер забит админами. используйте, если хотите, чтобы определенные люди всегда могли зайти на сервер.
2: аналогично 1, но с ограничением числа админов. как только оно достигнуто, сервер перестает кикать игроков для освобождения слотов и присоединиться к игре может любой.
sm_reserve_slots # количество зарезервированных слотов.
sm_hide_slots 0|1 скрывать или нет резервные слоты в окне поиска серверов. при установленной в 1 опции сервер на 24 человека, из которых 2 места зарезервированы в браузере будет показано, что сервер рассчитан на 22 человека.
sm_reserve_maxadmins # Максимальное число админов на сервере при sm_reserve_type = 2
sm_reserve_kicktype 0|1|2
0: кикается игрок с самым высоким пингом
1: дольше всего находящийся на сервере
2: случайным образом
меню админов
каждый администратор может вызвать в игре меню, облегчающее ему жизнь и освобождающее от написания команд в консоли. забиндите на какую-либо клавишу (я предпочитаю «=») команду sm_admin и пользуйтесь этим. все (ну, или почти все) доступные вам действия будут отображены в этом меню.