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

Обзор развертывания 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.

  1. Создание пользователя: Создается системный пользователь mcbserver с правами sudo и доступом к sudo без пароля.

  2. Установка LGSM:

    • Скрипт linuxgsm.sh загружается в /home/mcbserver/linuxgsm.sh.

    • Скрипт выполняется для создания экземпляра игрового сервера mcbserver.

    • Скрипт linuxgsm.sh удаляется после успешного выполнения.

  3. Установка Web-LGSM:

    • Репозиторий Web-LGSM клонируется с https://github.com/BlueSquare23/web-lgsm.git в /home/mcbserver/web-lgsm.

    • Скрипт install.sh внутри директории Web-LGSM выполняется для завершения настройки.

  4. Регистрация сервиса:

    • Создается файл юнита сервиса 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.

  • Запуск сервиса:

    sudo systemctl start web-lgsm.service
    

  • Остановка сервиса:

    sudo systemctl stop web-lgsm.service
    

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

    sudo systemctl restart web-lgsm.service
    

  • Включение сервиса при загрузке:

    sudo systemctl enable web-lgsm.service
    

  • Проверка статуса сервиса:

    sudo systemctl status web-lgsm.service
    

  • Перезагрузка демона Systemd (после изменения файла юнита):

    sudo systemctl daemon-reload
    

Для контейнера прокси-сервера Nginx используйте следующие команды в директории /root/nginx:

  • Запуск/Обновление контейнера:

    docker compose up -d
    

  • Остановка контейнера:

    docker compose down
    

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