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

Панель управления Pterodactyl: Обзор развертывания на сервере

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

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

  • Операционная система: Ubuntu 22.04 LTS (Релиз: jammy). Процесс установки завершится ошибкой на других дистрибутивах или версиях.

  • Привилегии: Для установки системных пакетов, управления службами systemd и настройки межсетевого экрана требуются права root или sudo.

  • Часовой пояс: Приложение настроено на использование часового пояса Europe/Amsterdam.

  • Требуемые порты:

    • Порт 80 (HTTP) для первоначального доступа и валидации SSL-сертификатов.

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

    • Порт 12333 (Прокси Wings) для коммуникации управления игровыми серверами.

    • Порт 3306 (MariaDB) для подключения к базе данных.

    • Порт 6379 (Redis) для кэширования и обработки очереди задач.

    • Порт 9000 (PHP-FPM) для обработки PHP (внутренний).

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

Панель Pterodactyl доступна через домен пользовательского назначения в инфраструктуре hostkey.in. Полное доменное имя (FQDN) следует конкретной схеме именования на основе идентификатора сервера.

  • Формат FQDN: pterodactyl<Server ID>.hostkey.in

  • URL доступа: https://pterodactyl<Server ID>.hostkey.in

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

Файлы приложения, конфигурация и данные хранятся в специфических местах файловой системы хоста.

  • Корневой каталог приложения: /var/www/pterodactyl

  • Web-корень (Публичный): /var/www/pterodactyl/public

  • Каталог хранилища (Storage): /var/www/pterodactyl/storage

  • Каталог инициализации (Bootstrap): /var/www/pterodactyl/bootstrap

  • Конфигурация Nginx: /etc/nginx/sites-available/pterodactyl.conf

  • SSL-сертификаты: Управляются внутри Docker-контейнера по пути /etc/letsencrypt/live/pterodactyl<Server ID>.hostkey.in

  • Плановые задачи (Cron Jobs): /etc/cron.d/pterodactyl

  • Файлы служб systemd: /etc/systemd/system/pteroq.service

  • Конфигурация Docker Compose: /root/nginx/compose.yml

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

Панель Pterodactyl устанавливается с использованием последней версии бинарного файла, настраивается с помощью пользовательского файла окружения и интегрируется с локальными системными службами.

  1. Подготовка системы:

    • В кэш apt применяются обновления.

    • Добавляются необходимые репозитории, включая ppa:ondrej/php для PHP 8.3 и официальный репозиторий Redis.

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

    • Устанавливаются следующие пакеты: php8.3 и его расширения (cli, common, gd, mysql, mbstring, bcmath, xml, curl, zip, fpm), nginx, mariadb-server, redis-server, git, composer, curl, unzip и cron.
  3. Развертывание приложения:

    • Архив panel.tar.gz с последней версией загружается с релизов GitHub Pterodactyl.

    • Архив распаковывается в /var/www/pterodactyl.

    • Зависимости Composer устанавливаются в режиме продакшена (--no-dev, --optimize-autoloader).

  4. Настройка:

    • Файл .env.example копируется в .env.

    • Ключ APP_KEY генерируется с помощью команды php artisan key:generate.

    • Переменные окружения устанавливаются автоматически для настройки URL панели, часового пояса и учетных данных базы данных.

  5. Инициализация базы данных:

    • Создается база данных MariaDB с именем panel.

    • Создается пользователь pterodactyl с полными привилегиями на базу данных panel.

    • Выполняются миграции и заполнение тестовыми данными (seeding) базы данных.

  6. Создание учетной записи администратора:

    • Создается первая учетная запись администратора с именем пользователя admin и адресом электронной почты, указанным в переменных развертывания.

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

Конфигурации безопасности включают правила межсетевого экрана, права пользователей и принудительное использование SSL.

  • Пользователь веб-сервера: Все файлы и каталоги приложения под /var/www/pterodactyl принадлежат пользователю и группе www-data.

  • Принудительное использование SSL:

    • SSL включен с использованием сертификатов Let's Encrypt через certbot.

    • HTTP-трафик на порту 80 автоматически перенаправляется на HTTPS на порт 443.

    • Принудительно используются современные протоколы TLS (TLSv1.2, TLSv1.3) и надежные наборы шифров.

  • Межсетевой экран и доступ:

    • Сайт по умолчанию Nginx отключен.

    • Доступ к скрытым файлам (начинающимся с .) запрещен.

    • Служба pteroq выполняется под пользователем www-data.

  • Безопасность PHP:

    • Переменная окружения HTTP_PROXY явно установлена в пустое значение для предотвращения уязвимости HTTPoxy.

Базы данных

