Обзор развертывания сервера Counter-Strike 2 на сервере¶
Предварительные требования и базовые условия¶
Для развертывания сервера Counter-Strike 2 требуются следующие системные характеристики и права доступа:
-
Операционная система: Ubuntu (с использованием репозитория
multiverseи поддержкой архитектурыi386). -
Привилегии: Для установки системных пакетов, управления директориями и выполнения скрипта управления сервером необходим доступ root или права
sudo. -
Зависимости: Пакет
steamcmdдолжен быть установлен через менеджер пакетовapt. -
Сеть: Требуется доступ к интернету для загрузки клиента SteamCMD и обновления игровых бинарных файлов.
Структура файлов и директорий¶
Приложение и связанные с ним компоненты организованы в конкретных директориях на сервере:
-
Директория установки:
/opt/cs2 -
Игровые бинарные файлы и данные:
/opt/cs2/game -
Конфигурация сервера:
/opt/cs2/game/game/csgo/cfg/cs2server.cfg -
Директория Steam SDK:
/root/.steam/sdk64 -
Скрипт управления сервером:
/root/cs2server.sh -
Файл идентификатора процесса (PID):
/tmp/cs2server.pid -
Файл логов:
/var/log/cs2server.log
Процесс установки приложения¶
Процесс установки включает настройку окружения, установку SteamCMD и загрузку файлов сервера Counter-Strike 2.
-
Настройка репозитория: В источники APT добавляется репозиторий
multiverse, а также активируется архитектураi386для поддержки устаревших зависимостей. -
Установка пакетов: Системные пакеты обновляются, а пакет
steamcmdустанавливается с помощьюapt. -
Создание директорий: Создаются директория установки
/opt/cs2и директория Steam SDK/root/.steam/sdk64с правами доступа0755. -
Настройка SteamCMD: Клиент SteamCMD загружается и распаковывается в
/opt/cs2. -
Загрузка игры: Сервер Counter-Strike 2 (ID приложения 730) загружается и проверяется через SteamCMD с использованием команды
force_install_dir. -
Связывание библиотек: Файл
steamclient.soкопируется из/opt/cs2/linux64/в/root/.steam/sdk64/для обеспечения совместимости библиотек. -
Конфигурация и скрипты: Файл конфигурации сервера
cs2server.cfgразворачивается в/opt/cs2/game/game/csgo/cfg/, а скрипт управленияcs2server.shпомещается в/root/.
Контейнеры Docker и их развертывание¶
В развертывание входит контейнер Nginx, настроенный для управления SSL-сертификатами и работы в качестве прокси-сервера.
-
Образ контейнера:
jonasal/nginx-certbot:latest -
Режим сети: Контейнер работает в режиме сети хоста (host network mode).
-
Привязка томов (Volume Mounts):
-
nginx_secrets: Внешний том, привязанный к/etc/letsencrypt. -
/data/nginx/user_conf.d: Привязан к/etc/nginx/user_conf.dдля пользовательских конфигураций. -
Переменные окружения:
-
CERTBOT_EMAIL: Установлено значениеhkadm@hostkey.com. -
Дополнительные настройки загружаются из
/data/nginx/nginx-certbot.env.
Прокси-серверы¶
Контейнер Nginx функционирует как основной прокси-сервер, обрабатывающий завершение SSL (SSL termination) и маршрутизацию трафика.
-
Функциональность: Контейнер использует Certbot для автоматического управления SSL-сертификатами.
-
Управление секретами: Секреты SSL хранятся во внешнем томе Docker
nginx_secrets. -
Конфигурация: Пользовательские конфигурации Nginx должны располагаться в
/data/nginx/user_conf.dна хосте, что напрямую мапится в контейнер.
Запуск, остановка и обновление¶
Операции с сервером управляются через пользовательский shell-скрипт, расположенный в /root/cs2server.sh. Скрипт принимает следующие аргументы:
-
Start (Запуск): Запускает бинарный файл сервера, расположенный по адресу
/opt/cs2/game/game/bin/linuxsteamrt64/cs2, с флагом-dedicatedи загружает конфигурациюcs2server.cfg. Процесс выполняется в фоновом режиме черезnohup, а его идентификатор записывается в/tmp/cs2server.pid. -
Stop (Остановка): Считывает PID из
/tmp/cs2server.pid, завершает процесс и удаляет файл PID. -
Restart (Перезапуск): Выполняет команду остановки, выжидает 2 секунды, а затем выполняет команду запуска.
-
Status (Статус): Проверяет наличие файла PID и подтверждает, запущен ли процесс в данный момент.
Команды для управления службой:
/root/cs2server.sh start
/root/cs2server.sh stop
/root/cs2server.sh restart
/root/cs2server.sh status
Настройки прав доступа¶
Права доступа к файлам и директориям устанавливаются в процессе развертывания для обеспечения безопасности и функциональности:
-
Права доступа к директориям:
-
/opt/cs2:0755 -
/root/.steam:0755 -
/root/.steam/sdk64:0755(рекурсивно) -
Права доступа к файлам:
-
/opt/cs2/game/game/csgo/cfg/cs2server.cfg:0755(владелец: root, группа: root) -
/root/cs2server.sh:0755(владелец: root, группа: root)
Расположение файлов конфигурации и данных¶
Следующие пути содержат критически важные файлы конфигурации и данные времени выполнения:
-
Конфигурация сервера:
/opt/cs2/game/game/csgo/cfg/cs2server.cfg -
Скрипт управления:
/root/cs2server.sh -
Окружение Nginx:
/data/nginx/nginx-certbot.env -
Пользовательские конфиги Nginx:
/data/nginx/user_conf.d -
SSL-сертификаты: Управляются внутри тома Docker
nginx_secrets. -
Логи времени выполнения:
/var/log/cs2server.log -
Идентификатор процесса:
/tmp/cs2server.pid