← Back to Blog

How to Install Pterodactyl Panel on a VPS (Ubuntu 24.04)

Published May 3, 2026  ·  15 min read  ·  Dakota Hopson, Galaxy Cloud Solutions

← Back to Blog

How to Install Pterodactyl Panel on a VPS (Ubuntu 24.04)

Published May 3, 2026  ·  15 min read  ·  Dakota Hopson, Galaxy Cloud Solutions

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% off

What You Need

Note: Pterodactyl Panel and Wings can run on the same VPS, but for production use it is better to run them on separate servers. For a home lab or small setup, one server is fine.

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
You're done. Open your domain in a browser, log in with the admin account you created, and start deploying game servers. Pterodactyl has built-in eggs (templates) for Minecraft, CS2, FiveM, Valheim, and dozens of others.

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