Приложение использует локальный экземпляр MariaDB для постоянного хранения данных и Redis для кэширования и управления очередями.

  • Движок базы данных: MariaDB (совместимый с MySQL).

  • Имя базы данных: panel.

  • Хост базы данных: 127.0.0.1.

  • Порт базы данных: 3306.

  • Пользователь базы данных: pterodactyl.

  • Драйвер кэша и очереди: Redis.

  • Хост Redis: 127.0.0.1.

  • Порт Redis: 6379.

  • Пароль Redis: Не настроен (null).

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

Docker-контейнер развернут для управления SSL-сертификатами и проксированием трафика для API-конца Wings.

  • Образ контейнера: jonasal/nginx-certbot:latest.

  • Метод развертывания: docker compose с использованием файла по пути /root/nginx/compose.yml.

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

  • Томы (Volumes):

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

    • /data/nginx/user_conf.d монтирован в /etc/nginx/user_conf.d.

    • /var/www/pterodactyl/public монтирован в режиме только для чтения в /var/www/pterodactyl/public.

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

    • CERTBOT_EMAIL: hkadm@hostkey.com.
  • Политика перезапуска: unless-stopped.

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

Активны две конфигурации прокси: одна на системе хоста для основного интерфейса панели и одна внутри Docker-контейнера для прокси Wings.

Nginx хоста (Панель)

  • Файл конфигурации: /etc/nginx/sites-available/pterodactyl.conf.

  • Порты: Слушает порты 80 и 443.

  • Корневой каталог: /var/www/pterodactyl/public.

  • Обработчик PHP: FastCGI через Unix-сокет /run/php/php8.3-fpm.sock.

  • SSL-сертификаты: Автоматически управляются Certbot через плагин Nginx.

Nginx Docker (Прокси Wings)

  • Шаблон конфигурации: templates/nginx.conf.j2 (применяется внутри контейнера).

  • Порты: Слушает порт 80 (редирект) и порт 443 (SSL).

  • SSL-сертификаты: /etc/letsencrypt/live/pterodactyl<Server ID>.hostkey.in.

  • Прокси-бэкенд: Пересылает PHP-запросы на 127.0.0.1:9000 на хосте.

  • HTTP/2: Включен.

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

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

Путь Владелец Группа Разрешения
/var/www/pterodactyl www-data www-data 0755 (Рекурсивно)
/var/www/pterodactyl/storage www-data www-data 0755
/var/www/pterodactyl/bootstrap www-data www-data 0755
/var/www/pterodactyl/bootstrap/cache www-data www-data 0755
/root/nginx root root 0755
/etc/nginx/sites-available/pterodactyl.conf root root 0644
/etc/cron.d/pterodactyl root root 0644

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

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

  • Окружение приложения: /var/www/pterodactyl/.env

  • Конфигурация сайта Nginx: /etc/nginx/sites-enabled/pterodactyl.conf

  • Плановая задача (Cron Job): /etc/cron.d/pterodactyl

  • Служба рабочего процесса очереди: /etc/systemd/system/pteroq.service

  • Docker Compose: /root/nginx/compose.yml

  • Конфигурация прокси Wings: Управляется в контексте Docker-контейнера.

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

Следующие порты открыты и настроены для конкретных служб на сервере.

  • 80: HTTP (Перенаправление на HTTPS).

  • 443: HTTPS (Доступ к панели Pterodactyl).

  • 12333: Прокси Wings (Управление игровыми серверами).

  • 3306: MariaDB (Внутренний доступ к базе данных).

  • 6379: Redis (Внутренний доступ к кэшу/очереди).

  • 9000: PHP-FPM (Внутренняя коммуникация процессов).

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

Приложение полагается на systemd для управления фоновыми службами и на docker compose для контейнера прокси.

  • Запуск служб:

    systemctl start php8.3-fpm
    systemctl start mariadb
    systemctl start redis-server
    systemctl start nginx
    systemctl start pteroq
    

  • Остановка служб:

    systemctl stop php8.3-fpm
    systemctl stop mariadb
    systemctl stop redis-server
    systemctl stop nginx
    systemctl stop pteroq
    

  • Перезапуск служб:

    systemctl restart nginx
    systemctl restart pteroq
    

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

    systemctl enable php8.3-fpm
    systemctl enable mariadb
    systemctl enable redis-server
    systemctl enable nginx
    systemctl enable pteroq
    

  • Управление Docker-контейнером: Перейдите в /root/nginx и выполните:

    docker compose up -d
    

  • Обновление приложения: Для обновления бинарного файла панели Pterodactyl загрузите последний релиз в /tmp, распакуйте его в /var/www/pterodactyl и выполните:

    cd /var/www/pterodactyl
    composer install --no-dev --optimize-autoloader
    php artisan migrate --force
    php artisan config:clear
    php artisan config:cache
    php artisan route:clear
    php artisan view:clear
    

  • Плановые задачи: Планировщик приложения управляется плановой задачей cron по адресу /etc/cron.d/pterodactyl, которая выполняет команду php /var/www/pterodactyl/artisan schedule:run каждую минуту.

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