[Из песочницы] Превращение Synology NAS в игровой сервер

u2bgjxeq3nfxjmn_9z3css8q0iq.png

Приветствую!

И так, по всем известным причинам приходится больше время проводить дома перед монитором.
При таком положении дел приходится вспоминать дела давно минувших дней.

Как уже ясно из названия этой статьи, речь пойдет о настройке Synology NAS в роли игрового сервера.

Achtung — в статье много скриншотов (скриншоты кликабельны)!

Перед тем как приступить, вот список инструментов которые нам понадобятся:

Synology NAS — тут ограничений я не вижу, думаю подойдёт любой, если нет планов держать сервер на 10к игроков.

Docker — особых навыков не требуется, достаточно образно понимать принцип работы.

LinuxGSM — о том что из себя представляет LinuxGSM можно почитать на офф. сайте https://linuxgsm.com.

На данный момент (апрель 2020) на LinuxGSM доступно 105 игровых серверов.
Весь список можно посмотреть тут https://linuxgsm.com/servers.

Steam — маркет с играми.

Игровой сервер LinuxGSM имеет интеграцию с SteamCMD, то есть игровой сервер LinuxGSM можно будет использовать только для игр из Steam.

Установка Docker на Synology NAS


На этом этапе все просто, переходим в админ панель Synology, дальше в «Package centre», находим и устанавливаем Docker.

Package centre
gcnk2e1ac-e-txvyybnss0tzxqu.png


Запускаем и видим примерно такую картину (у меня уже установлен этот контейнер)

Управление контейнером
vhdd7o_tyi2ybtgyz_q4bpgnfve.png


Далее переходим в вкладку «Registry», вбиваем в поиск «gameservermanagers», выбираем образ «gameservermanagers/linuxgsm-docker» и жмём на кнопку «Download».

gameservermanagers/linuxgsm-docker
rezr0hnugpk0_0zakqvhtf4rh4m.png


После переходим в вкладку «Image», ждём окончание загрузки образа и жмём на кнопку «Launch».

Загрузка образа
auoslj1qkadh3ncndfxcccjfc5q.png


В открывшемся окне нужно перейти в «Advanced Settings», дальше в вкладку «Network» и отметить галочку «Use the same network as Docker Host».

Остальные настройки, например, такие как «Container Name», меняем на свое усмотрение.
Container Name — как не трудно догадаться, это имя контейнера, оно дальше пригодится. Рекомендую назвать как-то лаконично, для примера пусть будет «test».

Далее жмём кнопку «Apply» или «Next» несколько раз до завершения настройки.

Advanced Settings
eh6558uc1wv1vbiirumbz0cot2w.png


Переходим в вкладку «Container» и видим новый запущенный (если нет, запускаем) контейнер.
Тут его можно останавливать, запускать, удалять и проводить другие действия.

Запуск контейнера
hpm-8fa9wc1iaz0rqvojfzvgajo.png


Настройка Docker контейнера LinuxGSM


Перед тем как подключиться к Synology NAS через SSH, надо активировать сам SSH доступ в админ панели.

Подключение через SSH
ryyzj4kxbz9jpuk9bradsxb69qc.png


Дальше необходимо использовать внутренней IP адрес Synology NAS сервера для подключения через SSH.

Переходим в терминал (или другой любой аналог, например под Windows это PuTTY) и используем следующую команду:

ssh user_name@IP


В моём случае это выглядит так

ssh admin@192.168.0.166


IP адрес Synology NAS сервера
e-qg6k9csgshcje9lmxsdbbqpty.png


После авторизации надо выполнить команду для перехода в сам контейнер «test» (поле «Container Name» в настройках Docker) под пользователем «root»

sudo docker exec -u 0 -it test bash


Подключение к Docker
tagquxshe7fprwmx5vq_rrqfwiu.png


Перед самой установкой «LinuxGSM» нужно провести некоторые действия.

Установим пароль для пользователя «root»

passwd


Далее обновим все пакеты

apt update && apt upgrade && apt autoremove


Ожидаем окончание процесса…

Обновление пакетов
qh0dfbidhxphozkj_yg_rkq1g1k.png


Далее установим нужные утилиты

apt-get install sudo iproute2 netcat nano mc p7zip-rar p7zip-full


Поскольку, под «root» выполнять разные действия не самая лучшая идея, добавим нового пользователя «test».

adduser test


И разрешим новому пользователю использовать «sudo»

usermod -aG sudo test


Переключаемся на нового пользователя «test»

su test


Установка утилит
nsemudnn1a37do_w6nuduprszyw.png


Установка и настройка LinuxGSM


Рассмотрим пример настройки LinuxGSM на примере «Counter-Strike» он же «CS 1.6» https://linuxgsm.com/lgsm/csserver

Переходим на страницу инструкцией «Counter-Strike» linuxgsm.com/lgsm/csserver.

Во вкладке «Dependencies» копируем код под «Ubuntu 64-bit».

На момент написания статьи этот код выглядит так:

sudo dpkg --add-architecture i386; sudo apt update; sudo apt install mailutils postfix curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux lib32gcc1 libstdc++6 lib32stdc++6 steamcmd


Установка зависимостей
9riiogevzpbyskpolkamdm5rejy.png


В процессе установки нужно согласится с «Steam License»:

Steam License
u5xvcfs1wxrozr8tmzwb2tfkzci.png


