How to Install Pterodactyl Panel on a VPS (Ubuntu 24.04)
← Back to BlogHow to Install Pterodactyl Panel on a VPS (Ubuntu 24.04)
Pterodactyl is the standard open-source game server management panel. If you want to run multiple game servers — Minecraft, FiveM, Valheim, CS2 — and manage them all from a single web UI, Pterodactyl is what you use. It handles server creation, file management, console access, user permissions, and resource limits.
This guide installs the full Pterodactyl stack on Ubuntu 24.04: the Panel (web UI) and the Wings daemon (the part that actually runs your game servers).
⚡ Need a VPS for Pterodactyl? Galaxy 1 (4GB RAM) is the sweet spot — use code LAUNCH2026 for 50% offWhat You Need
- A VPS with at least 2GB RAM (4GB recommended)
- Ubuntu 24.04
- A domain name pointed at your server
- Root SSH access
Step 1 — Install Dependencies
apt update && apt upgrade -y
apt install -y curl tar unzip git wget
Step 2 — Install PHP 8.3
apt install -y php8.3 php8.3-cli php8.3-common php8.3-gd php8.3-mysql php8.3-mbstring php8.3-bcmath php8.3-xml php8.3-fpm php8.3-curl php8.3-zip
Step 3 — Install MariaDB
apt install -y mariadb-server
systemctl enable mariadb
mysql_secure_installation
Create the Pterodactyl database:
mysql -u root -p
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'your_strong_password';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Step 4 — Install Nginx
apt install -y nginx
systemctl enable nginx
Step 5 — Install Composer
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Step 6 — Download Pterodactyl Panel
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/
Step 7 — Install Panel Dependencies
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
Step 8 — Configure Environment
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
Follow the prompts. For the database, use the credentials you created in Step 3.
Step 9 — Run Database Migrations
php artisan migrate --seed --force
Step 10 — Create Admin User
php artisan p:user:make
Step 11 — Set Permissions
chown -R www-data:www-data /var/www/pterodactyl/*
Step 12 — Configure Queue Worker
cat > /etc/systemd/system/pteroq.service << 'EOF'
[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
EOF
systemctl enable pteroq
systemctl start pteroq
Step 13 — Configure Nginx
cat > /etc/nginx/sites-available/pterodactyl.conf << 'EOF'
server {
listen 80;
server_name your.domain.com;
root /var/www/pterodactyl/public;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/pterodactyl.app-error.log error;
client_max_body_size 100m;
client_body_timeout 120s;
sendfile off;
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
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;
}
}
EOF
ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Step 14 — Add SSL
apt install -y certbot python3-certbot-nginx
certbot --nginx -d your.domain.com
Step 15 — Install Wings
Wings is the daemon that actually runs game servers. Install it on the same VPS or a separate one:
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
systemctl enable docker
systemctl start docker
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64"
chmod u+x /usr/local/bin/wings
Create the Wings service:
cat > /etc/systemd/system/wings.service << 'EOF'
[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
EOF
systemctl enable wings
Now go to your Pterodactyl panel, create a new Node, and download the Wings configuration file. Place it at /etc/pterodactyl/config.yml, then start Wings:
systemctl start wings
Run Pterodactyl on a Galaxy Cloud Solutions VPS
The Galaxy 1 plan (4GB RAM, 4 vCPU, 80GB SSD) is the right size for a Pterodactyl panel with a few game servers. Full root access, Ubuntu 24.04, instant deployment. Use code LAUNCH2026 for 50% off your first month.
Get Started