Перейти к содержимому

Установка Pterodactyl Panel на Ubuntu 22.04/24.04

Проверено с: Panel v1.15.1, Ubuntu 22.04 и 24.04 · обновлено 09.10.2026

Короткий ответ: установка Panel — это ~11 шагов на чистой Ubuntu: пакеты (PHP 8.3, MariaDB, Redis, nginx), composer, база данных, файлы панели, composer install, artisan-настройка окружения, миграция, первый пользователь, права, cron + очередь pteroq, nginx с SSL. Занимает 20–40 минут. Все команды ниже выполняются от root (или через sudo) на чистом сервере.

Гайд — русская адаптация официальной установки с нашим эксплуатационным опытом: где шаги обычно ломаются и как это выглядит. Различия Ubuntu 22.04 и 24.04 оговорены по ходу.

Panel требует PHP 8.2/8.3, MySQL/MariaDB, Redis и веб-сервер. Проще всего поставить всё из apt:

Окно терминала
apt update
# утилиты для добавления репозиториев
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
# PHP 8.3 (на Ubuntu 22.04 его нет в базовых репозиториях — добавляем PPA;
# на 24.04 строка не помешает, но можно пропустить)
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
# официальный репозиторий Redis
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" > /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

Проверьте, что PHP и Redis живы:

Окно терминала
php -v # должно быть 8.2 или 8.3
systemctl status redis-server --no-pager

Composer — менеджер зависимостей PHP, панель ставится через него:

Окно терминала
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
composer --version # ожидаем 2.x

Panel нужна база MySQL/MariaDB и пользователь для неё. Войдите в MariaDB:

Окно терминала
mariadb -u root -p

Выполните SQL (пароль замените на свой, сохраните его — понадобится на шаге 6):

CREATE 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;

Важно: хост пользователя именно 127.0.0.1, не localhost — Panel подключается по TCP, и пользователь, созданный для localhost, работать не будет.

Окно терминала
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 --force

Три интерактивные artisan-команды: часовой пояс/кэш, база, почта.

Окно терминала
php artisan p:environment:setup
php artisan p:environment:database # пользователь pterodactyl, пароль из шага 3
php artisan p:environment:mail

Для почты на старте можно выбрать встроенный mail (письма будут часто попадать в спам или не уходить вообще) и вернуться к SMTP позже: без почты не работают восстановление пароля и двухфакторная аутентификация.

Окно терминала
php artisan migrate --seed --force

Команда создаёт таблицы и заполняет каталог яиц (nests/eggs). Может идти несколько минут — не прерывайте её.

Окно терминала
php artisan p:user:make

Пароль: минимум 8 символов, строчные и заглавные буквы, цифра. Административные права подтвердите при создании. Это пользователь, под которым вы войдёте в веб-интерфейс.

Права для веб-сервера:

Окно терминала
chown -R www-data:www-data /var/www/pterodactyl/*

Cron-задача планировщика (откройте crontab -e и добавьте строку):

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&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
Окно терминала
systemctl enable --now redis-server
systemctl enable --now pteroq.service

Удалите дефолтный сайт и создайте конфиг панели — /etc/nginx/sites-available/pterodactyl.conf (замените panel.example.com на ваш домен или IP):

server {
listen 80;
server_name panel.example.com;
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;
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
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;
}
location ~ /\.ht {
deny all;
}
}
Окно терминала
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
nginx -t && systemctl restart nginx

SSL сертификатом Let’s Encrypt (нужен домен, направленный на сервер):

Окно терминала
apt -y install certbot python3-certbot-nginx
certbot --nginx -d panel.example.com

Certbot сам допишет SSL-блок в конфиг и настроит продление. Если панель остаётся на HTTP (например, во внутренней сети) — официальные примеры SSL-конфигурации вам не понадобятся, но доступ по HTTP — плохая идея даже в лаборатории.

Откройте https://panel.example.com — должна появиться форма входа. Войдите администратором из шага 8.

С версии 1.11 панель отправляет анонимную телеметрию. Посмотреть, что именно уйдёт, можно командой php artisan p:telemetry; отключается телеметрия строкой в .env — PTERODACTYL_TELEMETRY_ENABLED=false (затем php artisan queue:restart).

Статья помогла?