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

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

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

Для развертывания требуется сервер с операционной системой Ubuntu 22.04 (Jammy). В процессе настройки должны быть установлены или присутствовать следующие компоненты:

  • Операционная система: Ubuntu 22.04 (Jammy)

  • Привилегии: Доступ root или права sudo

  • Домен: Действующее доменное имя, настроенное на указание на IP-адрес сервера

  • Порты:

  • Порт 80 (HTTP) для начальной настройки и валидации Let's Encrypt

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

  • Порт 12333 (Wings API) для коммуникации с узлами (nodes)

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

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

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

Полное доменное имя (FQDN) для панели Pterodactyl следует формату:

pterodactyl<Server ID>.hostkey.in

Панель доступна через HTTPS на порту 443. Wings API доступен на порту 12333.

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

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

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

  • Публичная директория: /var/www/pterodactyl/public

  • Директория хранения: /var/www/pterodactyl/storage

  • Кэш Bootstrap: /var/www/pterodactyl/bootstrap/cache

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

  • Docker Compose для Nginx: /root/nginx/compose.yml

  • Служба Systemd для очереди: /etc/systemd/system/pteroq.service

  • Задача Cron: /etc/cron.d/pterodactyl

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

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

Панель Pterodactyl устанавливается вручную с использованием последнего архива релиза. Процесс включает:

  1. Установку системных зависимостей, включая PHP 8.2, MariaDB, Redis, Nginx и Composer.

  2. Загрузку последнего архива panel.tar.gz из официального репозитория GitHub.

  3. Распаковку архива в /var/www/pterodactyl.

  4. Запуск Composer для установки зависимостей.

  5. Генерацию ключа приложения (APP_KEY).

  6. Настройку подключения к базе данных и выполнение миграций.

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

Установка использует PHP 8.2 со следующими расширениями:

  • php8.2-cli

  • php8.2-common

  • php8.2-fpm

  • php8.2-mbstring

  • php8.2-xml

  • php8.2-mysql

  • php8.2-bcmath

  • php8.2-zip

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

Меры безопасности реализованы через правила межсетевого экрана, права пользователей и SSL-шифрование.

  • Межсетевой экран (Firewall): Сервер должен разрешать трафик на портах 80, 443, 12333, 3306 и 6379.

  • Права пользователей: Пользователь веб-сервера www-data владеет директорией приложения и её содержимым.

  • SSL/TLS: SSL включен с использованием сертификатов Let's Encrypt. Конфигурация требует TLSv1.2 и TLSv1.3 с надежными наборами шифров.

  • Защита от HTTPoxy: Переменная окружения HTTP_PROXY явно очищается в конфигурации Nginx.

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

Базы данных

Приложение использует локальную базу данных MariaDB для хранения данных.

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

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

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

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

  • Метод подключения: Локальный сокет или TCP-подключение с сервера приложения.

База данных инициализируется в процессе установки, и база данных panel создается автоматически.

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

Для управления Nginx и сертификатами Let's Encrypt используется контейнер Docker.

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

  • Расположение файла 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 (только для чтения)

Контейнер запускается с помощью команды:

docker compose up -d
выполненной из директории /root/nginx.

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

Nginx выступает в роли обратного прокси для панели Pterodactyl и Wings API.

  • Прокси панели:

  • Слушает порт 80 (перенаправляет на HTTPS) и порт 443.

  • Маршрутизирует PHP-запросы на локальный сокет PHP-FPM по адресу unix:/run/php/php8.2-fpm.sock.

  • Раздает статические файлы из /var/www/pterodactyl/public.

  • Прокси Wings API:

  • Слушает порт 12333 с включенным SSL.

  • Проксирует запросы на http://host.docker.internal:8000.

  • Поддерживает апгрейд WebSocket для коммуникации в реальном времени.

  • Конфигурация SSL:

  • Сертификаты управляются Certbot внутри контейнера Docker.

  • Пути к сертификатам:

    • Полный цепочка (Fullchain): /etc/letsencrypt/live/pterodactyl<Server ID>.hostkey.in/fullchain.pem

    • Приватный ключ: /etc/letsencrypt/live/pterodactyl<Server ID>.hostkey.in/privkey.pem

    • Цепочка (Chain): /etc/letsencrypt/live/pterodactyl<Server ID>.hostkey.in/chain.pem

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

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

  • Директория приложения: /var/www/pterodactyl принадлежит www-data:www-data с правами 0755.

  • Хранилище и кэш: Поддиректории storage, bootstrap и bootstrap/cache принадлежат www-data:www-data с правами 0755.

  • Конфигурация Nginx: /etc/nginx/sites-available/pterodactyl.conf имеет права 0644.

  • Служба Systemd: /etc/systemd/system/pteroq.service имеет права 0644.

  • Задача Cron: /etc/cron.d/pterodactyl имеет права 0644.

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

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

  • Файл окружения: /var/www/pterodactyl/.env

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

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

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

  • Задача Cron: /etc/cron.d/pterodactyl

Файл .env содержит следующие критические настройки:

Параметр Значение
APP_ENV production
APP_DEBUG false
APP_URL https://pterodactyl<Server ID>.hostkey.in
DB_CONNECTION mysql
DB_HOST 127.0.0.1
DB_PORT 3306
DB_DATABASE panel
REDIS_HOST 127.0.0.1
REDIS_PORT 6379
CACHE_DRIVER file
QUEUE_CONNECTION redis

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

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

  • Порт 80: HTTP-трафик (перенаправляет на HTTPS)

  • Порт 443: HTTPS-трафик для панели Pterodactyl

  • Порт 12333: Wings API (SSL включен)

  • Порт 3306: MariaDB (только локальный доступ)

  • Порт 6379: Redis (только локальный доступ)

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

Службы управляются с помощью systemd и docker compose.

  • Запуск/Остановка/Перезапуск Nginx:

    systemctl start nginx
    systemctl stop nginx
    systemctl restart nginx
    

  • Запуск/Остановка/Перезапуск MariaDB:

    systemctl start mariadb
    systemctl stop mariadb
    systemctl restart mariadb
    

  • Запуск/Остановка/Перезапуск Redis:

    systemctl start redis-server
    systemctl stop redis-server
    systemctl restart redis-server
    

  • Запуск/Остановка/Перезапуск PHP-FPM:

    systemctl start php8.2-fpm
    systemctl stop php8.2-fpm
    systemctl restart php8.2-fpm
    

  • Запуск/Остановка/Перезапуск воркера очереди:

    systemctl start pteroq
    systemctl stop pteroq
    systemctl restart pteroq
    

  • Запуск/Остановка/Перезапуск контейнера Docker Nginx:

    cd /root/nginx
    docker compose up -d
    docker compose down
    

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

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

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