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

Обзор развертывания Web-LGSM на сервере

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

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Debian или Ubuntu. Требуется доступ к серверу с правами суперпользователя (root) или возможность выполнения команд через sudo.

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

  • Порт 12357 для локального доступа к бэкенду web-lgsm.

  • Порты 80 и 443 для работы веб-сервера nginx и получения SSL-сертификатов.

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

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

  • Домашняя директория пользователя {{ lgsm_user }} ({{ home_dir }}):

  • {{ home_dir }}/{{ server_name }}: Каталог с установленным сервером игры через linuxgsm.

  • {{ home_dir }}/{{ web_lgsm_dir }}: Каталог с репозиторием web-lgsm и скриптами запуска.

  • {{ home_dir }}/.ansible_tmp: Временная директория для операций установки.

  • Системные каталоги:

  • /etc/systemd/system/web-lgsm.service: Файл конфигурации системного сервиса.

  • /root/nginx: Директория для конфигурации nginx и docker compose.

  • /root/nginx/compose.yml: Файл конфигурации контейнеров.

  • /data/nginx/nginx-certbot.env: Файл переменных окружения для nginx.

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

  • /etc/letsencrypt: Директория для хранения SSL-сертификатов (монтируется в контейнер).

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

Установка выполняется в несколько этапов, создавая специализированного пользователя и устанавливая необходимые пакеты.

  1. Создание пользователя и настройка прав:

  2. Создается пользователь {{ lgsm_user }} с домашней директорией.

  3. Пользователь добавляется в группу sudo с правами на выполнение команд без ввода пароля.

  4. Проверяется отсутствие ограничений requiretty в файлах sudoers.

  5. Установка зависимостей:

  6. Устанавливаются системные пакеты: bsdmainutils, bzip2, jq, lib32gcc-s1, lib32stdc++6, netcat, pigz, unzip, git, python3, python3-venv, python3-pip.

  7. Установка LinuxGSM:

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

  9. Выполняется команда bash linuxgsm.sh {{ server_name }} для создания сервера игры.

  10. После успешного создания скрипт linuxgsm.sh удаляется.

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

  12. Клонируется репозиторий https://github.com/BlueSquare23/web-lgsm.git в директорию {{ home_dir }}/{{ web_lgsm_dir }}.

  13. Скрипт install.sh внутри репозитория выполняется от имени пользователя {{ lgsm_user }}.

  14. Настройка Docker и Nginx:

  15. Устанавливается Docker и роль docker-managed-install.

  16. Создается конфигурация docker compose в директории /root/nginx.

  17. Запускаются контейнеры nginx и certbot через команду docker compose up -d.

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

Настройка прав доступа осуществляется следующим образом:

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

  • Файл конфигурации sudo для пользователя {{ lgsm_user }} (/etc/sudoers.d/99-{{ lgsm_user }}-nopasswd) имеет права 0440.

  • Временная директория /tmp имеет права 1777.

  • Директория /var/tmp/.ansible имеет права 1777.

  • Директория {{ home_dir }}/.ansible_tmp имеет права 0700 и принадлежит пользователю {{ lgsm_user }}.

  • Директория /root/nginx имеет права 0644 и принадлежит пользователю root.

  • Файл compose.yml имеет права 0644.

Контейнеры Docker и их запуск

Для работы веб-интерфейса и получения SSL-сертификатов используются контейнеры Docker. Конфигурация описана в файле /root/nginx/compose.yml.

Используемый образ: jonasal/nginx-certbot:latest.

Параметры запуска контейнера nginx:

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

  • Перезапуск: unless-stopped.

  • Переменные окружения:

  • CERTBOT_EMAIL=hkadm@hostkey.com.

  • Файл переменных: /data/nginx/nginx-certbot.env.

  • Монтированные тома:

  • nginx_secrets (внешний том) монтируется в /etc/letsencrypt.

  • /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.

  • /home монтируется в /home.

Запуск контейнеров выполняется командой:

docker compose up -d
в директории /root/nginx.

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

В качестве прокси-сервера используется контейнер nginx с поддержкой Certbot для автоматического получения и обновления SSL-сертификатов.

Конфигурация прокси сервера:

  • Изображение: jonasal/nginx-certbot:latest.

  • Электронная почта для Certbot: hkadm@hostkey.com.

  • Конфигурация пользователя размещается в /data/nginx/user_conf.d.

  • Сертификаты хранятся в томе nginx_secrets, который монтируется в /etc/letsencrypt внутри контейнера.

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

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

  • Директория {{ home_dir }}/{{ web_lgsm_dir }} имеет права 0755 и принадлежит пользователю {{ lgsm_user }}.

  • Скрипт install.sh внутри репозитория имеет права 0755.

  • Файл сервиса web-lgsm.service имеет права 0644 и принадлежит пользователю root.

  • Директория /root/nginx имеет права 0644.

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

Управление сервисом web-lgsm осуществляется через systemd.

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

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

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

    systemctl start web-lgsm.service
    

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

    systemctl stop web-lgsm.service
    

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

    systemctl restart web-lgsm.service
    

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

    systemctl status web-lgsm.service
    

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

    systemctl enable web-lgsm.service
    

Сервис настроен на автоматический перезапуск (Restart=always) с задержкой в 3 секунды (RestartSec=3) в случае сбоя.

Для управления контейнерами Docker используются команды:

  • Запуск всех контейнеров:

    docker compose up -d
    

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

    docker compose down
    

  • Перезапуск контейнеров:

    docker compose restart
    

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