Обзор развертывания панели управления 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 устанавливается вручную с использованием последнего архива релиза. Процесс включает:
-
Установку системных зависимостей, включая PHP 8.2, MariaDB, Redis, Nginx и Composer.
-
Загрузку последнего архива
panel.tar.gzиз официального репозитория GitHub. -
Распаковку архива в
/var/www/pterodactyl. -
Запуск Composer для установки зависимостей.
-
Генерацию ключа приложения (
APP_KEY). -
Настройку подключения к базе данных и выполнение миграций.
-
Создание учетной записи администратора.
Установка использует 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(только для чтения)
Контейнер запускается с помощью команды:
выполненной из директории/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:
-
Запуск/Остановка/Перезапуск MariaDB:
-
Запуск/Остановка/Перезапуск Redis:
-
Запуск/Остановка/Перезапуск PHP-FPM:
-
Запуск/Остановка/Перезапуск воркера очереди:
-
Запуск/Остановка/Перезапуск контейнера Docker Nginx:
-
Обновление приложения: Для обновления панели Pterodactyl загрузите последний релиз, замените файлы в
/var/www/pterodactylи выполните: