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

Менеджер игровых серверов для Linux (LGSM и Web-LGSM): Обзор развертывания на сервере

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

Для развертывания и запуска приложения требуются следующие спецификации окружения:

  • Операционная система: Linux-дистрибутив на базе Debian (например, Ubuntu, Debian).

  • Привилегии: Для начальной настройки требуется доступ root или учетная запись пользователя с правами sudo.

  • Учетная запись пользователя: В процессе установки создается выделенный системный пользователь с именем mcbserver.

  • Сетевые порты:

    • Порт 443 (HTTPS) для внешнего веб-доступа через обратный прокси.

    • Порт 12357 (TCP) для внутреннего бэкенд-сервиса Web-LGSM.

  • Зависимости: Скрипт установки автоматически устанавливает следующие пакеты:

    • bsdmainutils

    • bzip2

    • jq

    • lib32gcc-s1

    • lib32stdc++6

    • netcat

    • pigz

    • unzip

    • git

    • python3

    • python3-venv

    • python3-pip

FQDN финальной панели

Панель Web-LGSM доступна по следующему полному доменному имени (Fully Qualified Domain Name — FQDN) в домене hostkey.in:

  • URL: web-lgsm<ServerID>.hostkey.in:443

    • Замените <ServerID> на конкретный идентификатор, назначенный серверу.

    • Путь установлен на /.

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

Приложение и его компоненты организованы в домашней директории пользователя mcbserver. Основные расположения:

  • Домашняя директория пользователя: /home/mcbserver

  • Директория Linux Game Server Manager (LGSM): /home/mcbserver/mcbserver

  • Директория Web-LGSM: /home/mcbserver/web-lgsm

  • Python-скрипт Web-LGSM: /home/mcbserver/web-lgsm/web-lgsm.py

  • Временная директория Ansible: /home/mcbserver/.ansible_tmp

  • Файл юнита сервиса systemd: /etc/systemd/system/web-lgsm.service

  • Конфигурация Nginx/Certbot: /root/nginx

  • Compose-файл Nginx: /root/nginx/compose.yml

  • SSL-сертификаты: Хранятся во внешнем Docker-объеме nginx_secrets, смонтированном в /etc/letsencrypt.

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

Процесс развертывания включает создание пользователя, установку зависимостей, а также развертывание ядра LGSM и интерфейса Web-LGSM.

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

  2. Развертывание LGSM:

    • Скрипт linuxgsm.sh загружается в домашнюю директорию пользователя.

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

    • Исходный скрипт linuxgsm.sh удаляется после успешного создания.

  3. Развертывание Web-LGSM:

    • Подготавливается директория web-lgsm.

    • Репозиторий https://github.com/BlueSquare23/web-lgsm.git клонируется в директорию, с выборкой ветки master.

    • Скрипт установки install.sh делается исполняемым и запускается внутри директории web-lgsm.

  4. Активация сервиса:

    • Файл юнита сервиса systemd создается по пути /etc/systemd/system/web-lgsm.service.

    • Сервис включается и запускается, обеспечивая, что бэкенд слушает порт 127.0.0.1:12357.

Права доступа и безопасность

Меры безопасности и контроль доступа реализованы следующим образом:

  • Настройка Sudo:

    • Пользователю mcbserver предоставлен доступ к sudo без пароля (NOPASSWD: ALL) через выделенную запись в /etc/sudoers.d/99-mcbserver-nopasswd.

    • Параметр по умолчанию requiretty явно удален из конфигурации sudoers для разрешения несинтерактивного выполнения sudo.

    • Параметры по умолчанию targetpw и rootpw удалены для обеспечения совместимости с NOPASSWD.

  • Права доступа к директориям:

    • Директория /etc/sudoers.d принадлежит root:root с правами 0750.

    • Директория /tmp установлена в 1777 (бит фиксации/sticky bit) для обеспечения безопасного создания временных файлов.

    • Временная директория пользователя /home/mcbserver/.ansible_tmp создается с правами 0700.

  • Ограничения пользователя: Процессы приложения выполняются в контексте пользователя mcbserver, изолируя их от пользователя root там, где это возможно.

Базы данных

Предоставленные данные конфигурации не указывают на подключения к внешним базам данных, места хранения или специфические настройки баз данных для компонентов LGSM или Web-LGSM. Приложение, по-видимому, управляет состоянием игрового сервера и конфигурацией через локальные файловые структуры внутри домашней директории пользователя.

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

Стек прокси и управления SSL на базе Docker развертывается с помощью docker compose для обработки внешнего трафика.

  • Расположение 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 для хранения SSL-сертификатов.

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

      • /home: смонтирован в /home для доступа к данным пользователей.

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

Приложение использует обратный прокси для открытого доступа к внутреннему сервису Web-LGSM через стандартные порты HTTPS.

  • Программное обеспечение прокси: Nginx, управляемый через Docker-контейнер jonasal/nginx-certbot.

  • SSL/TLS: Управляется автоматически через Certbot внутри контейнера.

  • Конфигурация маршрутизации:

    • Внешний порт: 443

    • Внешний путь: /

    • Внутренний адрес назначения: 127.0.0.1:12357

    • Внутренний путь: Пустой (корневой путь)

  • Пользовательский домен: Прокси настроен на обслуживание зоны hostkey.in с префиксом web-lgsm.

Настройки прав доступа

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

  • Домашняя директория: /home/mcbserver принадлежит пользователю mcbserver.

  • Директория LGSM: /home/mcbserver/mcbserver принадлежит пользователю mcbserver.

  • Директория Web-LGSM: /home/mcbserver/web-lgsm принадлежит пользователю mcbserver с правами 0755.

  • Файл юнита сервиса Systemd: /etc/systemd/system/web-lgsm.service принадлежит root:root с правами 0644.

  • Директория конфигурации Nginx: /root/nginx принадлежит root с правами 0644.

  • Compose-файл: /root/nginx/compose.yml принадлежит root с правами 0644.

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

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

  • Конфигурация LGSM: Расположена внутри /home/mcbserver/mcbserver.

  • Конфигурация Web-LGSM: Расположена внутри /home/mcbserver/web-lgsm.

  • Пользовательские конфиги Nginx: /data/nginx/user_conf.d (путь хоста), смонтирован в /etc/nginx/user_conf.d (путь контейнера).

  • Переменные окружения Nginx: /data/nginx/nginx-certbot.env (используется в Docker Compose).

  • Файл юнита сервиса Systemd: /etc/systemd/system/web-lgsm.service.

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

Следующие порты настроены для подключения:

  • Порт 443: Внешний HTTPS-трафик, обрабатываемый Docker-контейнером Nginx.

  • Порт 12357: Внутренний TCP-порт, на котором бэкенд-сервис Web-LGSM слушает на 127.0.0.1.

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

Сервис Web-LGSM управляется через systemd. Процессы игровых серверов LGSM управляются через соответствующие интерфейсы командной строки.

Команды управления сервисом

Для управления бэкенд-сервисом Web-LGSM:

  • Запуск:

    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
    

Команды управления Docker

Для управления стеком контейнеров Nginx/Certbot:

  • Запуск/Развертывание:

    cd /root/nginx
    docker compose up -d
    

  • Остановка:

    cd /root/nginx
    docker compose down
    

  • Логи:

    docker compose logs -f
    

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