Полный гайд по установке Pterodactyl Panel и Wings

1. Выбор операционной системы

Pterodactyl поддерживает множество Linux-дистрибутивов. Выбирайте ту ОС, с которой вам проще работать.

⚠️ Важно: Pterodactyl не поддерживает большинство систем на базе OpenVZ из-за проблем с Docker. На таких системах установка, скорее всего, не удастся.

ОС Версия Поддержка Примечания
Ubuntu 22.04 Требуются дополнительные репозитории для PHP
Ubuntu 24.04 MariaDB можно установить без скрипта настройки репозитория
RHEL / Rocky / AlmaLinux 8 Требуются дополнительные репозитории
RHEL / Rocky / AlmaLinux 9 -
Debian 11 См. зависимости Debian
Debian 12 См. зависимости Debian
Debian 13 См. зависимости Debian

2. Зависимости

Pterodactyl требует следующие компоненты:

  • PHP 8.2 или 8.3 с расширениями: cli, openssl, gd, mysql, PDO, mbstring, tokenizer, bcmath, xml или dom, curl, zip, fpm (если используете NGINX)
  • MySQL 5.7.22+ (рекомендуется 8) или MariaDB 10.2+
  • Redis (redis-server)
  • Веб-сервер: Apache, NGINX, Caddy и т.п.
  • Утилиты: curl, tar, unzip, git
  • Composer v2

Пример установки зависимостей (Ubuntu 22.04/24.04)

# Устанавливаем дополнительные утилиты
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg

# Добавляем репозиторий PHP
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

# Добавляем официальный репозиторий Redis
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

# Обновляем список пакетов
apt update

# Устанавливаем зависимости
apt -y install php8.3 php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server

3. Установка Composer

Composer — менеджер зависимостей PHP. Он необходим для работы панели.

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

4. Загрузка файлов панели

  1. Создаём папку для панели:
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
  1. Скачиваем и распаковываем архив с последней версией:
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/

5. Настройка базы данных

Создаём базу данных и пользователя:

# Для MariaDB (по умолчанию при установке Pterodactyl)
mariadb -u root -p

# Для MySQL
mysql -u root -p

CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'yourPassword';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
exit

6. Установка и настройка панели

  1. Копируем файл окружения и устанавливаем зависимости:
cp .env.example .env
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader
php artisan key:generate --force

⚠️ Важно: Сохраните APP_KEY из .env. Без него данные будут безвозвратно потеряны:

grep APP_KEY /var/www/pterodactyl/.env
  1. Настройка окружения панели:
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
  1. Миграция базы данных и добавление Nests & Eggs:
php artisan migrate --seed --force
  1. Создание первого пользователя (администратора):
php artisan p:user:make
  1. Настройка прав на файлы панели:
# Для Ubuntu/Debian
chown -R www-data:www-data /var/www/pterodactyl/*

# Для RHEL / Rocky / AlmaLinux + NGINX
chown -R nginx:nginx /var/www/pterodactyl/*

# Для RHEL / Rocky / AlmaLinux + Apache
chown -R apache:apache /var/www/pterodactyl/*

7. Настройка очередей (Queue Listeners)

  1. Добавляем cronjob для обработки задач:
sudo crontab -e
# Вставляем строку:
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
  1. Создаём systemd-сервис для очередей /etc/systemd/system/pteroq.service:
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target
  1. Включаем и запускаем сервис:
sudo systemctl enable --now pteroq.service
sudo systemctl enable --now redis-server

8. Настройка веб-сервера (NGINX пример)

  1. Удаляем дефолтный конфиг:
rm /etc/nginx/sites-enabled/default
  1. Создаём новый конфиг /etc/nginx/sites-available/pterodactyl.conf (замените <domain> на ваш домен):
server {
    listen 80;
    server_name <domain>;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name <domain>;

    root /var/www/pterodactyl/public;
    index index.php;

    client_max_body_size 100m;
    client_body_timeout 120s;
    sendfile off;

    ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht { deny all; }
}
  1. Включаем конфигурацию и перезапускаем NGINX:
sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
sudo systemctl restart nginx

9. Установка Wings (демон серверов)

9.1. Проверка совместимости

  • Wings работает только на Linux.
  • Нужен Docker (KVM гарантированно поддерживается, OpenVZ/LXC обычно нет).
systemd-detect-virt
sudo dmidecode -s system-manufacturer

9.2. Установка Docker

curl -sSL https://get.docker.com/ | CHANNEL=stable bash
sudo systemctl enable --now docker

9.3. Проверка swap (опционально)

  • Для Linux ядра 6.1+ swap включён по умолчанию.
  • Если swap не работает, добавьте swapaccount=1 в /etc/default/grub и выполните:
sudo update-grub
sudo reboot

9.4. Установка Wings

sudo mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
sudo chmod u+x /usr/local/bin/wings

10. Настройка Wings

  1. В панели создаём узел (Node) и копируем config.yml в /etc/pterodactyl.
  2. Для запуска Wings в режиме отладки:
sudo wings --debug
  1. Демонизация через systemd /etc/systemd/system/wings.service:
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service

[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target
  1. Запуск и автозагрузка:
sudo systemctl enable --now wings

11. Настройка Allocations (IP + Port для серверов)

  • Узнать IP сервера: hostname -I | awk '{print $1}'
  • Добавить Allocation в панели: Nodes > ваш узел > Allocation.