Когда игровой сервер один, им можно управлять по SSH: подключились, отредактировали конфиг, вышли. Но как только серверов становится два, три или десять, а к администрированию подключаются друзья или коллеги, такой подход перестает работать. Нужен интерфейс, в котором видно потребление ресурсов, есть консоль, файловый менеджер, бэкапы и разграничение прав.
Pterodactyl – это бесплатная панель, позволяющая упростить процесс управления игровыми серверами. Ключевая идея панели – изоляция. Каждый игровой сервер запускается в собственном Docker-контейнере с жесткими лимитами по оперативной памяти, процессору и диску – и получает удобный веб-интерфейс. Один упавший или «съевший» всю память сервер не мешает соседним, а пользователь панели физически не может выйти за пределы своего контейнера и добраться до файлов хост-системы.
В этой статье разберем, как устроена панель и как развернуть Pterodactyl на виртуальном сервере Beget с нуля – вместе с первым сервером Minecraft.
Основные возможности панели
- Поддержка множества игр – быстрый запуск игровых серверов с помощью готовых шаблонов (Eggs) и возможность добавления новых шаблонов.
- Удобное управление через веб-панель – запуск и настройка серверов, доступ к консоли, файлам и параметрам без постоянного использования командной строки.
- Контроль и изоляция ресурсов – настройка ограничений CPU, RAM и дискового пространства, каждый сервер работает в своей защищенной среде.
- Мониторинг статистики серверов в реальном времени – отображение графиков использования ресурсов (CPU, RAM, диск, сеть) для каждого сервера.
- Гибкое управление доступом – управление пользователями, правами доступа.
- Масштабируемость – возможность подключить несколько VPS с Wings и управлять всеми игровыми серверами через единую панель Pterodactyl.
При установке Pterodactyl уже есть несколько предустановленных конфигураций для популярных игр и приложений:
- Minecraft, включая Spigot, Sponge, BungeeCord, Waterfall
- Rust
- TeamSpeak
- Mumble
- Team Fortress 2
- Counter-Strike 2
- Garry's Mod
- ARK: Survival Evolved
Дополнительные игры и конфигурации можно установить через официальный репозиторий Eggs.
Panel и Wings
Pterodactyl состоит из двух самостоятельных компонентов, и это важно понимать до установки.
Panel – веб-приложение на Laravel. Именно его вы открываете в браузере. Панель хранит данные о пользователях, серверах и нодах в MySQL/MariaDB, использует Redis для кеша и очередей и работает за веб-сервером. Сами игровые серверы панель не запускает – она только отдает команды.
Wings – демон на Go, который устанавливается на каждую машину, где физически работают игровые серверы. Wings общается с Docker: создает контейнеры, следит за ресурсами, отдает логи и файлы, принимает SFTP-подключения. Панель и Wings общаются по HTTPS и WebSocket.
Такое разделение позволяет масштабироваться: панель может стоять на одном небольшом VPS, а игровые серверы – на нескольких мощных машинах. В терминологии Pterodactyl они называются нодами. Для домашнего или небольшого проекта Panel и Wings спокойно уживаются на одном сервере – именно этот вариант мы и разберем.
Установка Pterodactyl: подготовка сервера
В данном примере установка будет производиться на сервере с Ubuntu 24.04 в качестве операционной системы.
После создания сервера подключитесь к нему по SSH и обновите пакеты:
apt update && apt upgrade -yДальше желательно направить на IP-адрес сервера домен. Понадобятся две A-записи:
panel.betutorial.ru– адрес самой панели;node.betutorial.ru– адрес ноды, к которой будет обращаться Wings.
Обе записи могут указывать на один и тот же IP. Отдельный домен для ноды нужен потому, что панель и Wings используют разные SSL-сертификаты и разные порты.
Установка зависимостей
Подключите репозитории с актуальными версиями PHP и Redis:
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
curl -fsSL https://packages.redis.io/gpg | 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" | tee /etc/apt/sources.list.d/redis.list
apt updateУстановите PHP, базу данных, веб-сервер и вспомогательные утилиты:
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Установите Composer – менеджер зависимостей PHP:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerСоздание базы данных
Запустите защищенную настройку MariaDB и задайте пароль root (если он еще не задан):
mariadb-secure-installationЗатем создайте базу и пользователя для панели:
mariadb -u root -pCREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'ваш_надежный_пароль';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exitЗагрузка и настройка панели
Скачайте файлы панели:
mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
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/Подготовьте конфигурацию и установите зависимости:
cp .env.example .env
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader
php artisan key:generate --forceAPP_KEY из файла .env в надежном месте. Он используется в качестве ключа шифрования для всех данных, которые необходимо хранить в безопасности (например, ключи API). Если вы его потеряете, все зашифрованные данные будут безвозвратно утеряны, даже при наличии резервных копий базы данных.Основная среда Pterodactyl легко настраивается с помощью нескольких встроенных в приложение команд CLI.
Первая команда настраивает окружение: URL панели, часовой пояс, драйверы кеша, сессий и очередей – на все три вопроса выбирайте Redis.
php artisan p:environment:setupВторая команда запрашивает параметры подключения к базе данных. Хост – 127.0.0.1, порт – 3306, база – panel, пользователь – pterodactyl, пароль – тот, что вы задали на этапе создания базы данных.
php artisan p:environment:databaseТретья настраивает отправку почты – она нужна для писем о сбросе пароля и приглашений. Данный шаг можно отложить, но без настроенного SMTP не будут работать письма о сбросе пароля и приглашения – по умолчанию панель пытается отправлять через локальный sendmail, которого на чистом VPS нет.
php artisan p:environment:mailСоздайте структуру базы данных и загрузите стандартный набор яиц:
php artisan migrate --seed --forceEgg (яйцо) – шаблон, описывающий, как установить и запустить конкретную игру: Docker-образ, что скачать, какие переменные показать пользователю. Nest (гнездо) – группа яиц.
Создайте учетную запись администратора:
php artisan p:user:makeПоследним шагом в процессе настройки является настройка правильных прав доступа к файлам панели, чтобы веб-сервер мог корректно их использовать:
chown -R www-data:www-data /var/www/pterodactyl/*Планировщик и обработчик очередей
Панель использует cron для расписаний и отдельный процесс для фоновых задач. Откройте crontab:
crontab -eИ добавьте строку:
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1Затем создайте службу обработчика очередей – файл /etc/systemd/system/pteroq.service:
# Pterodactyl Queue Worker File
# ----------------------------------
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
# On some systems the user and group might be different.
# Some systems use `apache` or `nginx` as the user and group.
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Включите службы:
systemctl enable --now redis-server
systemctl enable --now pteroq.serviceНастройка NGINX и SSL
Необходимо выпустить сертификаты для обоих доменов: для самой панели и ноды.
Установим certbot:
apt -y install certbot python3-certbot-nginxВыпускаем сертификаты:
systemctl stop nginx
certbot certonly --standalone -d panel.betutorial.ru
certbot certonly --standalone -d node.betutorial.ruУдалите стандартный конфиг NGINX:
rm /etc/nginx/sites-enabled/defaultСоздайте и откройте свой файл конфигурации /etc/nginx/sites-available/pterodactyl.conf:
nano /etc/nginx/sites-available/pterodactyl.confКопируем содержимое ниже, заменив <domain> на имя вашего домена для панели, и вставляем в открытый файл конфигурации:
server {
# Replace the example <domain> with your domain name or IP address
listen 80;
server_name <domain>;
return 301 https://$server_name$request_uri;
}
server {
# Replace the example <domain> with your domain name or IP address
listen 443 ssl http2;
server_name <domain>;
root /var/www/pterodactyl/public;
index index.php;
access_log /var/log/nginx/pterodactyl.app-access.log;
error_log /var/log/nginx/pterodactyl.app-error.log error;
# allow larger file uploads and longer script runtimes
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
# SSL Configuration - Replace the example <domain> with your domain
ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
ssl_prefer_server_ciphers on;
# See https://hstspreload.org/ before uncommenting the line below.
# add_header Strict-Transport-Security "max-age=15768000; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header Content-Security-Policy "frame-ancestors 'self'";
add_header X-Frame-Options DENY;
add_header Referrer-Policy same-origin;
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 PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}Активируйте конфигурацию и запустите NGINX:
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
nginx -t
systemctl restart nginxПерейдите по адресу панели в браузере – вы должны увидеть форму входа. Войдите под учетной записью, созданной командой p:user:make.

Установка Wings
Панель готова, но запускать серверы ей пока нечем. Установите Docker:
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
systemctl enable --now dockerЕсли при создании сервера вы уже выбрали готовый образ Docker из маркетплейса, этот шаг можно пропустить – Docker уже установлен и запущен.
Скачайте бинарный файл Wings:
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")"
chmod u+x /usr/local/bin/wings8080/tcp – API Wings, по нему панель обращается к ноде и 2022/tcp – SFTP для доступа к файлам сервера. Также понадобится открыть порты, выделенные под игровые серверы (например, 25565-25575/tcp и udp). Без этого нода не сможет подключиться к панели, а игроки – к серверу.Создание ноды в панели
Вернитесь в веб-интерфейс и перейдите в административную часть (иконка шестеренки
в правом верхнем углу).
Сначала создайте локацию. Для этого перейдите в раздел Locations (Локации) и нажмите Create New.
В появившемся окне введите идентификатор (Short Code) и описание локации (Description). Для сохранения нажмите Create.

Затем создайте ноду. Для этого перейдите в раздел Nodes и нажмите Create New.
На открывшейся странице необходимо ввести следующие параметры:
- Name – название ноды;
- Description – описание;
- Location – выбор созданной локации;
- FQDN – домен или IP для подключения Wings. Например, node.betutorial.ru;
- Communicate Over SSL – использование HTTPS или HTTP;
- Total Memory – сколько RAM разрешено раздать игровым серверам (с запасом для системы и панели: на VPS с 6 ГБ – 4500–5000 МБ);
- Total Disk Space – то же самое для диска;
- Memory / Disk Over-Allocation – процент допустимого превышения; -1 отключает проверку совсем (лимита нет), 0 – ровно по лимиту.

Для сохранения Node с указанными настройками нажмите на кнопку Create Node.
После создания Node откроется раздел Назначение (Allocation) для созданной ноды. В этой вкладке необходимо добавить комбинацию IP-адреса и порта, которая потом назначается серверу в этой ноде. Укажите IP-адрес сервера и диапазон портов, например, 25565-25575. Каждый игровой сервер займет как минимум один порт из этого списка. Для добавления необходимо нажать на кнопку Submit.
Далее откройте вкладку Configuration.

Указанную конфигурацию требуется добавить на VPS в конфигурацию Wings:
nano /etc/pterodactyl/config.ymlВставьте содержимое и сохраните файл.
Альтернативный вариант – на той же вкладке нажать Generate Token и выполнить указанную команду wings configure прямо в терминале, тогда конфиг создастся автоматически.
Проверьте запуск в отладочном режиме:
wings --debugЕсли ошибок нет, остановите процесс сочетанием Ctrl+C и создайте службу – файл /etc/systemd/system/wings.service:
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.targetЗапустите Wings:
systemctl enable --now wingsОбновите страницу со списком нод в панели – рядом с вашей Node должен появиться зеленый индикатор с информацией о версии демона.

Создание первого игрового сервера
Для добавления сервера вам необходимо перейти в раздел Servers, далее нажать на кнопку Create New.
На открывшейся странице необходимо ввести следующие данные:
- В блоке Core Details укажите основные сведения о сервере: имя сервера (Server Name), email владельца сервера (Server Owner) и описание сервера (Server Description).
- Node – созданная нода, Default Allocation – свободный порт из диапазона.
- Resource Limits – лимиты сервера. Для ванильного Minecraft на 10 игроков достаточно 2048 МБ RAM и 5120 МБ диска. Поле CPU Limit задается в процентах от одного ядра: 100 – одно полное ядро, 200 – два.
- Nest – выберите Minecraft, Egg – например, Paper (оптимизированное ядро) или Vanilla Minecraft.
- Startup Configuration – здесь задаются переменные яйца: версия игры, версия сборки, объем памяти для JVM.

Нажмите Create Server. Панель отдаст команду Wings, тот скачает Docker-образ и выполнит скрипт установки – на это уйдет от одной до нескольких минут. За процессом можно наблюдать в консоли сервера: пока идет установка, она показывает лог загрузки файлов.
Когда сервер перейдет в статус Offline, нажмите Start. В консоли пойдет привычный вывод Minecraft, а через несколько секунд статус сменится на Running.
eula.txt и замените eula=false на eula=true, после чего перезапустите сервер. У большинства яиц для Minecraft есть переменная, позволяющая принять EULA сразу при создании.Подключаться к серверу игроки будут по адресу node.betutorial.ru:25565 (или по IP-адресу с указанием выданного порта).
Установка дополнительных яиц
Стандартного набора хватает не всегда: например, для конкретной сборки модов или свежей игры может понадобиться отдельное яйцо. Их публикуют в сообществе в виде JSON-файлов.
Скачайте нужный файл, затем в административной части откройте Nests, выберите или создайте гнездо и нажмите Import Egg. После загрузки яйцо появится в списке при создании нового сервера.
FAQ
Panel и Wings – это отдельные компоненты Pterodactyl, которые обновляются независимо.
Перед обновлением рекомендуется создать резервную копию базы данных и конфигурационных файлов.
- Panel
cd /var/www/pterodactyl
php artisan down
curl -L https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz | tar -xzv
chmod -R 755 storage/* bootstrap/cache
composer install --no-dev --optimize-autoloader
php artisan view:clear
php artisan config:clear
php artisan migrate --seed --force
chown -R www-data:www-data /var/www/pterodactyl/*
php artisan queue:restart
php artisan up- Wings
systemctl stop wings
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")"
chmod u+x /usr/local/bin/wings
systemctl restart wingsДля проверки работы основных компонентов используйте:
systemctl status nginx
systemctl status php8.3-fpm
systemctl status mariadb
systemctl status redis-server
systemctl status wingsНа VPS с Ubuntu 24.04 и установленным Pterodactyl без серверов уже используется часть ресурсов (обычно около 1 ГБ RAM и около 4 ГБ диска под систему и панель).
Итоговые требования зависят от:
- количества игровых серверов;
- числа игроков;
- используемых модов и плагинов.
При расчете конфигурации VPS важно учитывать:
- нагрузку ОС;
- ресурсы Panel и Wings;
- хранение логов и резервных копий;
- сами игровые серверы;
- запас производительности для стабильной работы.
Да. Pterodactyl поддерживает работу с несколькими VPS через систему Nodes – это позволяет распределять игровые серверы между разными VPS и управлять ими через одну панель.
Для этого выберите VPS с Ubuntu 24.04 и установите на нем Docker и Wings так же, как описано в разделе “Установка Wings” выше, а затем создайте для этого сервера ноду в панели – см. раздел “Создание ноды в панели”.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить Pterodactyl или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.