Перейти к содержанию

Обзор развертывания сервера Counter-Strike 2

Предварительные требования и базовые условия

Для развертывания сервера Counter-Strike 2 необходимы следующие системные характеристики и конфигурации:

  • Операционная система: Ubuntu (совместимая с менеджером пакетов apt).

  • Архитектура: Требуется поддержка архитектур amd64 и i386.

  • Привилегии: Для установки и конфигурации необходим доступ root или права sudo.

  • Домен: Сервер использует зону hostkey.in.

  • Порты: Серверу требуется сетевой доступ для игрового трафика и управления; конкретные порты описаны в разделе Доступные порты.

FQDN конечной панели

Полное доменное имя (FQDN) для доступа к панели сервера имеет следующий формат: plane<Server ID>.hostkey.in:<port>

Где:

  • plane — настроенный префикс.

  • <Server ID> — уникальный идентификатор конкретного экземпляра сервера.

  • <port> — номер порта, назначенный для сервиса.

Структура файлов и каталогов

Приложение и его компоненты организованы в следующей структуре каталогов:

  • Каталог установки: /opt/cs2

  • Содержит инструменты steamcmd и файлы игры.

  • Файлы игры: /opt/cs2/game

  • Содержит бинарные файлы Counter-Strike 2 и игровые данные.

  • Файлы конфигурации: /opt/cs2/game/game/csgo/cfg/cs2server.cfg

  • Хранит настройки конфигурации сервера.

  • Steam SDK: /root/.steam/sdk64

  • Содержит библиотеку steamclient.so, необходимую для сервера.

  • Скрипт управления: /root/cs2server.sh

  • Shell-скрипт, используемый для управления жизненным циклом сервера.

  • Файл логов: /var/log/cs2server.log

  • Хранит логи выполнения сервера.

  • Файл PID: /tmp/cs2server.pid

  • Хранит идентификатор процесса (PID) запущенного сервера.

  • Конфигурация Nginx: /data/nginx/user_conf.d

  • Содержит пользовательские файлы конфигурации Nginx.

  • Окружение Nginx: /data/nginx/nginx-certbot.env

  • Содержит переменные окружения для контейнера Nginx.

Процесс установки приложения

Сервер Counter-Strike 2 устанавливается с помощью утилиты steamcmd. Процесс включает следующие шаги:

  1. Конфигурация репозитория: В систему добавляется репозиторий multiverse, и активируется архитектура i386 для поддержки 32-битных библиотек.

  2. Установка пакетов: Пакет steamcmd устанавливается через менеджер пакетов apt.

  3. Настройка SteamCMD: Бинарный файл steamcmd загружается и распаковывается в /opt/cs2.

  4. Установка игры: Инструмент steamcmd выполняется для загрузки и проверки приложения Counter-Strike 2 (App ID 730) в каталог /opt/cs2/game.

  5. Конфигурация библиотек: Библиотека steamclient.so копируется из каталога установки в /root/.steam/sdk64.

  6. Развертывание конфигурации: Файл конфигурации сервера cs2server.cfg размещается в каталоге конфигурации игры.

  7. Развертывание скрипта управления: Скрипт cs2server.sh устанавливается в /root с правами на выполнение.

Контейнеры Docker и их развертывание

Развертывание включает контейнер Docker для веб-сервера Nginx и управления SSL. Контейнер определен с использованием конфигурации Docker Compose.

Детали контейнера:

  • Образ: jonasal/nginx-certbot:latest

  • Политика перезапуска: unless-stopped

  • Режим сети: host

  • Окружение:

  • CERTBOT_EMAIL: Установлено значение hkadm@hostkey.com

  • Дополнительные переменные окружения загружаются из /data/nginx/nginx-certbot.env.

  • Томы (Volumes):

  • nginx_secrets: Монтируется в /etc/letsencrypt для хранения SSL-сертификатов.

  • /data/nginx/user_conf.d: Монтируется в /etc/nginx/user_conf.d для пользовательских конфигураций Nginx.

Файл Docker Compose находится по пути, указанному в контексте развертывания, и управляет жизненным циклом сервиса Nginx.

Прокси-серверы

Сервер использует Nginx в качестве обратного прокси-сервера и точки терминации SSL.

  • ПО: Nginx с интеграцией Certbot.

  • Управление SSL: Автоматизировано через образ контейнера jonasal/nginx-certbot.

  • Пользовательские домены: Конфигурируются через том nginx_secrets и каталог пользовательской конфигурации.

  • Расположение конфигурации: Пользовательские конфигурации Nginx хранятся в /data/nginx/user_conf.d.

Настройки разрешений

Разрешения на файлы и каталоги установлены следующим образом для обеспечения корректной работы:

  • Каталог установки (/opt/cs2): 0755 (rwxr-xr-x).

  • Каталог Steam SDK (/root/.steam/sdk64): 0755 с рекурсивными правами.

  • Файл конфигурации (/opt/cs2/game/game/csgo/cfg/cs2server.cfg): Владелец root:root, режим 0755.

  • Скрипт управления (/root/cs2server.sh): Владелец root:root, режим 0755.

Расположение файлов конфигурации и данных

Ключевые файлы конфигурации и данные находятся по следующим путям:

  • Конфигурация сервера: /opt/cs2/game/game/csgo/cfg/cs2server.cfg

  • Скрипт управления: /root/cs2server.sh

  • Переменные окружения Nginx: /data/nginx/nginx-certbot.env

  • Пользовательские конфигурации Nginx: /data/nginx/user_conf.d

  • SSL-сертификаты: /etc/letsencrypt (монтированный том)

  • Логи сервера: /var/log/cs2server.log

  • Идентификатор процесса: /tmp/cs2server.pid

Доступные порты для подключения

Конкретные порты для подключения к игре и управления определяются в файле конфигурации cs2server.cfg и настройках прокси Nginx. Контейнер Nginx работает в режиме сети host, что позволяет прямой доступ к настроенным портам.

Запуск, остановка и обновление

Сервером Counter-Strike 2 управляется с помощью скрипта cs2server.sh, расположенного по пути /root/cs2server.sh. Скрипт поддерживает следующие команды:

  • Запуск:

    /root/cs2server.sh start
    
    Запускает процесс сервера в фоновом режиме, записывает вывод в /var/log/cs2server.log и сохраняет PID в /tmp/cs2server.pid.

  • Остановка:

    /root/cs2server.sh stop
    
    Завершает работающий процесс сервера и удаляет файл PID.

  • Перезапуск:

    /root/cs2server.sh restart
    
    Останавливает сервер, ждет 2 секунды, а затем запускает его снова.

  • Статус:

    /root/cs2server.sh status
    
    Проверяет, запущен ли процесс сервера на основе файла PID, и сообщает текущий статус.

Бинарный файл сервера выполняется из /opt/cs2/game/game/bin/linuxsteamrt64/cs2 с аргументом +exec cs2server.cfg.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×