Панель управления 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 устанавливается с использованием последней версии бинарного файла, настраивается с помощью пользовательского файла окружения и интегрируется с локальными системными службами.
-
Подготовка системы:
-
В кэш
aptприменяются обновления. -
Добавляются необходимые репозитории, включая
ppa:ondrej/phpдля PHP 8.3 и официальный репозиторий Redis.
-
-
Установка зависимостей:
- Устанавливаются следующие пакеты:
php8.3и его расширения (cli,common,gd,mysql,mbstring,bcmath,xml,curl,zip,fpm),nginx,mariadb-server,redis-server,git,composer,curl,unzipиcron.
- Устанавливаются следующие пакеты:
-
Развертывание приложения:
-
Архив
panel.tar.gzс последней версией загружается с релизов GitHub Pterodactyl. -
Архив распаковывается в
/var/www/pterodactyl. -
Зависимости Composer устанавливаются в режиме продакшена (
--no-dev,--optimize-autoloader).
-
-
Настройка:
-
Файл
.env.exampleкопируется в.env. -
Ключ
APP_KEYгенерируется с помощью командыphp artisan key:generate. -
Переменные окружения устанавливаются автоматически для настройки URL панели, часового пояса и учетных данных базы данных.
-
-
Инициализация базы данных:
-
Создается база данных MariaDB с именем
panel. -
Создается пользователь
pterodactylс полными привилегиями на базу данныхpanel. -
Выполняются миграции и заполнение тестовыми данными (seeding) базы данных.
-
-
Создание учетной записи администратора:
- Создается первая учетная запись администратора с именем пользователя
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 для контейнера прокси.
-
Запуск служб:
-
Остановка служб:
-
Перезапуск служб:
-
Включение служб при загрузке:
-
Управление Docker-контейнером: Перейдите в
/root/nginxи выполните: -
Обновление приложения: Для обновления бинарного файла панели Pterodactyl загрузите последний релиз в
/tmp, распакуйте его в/var/www/pterodactylи выполните: -
Плановые задачи: Планировщик приложения управляется плановой задачей cron по адресу
/etc/cron.d/pterodactyl, которая выполняет командуphp /var/www/pterodactyl/artisan schedule:runкаждую минуту.