Переходим в вкладку «Install» копируем код c 2-го шага (1-й шаг пропускаем, пользователь «test» уже есть):

Install
xbkre2b3ouglofmdbhn7pjzh1ee.png
wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh csserver


Ожидаем скачивания:

Скачивание
kigdckadtezx4w1jwypzqpezau4.png


И запускаем установку:

./csserver install


Если все прошло в штатном режиме, увидим заветное «Install Complete!»

Install Complete!
bd2yyokilgffs-l7cl7ktbzzboq.png


Запускаем… и видим ошибку «Multiple IP addresses found.»

./csserver start


Multiple IP addresses found
dnayhunecy9kiaxbyjzfk9m_kgw.png


Дальше надо явно указать серверу какой IP ему использовать.

В моём случае это:

192.168.0.166


Переходим в папку, путь к которой был в сообщении как «location»:

cd /home/test/lgsm/config-lgsm/csserver


И смотри какие фалы есть в этой папке:

ls


Список файлов в папке csserver
u3nw81s2n6j6nz8zvq5l0jeij9e.png


Копируем содержимое файла »_default.cfg» в файл «csserver.cfg»:

cat _default.cfg >> csserver.cfg


И переходим в режим редактирования файла «csserver.cfg»:

nano csserver.cfg


Редактирование файла csserver.cfg
ch78x6aawqln88skir6hkbcwywc.png


Находим строку:

ip="0.0.0.0"


И заменяем IP адрес, который был предложен, в моём случае это »192.168.0.166».

Получится как-то так:

ip="192.168.0.166"


Зажимаем сочетание клавиш:

Ctr + X


И после предложения сохранить жмём:

Y


Возвращаемся в папку пользователя «test»:

cd ~


И снова пробуем запустить сервер. Теперь сервер должен запуститься без проблем:

./csserver start


Запуск сервера
ix1njovwzhxrxexnaqm1kff7zry.png


Для просмотра более детальной информации воспользуемся командой:

./csserver details


Детальная информация о сервере
fkvnfhy2cvcxuitgxphubgf0_j0.png


Из важных параметров стоит отметить:

  • Server IP: 192.168.0.166:27015
  • Internet IP: xxx.xx.xxx.xx:27015
  • Config file: /home/test/serverfiles/cstrike/csserver.cfg


На этом этапе игровой сервер уже доступен в локальной сети.

Настройка переадресации IP адреса


Играть по локальной сети хорошо, но играть с друзьями через интернет — лучше!

Для переадресации IP адреса, который получил роутер от провайдера, используем механизм NAT.

Так же уместно будет заметить, что большинство провайдеров используют динамические IP адреса для своих клиентов.

Для удобства и стабильности работы желательно заполучить статический IP адрес.

Поскольку у меня роутер «TP-Link Archer C60», то я привожу пример настройки переадресации, так как это реализовано в моём роутере.

Для других роутеров, я предполагаю, настройка переадресации устроена похожим образом.

Тут всё просто — необходимо указать переадресацию с внешнего IP адреса на внутренний IP адрес сервера для двух портов:

  • 27015
  • 27005

В админ панели моего роутера это выглядит так

Админ панель роутера
3g7g_urqdfw1kn_rehqueinwt8e.png


Вот и всё, после сохранения настроек роутера, игровой сервер будет доступен в сети по внешнему IP адресу для указаных портов!

Дополнительные настройки на примере CS 1.6


На примере CS 1.6 хотел бы дать несколько полезных советов.

Есть два файла для конфигурации сервера

Первый находится тут:

~/lgsm/config-lgsm/csserver/csserver.cfg


Второй находится тут:

~/serverfiles/cstrike/csserver.cfg


Первый файл содержит общие настройки, такие как IP адрес, карта для первой загрузки сервера и т.д.

Второй файл содержит настройки команд который можно выполнять через консоль «Counter-Strike», например «rcon_password» или «sv_password».

Во втором файле я рекомендую установить пароль на подключение к серверу через CVar «sv_password» и установить пароль для управления с консоли самого сервера через CVar «rcon_password».

Список всех CVar переменных можно посмотреть тут http://txdv.github.io/cstrike-cvarlist

Так же скорее всего будет необходимость установить дополнительные карты, например «fy_pool_day».

Все карты для CS 1.6 находятся тут:

~/serverfiles/cstrike/maps


Находим нужную карту, загружаем прямо на сервер (если в архиве, разархивируем), перемещаем файл с расширением ».bsp» в папку с файлами »~/serverfiles/cstrike/maps» и перегружаем сервер.

~./csserver restart


Кстати, все доступные команды сервера можно посмотреть так

~./csserver


Итог


Я доволен результатом. Все работает быстро и не лагает.

LinuxGSM имеет много дополнительных настроек, например, интеграцию c Telegram и Slack для оповещений, но некоторый функционал ещё требует доработок.

В целом, рекомендую к использованию!

Источники


https://linuxgsm.com
https://docs.linuxgsm.com
https://digitalboxweb.wordpress.com/2019/09/02/serveur-counter-strike-go-sur-nas-synology
https://medium.com/@konpat/how-to-host-a-counter-strike-1–6-game-on-linux-full-tutorial-a25f20ff1149
http://txdv.github.io/cstrike-cvarlist

© Habrahabr.ru