Введение
В данной статье рассмотрим установку и настройку игрового сервера CSGO в ОС Linux.
Требования
- x86 / x64 совместимое оборудование
- Ubuntu 16.04 LTS
- Установленный
steamcmd - сервер CX23 или мощнее
Шаг 1 - Подготовка
Создайте папку для CSGO сервера, все файлы сервера будут находиться здесь:
mkdir /opt/csgo/
chown steamcmd:steamcmd /opt/csgo/Все команды должны выполняться от пользователяsteamcmd.
su --shell /bin/bash steamcmdШаг 2 - Установка
Скачайте файлы сервера через steamcmd:
steamcmd +login anonymous +force_install_dir /opt/csgo/ +app_update 740 +quitКак только загрузка закончится, можем приступать к настройке.
Файл конфигурации сервера CSGO расположен по следующему пути /opt/csgo/csgo/cfg/server.cfg. Вы можете его отредактировать и вставить нижеследующий пример.
// ************************************************************************** //
// Counter-Strike: Global Offensive - server.cfg //
// Version 240917 //
// ************************************************************************** //
// .................................. Basic ................................. //
// Hostname - Name of the server.
hostname "SERVERNAME"
// RCON - remote console password.
rcon_password "ADMINPASSWORD"
// Server password - for private servers.
sv_password ""
// Email - Server admin email.
// Example: sv_contact "email@example.com"
sv_contact ""
// LAN mode - If set the server will not show on the internet.
// Default: sv_lan 0
sv_lan 0
// ............................. Server Logging ............................. //
// Enable log - Enables logging to file, console, and udp < on | off >.
// Recommended: log on
log on
// Log bans - Log server bans in the server logs.
// Default: sv_logbans 1
// Recommended: sv_logbans 1
sv_logbans 1
// Log echo - Display log information to the server console.
// Default: sv_logecho 1
// Recommended: sv_logecho 1
sv_logecho 1
// Log file - Log server information in the log file.
// Default: sv_logfile 1
// Recommended: sv_logfile 1
sv_logfile 1
// One file log - Log server information to only one file.
// Default: sv_log_onefile 0
// Recommended: sv_log_onefile 0
sv_log_onefile 0
// Server Hibernation
sv_hibernate_when_empty 1
sv_hibernate_ms 5
// ............................. Server Query ............................. //
// More info at: https://www.gametracker.com/games/csgo/forum.php?thread=91691
host_name_store 1
host_info_show 1
host_players_show 2
// ................................ Ban List ................................ //
// User ban - Server banlist based on user steam ID.
// Recommended: exec banned_user.cfg
exec banned_user.cfg
// IP ban - Server banlist based on user IP.
// Recommended: exec banned_ip.cfg
exec banned_ip.cfg
// Write ID - Writes a list of permanently-banned user IDs to banned_user.cfg.
writeid
// Write IP - Save the ban list to banned_ip.cfg.
writeipШаг 3 - Администрирование сервера
Для управления сервера (запуск, останов, обновление) необходим нижеследующий скрипт.
Многие настройки могут применяться без изменений, необходимо изменить только параметр GAMETOKEN. Действующий токен сервера должен быть сдан на хранение. Токены сервера могут быть запрошены здесь:
Steam Game Server Account Management
(На слабых серверах, параметр TICK следует уменьшить до 64)
#!/bin/bash
################# SET VARs #################
DIR="/opt/csgo"
SCREENNAME="csgo"
GAMETOKEN=""
TICK=128
GAMETYPE=0
GAMEMODE=1
MAPGROUP="mg_bomb"
MAP="de_dust2"
MAXPLAYER=10
################# DO NOT MODIFY #################
DEAMON="srcds_run"
PARAMS="-game csgo -ip 0.0.0.0 -port 27015 +maxplayers $MAXPLAYER +map $MAP -tickrate $TICK +game_type $GAMETYPE +game_mode $GAMEMODE +mapgroup $MAPGROUP +sv_setsteamaccount $GAMETOKEN"
function start_server {
if [[ `screen -ls | grep $SCREENNAME` ]]; then
echo "The server is already running $SCREENNAME"
else
echo "Starte $SCREENNAME"
if [ -d $DIR ]; then
cd $DIR
screen -d -m -S $SCREENNAME ./$DEAMON $PARAMS
else
echo "The server directory was not specified"
fi
fi
}
function stop_server {
if [[ `screen -ls | grep $SCREENNAME` ]]; then
echo -n "Stoppe $SCREENNAME"
kill `screen -ls | grep $SCREENNAME | awk -F . '{print $1}'| awk '{print $1}'`
echo " ... done."
else
echo "Could not find the screen $SCREENNAME"
fi
}
function update_server {
stop_server
steamcmd +login anonymous +force_install_dir $DIR +app_update 740 +quit
start_server
}
case "$1" in
start)
start_server
;;
stop)
stop_server
;;
restart)
stop_server
start_server
;;
update)
update_server
;;
*)
echo "Usage: $0 (start / stop / update)"
esac
exit 0Скрипт можно разместить по следующему пути /opt/steamcmd/csgo.sh.
После этого должны быть выданы разрешения на запуск скрипта:
chmod +x /opt/steamcmd/csgo.shТеперь необходимо создать сервис в systemd.
Создаем запись со следующим содержимым: /etc/systemd/system/csgo.service:
[Unit]
Description=Counter-Strike: Global Offensive Server (SRCDS)
After=local-fs.target network.target
[Service]
User=steamcmd
Group=steamcmd
ExecStart=/opt/steamcmd/csgo.sh start
ExecStop=/opt/steamcmd/csgo.sh stop
Type=forking
[Install]
WantedBy=multi-user.targetАктивируем запись, которую мы только что создали, командой systemctl daemon-reload. Теперь сервер CSGO можно запускать и останавливать командами systemctl start csgo и systemctl stop csgo.
Для автоматического обновления сервера требуется добавить следующую запись через crontab -e:
0 4 * * * systemctl stop csgo && su --shell /bin/bash steamcmd -c "/opt/steamcmd/csgo.sh update" && systemctl start csgo >/dev/null 2>&1Команда будет запускаться каждый день в 04:00.
Поиск и устранение проблем
Если при подключении к screen возникают проблемы и вы получаете ошибку:
Cannot open your terminal '/dev/pts/0' - please check.Для решения проблемы выполните следующую команду в текущей сессии:
script /dev/nullПосле этого подключение к screen сессии станет возможно.
Заключение
Если вы следовали этому руководству, то теперь у вас должен быть свой сервер CSGO, который обновляется автоматически.