Обзор развертывания панели управления Pterodactyl на сервере¶
Предварительные требования и базовые условия¶
Для развертывания панели управления Pterodactyl требуется сервер с операционной системой Ubuntu 22.04 (Jammy). Для установки зависимостей, настройки сервисов и управления правами доступа к файлам необходимы права root. Требуется наличие следующих компонентов:
-
Операционная система: Ubuntu 22.04 (Jammy)
-
Привилегии: Доступ root
-
Домен: Поддомен в зоне
hostkey.in -
Порты:
-
Порт
80и443для веб-трафика (HTTP/HTTPS) -
Порт
8000для внутренней коммуникации приложения -
Порт
12333для внешнего доступа к прокси Wings -
Порт
3306для MariaDB -
Порт
6379для Redis
FQDN конечной панели¶
Полное доменное имя (FQDN) для панели Pterodactyl следует формату: pterodactyl<Server ID>.hostkey.in
Приложение доступно через HTTPS на порту 443 и через прокси Wings на порту 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 -
Сертификаты SSL:
/etc/letsencrypt/live/pterodactyl<Server ID>.hostkey.in -
Сервисы Systemd:
/etc/systemd/system/pteroq.service -
Задачи Cron:
/etc/cron.d/pterodactyl
Процесс установки приложения¶
Панель Pterodactyl устанавливается с использованием последней версии архива из официального репозитория. Процесс установки включает следующие шаги:
-
Подготовка системы: Обновление кэша пакетов и установка необходимых зависимостей, включая
nginx,mariadb-server,redis-server,php8.2иcomposer. -
Настройка репозиториев: Добавление PPA Ondrej PHP и официального репозитория Redis для обеспечения установки корректных версий PHP и Redis.
-
Активация сервисов: Включение и запуск сервисов
php8.2-fpm,mariadb,redis-server,nginxиcron. -
Развертывание приложения:
-
Скачивание последнего архива
panel.tar.gzс GitHub. -
Распаковка архива в
/var/www/pterodactyl. -
Создание необходимых директорий (
storage,bootstrap,bootstrap/cache) и назначение владельцаwww-data.
-
-
Установка зависимостей: Запуск команды
composer installдля установки PHP-зависимостей. -
Инициализация базы данных:
-
Настройка MariaDB для установки пароля root.
-
Создание базы данных
panel. -
Выполнение миграций базы данных и заполнение начальными данными (seed).
-
-
Создание пользователя: Создание первого административного пользователя с электронной почтой, именем пользователя и паролем, определенными в конфигурации.
-
Настройка воркера очереди: Установка и включение сервиса systemd
pteroqдля обработки фоновых задач. -
Настройка планировщика: Настройка задачи cron для запуска планировщика Laravel каждую минуту.
Права доступа и безопасность¶
Безопасность обеспечивается через изоляцию сервисов, правила межсетевого экрана и строгие права доступа к файлам.
-
Межсетевой экран (Firewall): Сервер разрешает трафик на портах
80,443,8000,12333,3306и6379. -
Пользователи:
-
Веб-сервер и файлы приложения принадлежат пользователю и группе
www-data. -
Сервис
pteroqработает от имени пользователяwww-data. -
Пользователь
rootуправляет системными конфигурациями и задачами cron. -
Ограничения:
-
Доступ к скрытым файлам (начинающимся с
.) запрещен в конфигурации Nginx. -
Переменная окружения
HTTP_PROXYочищается в конфигурации PHP-FPM для предотвращения атак HTTPoxy. -
Для всего веб-трафика принудительно используется SSL.
Базы данных¶
Приложение использует локальный экземпляр MariaDB для хранения данных.
-
Метод подключения: Локальное TCP-подключение.
-
Место хранения: Управляется сервисом
mariadbна хосте. -
Конфигурация:
-
Имя базы данных:
panel -
Хост:
127.0.0.1 -
Порт:
3306 -
Имя пользователя:
root -
Пароль: Определен в системной конфигурации.
Redis используется для кэширования и управления очередями.
-
Хост:
127.0.0.1 -
Порт:
6379 -
Пароль: Не установлен (null).
Контейнеры Docker и их развертывание¶
Для управления прокси Nginx и сертификатами SSL через Certbot используется контейнер Docker.
-
Образ контейнера:
jonasal/nginx-certbot:latest -
Метод развертывания: Docker Compose
-
Расположение файла Compose:
/root/nginx/compose.yml -
Томы (Volumes):
-
nginx_secrets: Монтирован в/etc/letsencryptдля хранения сертификатов. -
/data/nginx/user_conf.d: Монтирован в/etc/nginx/user_conf.dдля пользовательских конфигураций. -
/var/www/pterodactyl/public: Монтирован только для чтения в/var/www/pterodactyl/public. -
Режим сети: Host
-
Политика перезапуска:
unless-stopped
Прокси-серверы¶
В развертывании используется Nginx в качестве обратного прокси с завершением SSL.
-
Конфигурация Nginx:
-
Специальная конфигурация сайта находится в
/etc/nginx/sites-available/pterodactyl.conf. -
HTTP-трафик на порту
80перенаправляется на HTTPS. -
PHP-запросы проксируются на локальный сокет PHP-FPM по адресу
unix:/run/php/php8.2-fpm.sock. -
SSL/TLS:
-
Сертификаты получаются и управляются через Certbot в контейнере Docker.
-
SSL включен для домена
pterodactyl<Server ID>.hostkey.in. -
Принудительно используются протоколы TLS
TLSv1.2иTLSv1.3. -
Прокси Wings:
-
Отдельная конфигурация Nginx обрабатывает трафик демона Wings на порту
12333. -
Эта конфигурация проксирует запросы на
http://host.docker.internal:8000. -
Включена поддержка WebSocket с заголовками обновления.
Настройки прав доступа¶
Права доступа к файлам и директориям строго настроены для обеспечения безопасности и корректной работы:
-
Директория приложения:
/var/www/pterodactylпринадлежитwww-data:www-dataс правами0755. -
Хранилище и кэш: Поддиректории
storage,bootstrapиbootstrap/cacheпринадлежатwww-data:www-dataс правами0755. -
Конфигурация Nginx: Файлы в
/etc/nginx/sites-availableи/etc/nginx/sites-enabledпринадлежатroot:rootс правами0644. -
Docker Compose: Файл compose по адресу
/root/nginx/compose.ymlпринадлежитroot:rootс правами0644.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и места хранения данных включают:
-
Файл окружения:
/var/www/pterodactyl/.env -
Конфигурация сайта Nginx:
/etc/nginx/sites-available/pterodactyl.conf -
Конфигурация прокси Wings: Определена внутри контейнера Docker или в конфигурации Nginx хоста для порта
12333. -
Сервис Systemd:
/etc/systemd/system/pteroq.service -
Задача Cron:
/etc/cron.d/pterodactyl -
Маркер инициализации:
/var/www/pterodactyl/.ansible_ptero_initialized
Доступные порты для подключения¶
Следующие порты настроены для внешнего и внутреннего доступа:
-
Порт 80: HTTP (перенаправляет на HTTPS).
-
Порт 443: HTTPS (Панель Pterodactyl).
-
Порт 12333: HTTPS (Прокси Wings).
-
Порт 8000: Внутренний порт приложения (проксируется).
-
Порт 3306: MariaDB (только локально).
-
Порт 6379: Redis (только локально).
Запуск, остановка и обновление¶
Управление сервисами осуществляется через systemd для нативных сервисов и docker compose для контейнера прокси.
Нативные сервисы:
-
Запуск/Остановка/Перезапуск Nginx:
-
Запуск/Остановка/Перезапуск MariaDB:
-
Запуск/Остановка/Перезапуск Redis:
-
Запуск/Остановка/Перезапуск PHP-FPM:
-
Запуск/Остановка/Перезапуск воркера очереди:
Контейнер Docker:
- Запуск/Остановка/Перезапуск Nginx-Certbot:
Обновление приложения:
-
Очистка и кэширование конфигурации:
-
Запуск миграций (если изменилась схема):