Обзор развертывания Linux Game Server Manager (LGSM и Web-LGSM) на сервере¶
Предварительные требования и базовые условия¶
Для развертывания требуется дистрибутив Linux на базе Debian со следующими спецификациями:
-
Операционная система: Debian или Ubuntu (тестировалось с пакетным менеджером
apt). -
Привилегии: Для начальной настройки требуется доступ root или пользователь с правами
sudo. -
Учетная запись пользователя: В процессе установки создается выделенный системный пользователь с именем
mcbserver. -
Зависимости: В ходе настройки устанавливаются следующие пакеты:
-
bsdmainutils,bzip2,jq,lib32gcc-s1,lib32stdc++6,netcat,pigz,unzip,git,python3,python3-venv,python3-pip. -
Порты:
-
Внутренний порт приложения:
12357(только localhost). -
Внешний порт HTTPS:
443.
FQDN конечной панели¶
Панель Web-LGSM доступна по следующему формату Полного Квалифицированного Доменного Имени (FQDN):
-
Домен:
hostkey.in -
Префикс:
web-lgsm -
Формат:
<prefix><Server ID>.hostkey.in:<port> -
Пример:
web-lgsmmcbserver.hostkey.in:443
Структура файлов и каталогов¶
Файлы приложения, конфигурация и данные организованы в домашней директории пользователя mcbserver.
-
Домашняя директория пользователя:
/home/mcbserver -
Директория сервера LGSM:
/home/mcbserver/mcbserver -
Директория Web-LGSM:
/home/mcbserver/web-lgsm -
Директория конфигурации Nginx:
/root/nginx -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d -
SSL-сертификаты: Хранятся в Docker-объеме
nginx_secrets, смонтированном в/etc/letsencryptвнутри контейнера. -
Временная директория Ansible:
/home/mcbserver/.ansible_tmp
Процесс установки приложения¶
Процесс установки включает настройку Linux Game Server Manager (LGSM) и интерфейса Web-LGSM.
-
Создание пользователя: Создается системный пользователь
mcbserverс правамиsudoи доступом к sudo без пароля. -
Установка LGSM:
-
Скрипт
linuxgsm.shзагружается в/home/mcbserver/linuxgsm.sh. -
Скрипт выполняется для создания экземпляра игрового сервера
mcbserver. -
Скрипт
linuxgsm.shудаляется после успешного выполнения.
-
-
Установка Web-LGSM:
-
Репозиторий Web-LGSM клонируется с
https://github.com/BlueSquare23/web-lgsm.gitв/home/mcbserver/web-lgsm. -
Скрипт
install.shвнутри директории Web-LGSM выполняется для завершения настройки.
-
-
Регистрация сервиса:
-
Создается файл юнита сервиса
systemdпо пути/etc/systemd/system/web-lgsm.service. -
Сервис включается и запускается автоматически.
-
Права доступа и безопасность¶
Применяются конфигурации безопасности для обеспечения правильного контроля доступа и стабильности системы.
-
Конфигурация Sudo:
-
Пользователь
mcbserverдобавляется в группуsudo. -
Доступ к sudo без пароля включен через
/etc/sudoers.d/99-mcbserver-nopasswd. -
Параметры по умолчанию
requirettyиtargetpw/rootpwявно удалены для обеспечения выполнения sudo в интерактивном режиме. -
Права доступа к директориям:
-
/tmpи/var/tmpустановлены в режим1777. -
Временная директория конкретного пользователя
/home/mcbserver/.ansible_tmpустановлена в режим0700. -
Изоляция сервиса:
-
Бэкенд Web-LGSM работает от имени пользователя
mcbserver, а не root. -
Бэкенд слушает только порт
127.0.0.1:12357, предотвращая прямой внешний доступ к порту приложения.
Контейнеры Docker и их развертывание¶
Docker используется для запуска обратного прокси-сервера Nginx и управления SSL-сертификатами через Certbot.
-
Установка Docker: Docker установлен на хост-системе.
-
Расположение файла Compose:
/root/nginx/compose.yml -
Образ контейнера:
jonasal/nginx-certbot:latest -
Метод развертывания: Контейнер развертывается с помощью команды
docker compose up -d. -
Конфигурация контейнера:
-
Режим сети:
host -
Политика перезапуска:
unless-stopped -
Переменные окружения:
CERTBOT_EMAIL:hkadm@hostkey.com
-
Объемы (Volumes):
-
nginx_secrets(внешний) смонтирован в/etc/letsencrypt. -
/data/nginx/user_conf.dсмонтирован в/etc/nginx/user_conf.d. -
/homeсмонтирован в/homeдля обеспечения доступа к директориям пользователей.
-
Прокси-серверы¶
Nginx действует как обратный прокси-сервер для обработки внешнего трафика и завершения SSL-соединений.
-
Программное обеспечение прокси: Nginx (через контейнер Docker).
-
Управление SSL: Certbot интегрирован в контейнер Nginx для автоматической генерации и обновления SSL-сертификатов.
-
Внешний порт:
443(HTTPS). -
Внутренняя маршрутизация: Трафик с порта
443перенаправляется на внутренний сервис Web-LGSM, работающий на127.0.0.1:12357. -
Путь конфигурации: Пользовательские конфигурации Nginx хранятся в
/data/nginx/user_conf.d.
Настройки прав доступа¶
Права доступа к файлам и директориям строго определены для поддержания целостности системы.
| Путь | Владелец | Группа | Режим |
|---|---|---|---|
/etc/sudoers.d | root | root | 0750 |
/etc/sudoers.d/99-mcbserver-nopasswd | root | root | 0440 |
/home/mcbserver | mcbserver | mcbserver | 0755 |
/home/mcbserver/web-lgsm | mcbserver | mcbserver | 0755 |
/home/mcbserver/.ansible_tmp | mcbserver | mcbserver | 0700 |
/root/nginx | root | root | 0644 |
/root/nginx/compose.yml | root | root | 0644 |
/tmp | root | root | 1777 |
Расположение файлов конфигурации и данных¶
Следующие расположения содержат основные файлы конфигурации и данные для развернутых сервисов:
-
Юнит-файл сервиса Systemd:
/etc/systemd/system/web-lgsm.service -
Приложение Web-LGSM:
/home/mcbserver/web-lgsm/web-lgsm.py -
Игровой сервер LGSM:
/home/mcbserver/mcbserver -
Файл Compose для Nginx:
/root/nginx/compose.yml -
Файл окружения Nginx:
/data/nginx/nginx-certbot.env -
Переопределение Sudoers:
/etc/sudoers.d/99-mcbserver-nopasswd
Доступные порты для подключения¶
Для приложения настроены следующие порты:
-
Порт 443: Трафик HTTPS для панели Web-LGSM (внешний доступ).
-
Порт 12357: Внутренний бэкенд Web-LGSM (только localhost, не доступен извне).
Запуск, остановка и обновление¶
Бэкенд Web-LGSM управляется как сервис systemd.
-
Запуск сервиса:
-
Остановка сервиса:
-
Перезапуск сервиса:
-
Включение сервиса при загрузке:
-
Проверка статуса сервиса:
-
Перезагрузка демона Systemd (после изменения файла юнита):
Для контейнера прокси-сервера Nginx используйте следующие команды в директории /root/nginx:
-
Запуск/Обновление контейнера:
-
Остановка контейнера: