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

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

Как уже ясно из названия этой статьи, речь пойдет о настройке 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

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

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

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

gameservermanagers/linuxgsm-docker

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

Загрузка образа

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

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

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

Advanced Settings

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

Запуск контейнера

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


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

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

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

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

ssh user_name@IP

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

ssh admin@192.168.0.166

IP адрес Synology NAS сервера

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

sudo docker exec -u 0 -it test bash

Подключение к Docker

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

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

passwd

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

apt update && apt upgrade && apt autoremove

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

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

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

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

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

adduser test

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

usermod -aG sudo test

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

su test

Установка утилит

Установка и настройка 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

Установка зависимостей

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

Steam License

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

Install

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

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

Скачивание

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

./csserver install

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

Install Complete!

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

./csserver start

Multiple IP addresses found

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

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

192.168.0.166

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

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

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

ls

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

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

cat _default.cfg >> csserver.cfg

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

nano csserver.cfg

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

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

ip="0.0.0.0"

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

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

ip="192.168.0.166"

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

Ctr + X

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

Y

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

cd ~

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

./csserver start

Запуск сервера

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

./csserver details

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

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

  • 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


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

Админ панель роутера

Вот и всё, после сохранения настроек роутера, игровой сервер будет доступен в сети по внешнему 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

UPD


Как заметил centralhardware не все Synology NAS могут в Docker, вот список устройств которые могут https://www.synology.com/ru-ru/dsm/packages/Docker.