How to Install Pterodactyl Panel on an Ubuntu VPS Print

  • install pterodactyl, ubuntu 24.04, wings daemon, pterodactyl wings, pterodactyl vps, minecraft vps, kvm vps, nginx, pterodactyl ubuntu, pterodactyl panel, linux vps, game server hosting, minecraft server hosting, game server panel, pterodactyl, docker
  • 0

Want to install Pterodactyl Panel on an Ubuntu VPS? Pterodactyl is a free, open-source game server management panel that lets you deploy and manage Minecraft, Valheim, and other game servers using Docker containers.

This guide explains how to install Pterodactyl Panel and Wings on Ubuntu 24.04 LTS, configure Nginx, MariaDB, PHP, Docker, and free Let's Encrypt SSL.

These instructions use the stable Pterodactyl 1.x release. Pterodactyl 2.0 has a separate installation procedure.

Need a VPS for Pterodactyl? Explore Owned Networks KVM VPS hosting with full root access, SSD storage, and US/EU server locations.

Before You Start

  • A fresh Ubuntu 24.04 LTS VPS with root or sudo access.
  • A domain such as panel.example.com pointing to your VPS.
  • At least 2 vCPU and 4 GB RAM as a practical starting point for a small combined Panel and Wings installation; game servers may require significantly more.
  • Ports 80 and 443 for the Panel, 8080 for Wings API, and 2022 for Wings SFTP, subject to your configuration.
  • Additional game-server ports as required by each game.
  • A backup if installing on an existing server.

Important: Pterodactyl uses Docker to run game servers. KVM virtualization is suitable for Wings, while some container-based VPS platforms may restrict Docker functionality.

For game servers with additional players, mods, or plugins, choose a VPS with sufficient RAM, CPU performance, and storage. Explore Dallas VPS hosting or compare available VPS locations.

Step 1: Update Ubuntu and Install Dependencies

Connect to your VPS through SSH, then update the server and install the required packages:

sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx mariadb-server redis-server \
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 \
composer curl tar unzip git ca-certificates \
openssl snapd

sudo systemctl enable --now nginx mariadb redis-server php8.3-fpm

php -v
composer --version

Pterodactyl 1.x requires a compatible PHP version and Composer 2. This example uses the PHP 8.3 packages provided by Ubuntu 24.04.

Step 2: Create the Pterodactyl Database

Generate a database password and save it securely:

openssl rand -hex 24
sudo mariadb

In the MariaDB console, execute:

CREATE DATABASE panel;
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'REPLACE_WITH_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1';
EXIT;

Replace REPLACE_WITH_STRONG_PASSWORD with your generated password. You will need these database details during Panel configuration.

Step 3: Download and Install Pterodactyl Panel

Download the current stable Pterodactyl 1.x release package:

sudo mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl

sudo curl -fL -o panel.tar.gz \
https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz

sudo tar -xzf panel.tar.gz
sudo cp .env.example .env

sudo env COMPOSER_ALLOW_SUPERUSER=1 \
composer install --no-dev --optimize-autoloader

sudo php artisan key:generate --force

Important: Only generate the application encryption key during a fresh installation. Back up the resulting APP_KEY from /var/www/pterodactyl/.env securely, as losing it can make encrypted application data unrecoverable.

Before downloading, confirm the latest release is still part of the stable 1.x branch. Do not accidentally substitute a Pterodactyl 2.0 beta release into this 1.x procedure.

Step 4: Configure the Panel Environment

Run the interactive setup commands:

cd /var/www/pterodactyl

sudo php artisan p:environment:setup
sudo php artisan p:environment:database
sudo php artisan p:environment:mail

Use https://panel.example.com as the application URL, replacing the example with your domain.

For the database configuration, use:

  • Database host: 127.0.0.1
  • Database port: 3306
  • Database name: panel
  • Database user: pterodactyl
  • Password: the password created in Step 2

Configure SMTP for reliable email delivery.

Step 5: Initialize the Database and Create an Administrator

Run the database migrations and create your first administrator:

cd /var/www/pterodactyl

sudo php artisan migrate --seed --force
sudo php artisan p:user:make

sudo chown -R www-data:www-data /var/www/pterodactyl
sudo chmod -R 755 storage bootstrap/cache
sudo chmod 640 .env

Follow the administrator account prompts and save your login credentials securely.

Step 6: Configure the Scheduler and Queue Worker

Pterodactyl requires a scheduler and background queue worker.

Add the scheduler cron entry without duplicating an existing entry:

(sudo crontab -l 2>/dev/null | grep -v '/var/www/pterodactyl/artisan schedule:run'; echo '* * * * * /usr/bin/php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1') | sudo crontab -

Create the systemd queue worker service:

sudo tee /etc/systemd/system/pteroq.service > /dev/null <<'EOF'
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

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

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now pteroq

Step 7: Configure Nginx and Free SSL

Point your domain's DNS A record to the VPS public IPv4 address. If an AAAA record exists, it must also point to a working IPv6 address.

Create a basic Nginx virtual host. Replace panel.example.com with your domain:

sudo tee /etc/nginx/sites-available/pterodactyl.conf > /dev/null <<'EOF'
server {
    listen 80;
    server_name panel.example.com;

    root /var/www/pterodactyl/public;
    index index.php;
    client_max_body_size 100m;
    sendfile off;

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

    location ~ \.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;
        fastcgi_param HTTP_PROXY "";
    }

    location ~ /\.(?!well-known) {
        deny all;
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/pterodactyl.conf \
/etc/nginx/sites-enabled/pterodactyl.conf

sudo nginx -t && sudo systemctl reload nginx

Ensure ports 80 and 443 are reachable, then install Certbot and configure HTTPS:

sudo snap install --classic certbot
sudo /snap/bin/certbot --nginx -d panel.example.com
sudo /snap/bin/certbot renew --dry-run

Replace panel.example.com with your actual domain. Confirm that Certbot enables HTTPS and redirects HTTP traffic appropriately.

Security: Use HTTPS for the administrator dashboard. Secure SSH access and restrict unnecessary public ports.

Step 8: Install Docker for Pterodactyl Wings

Wings is the daemon responsible for running and managing game servers using Docker containers.

Install Docker using our How to Install Docker and Docker Compose on Ubuntu guide.

Once Docker is installed, enable it and verify:

sudo systemctl enable --now docker
sudo docker --version
systemd-detect-virt

KVM virtualization is suitable for Docker-based Wings deployments. Container-based virtualization may require additional provider support.

Step 9: Install and Configure Wings

Download the Wings binary for an x86-64 Ubuntu VPS:

sudo mkdir -p /etc/pterodactyl

sudo curl -fL -o /usr/local/bin/wings \
https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64

sudo chmod 755 /usr/local/bin/wings
sudo /usr/local/bin/wings --version

For ARM64 servers, use the appropriate ARM64 Wings binary instead.

In the Pterodactyl administrator dashboard, create a node under Admin > Nodes, then open its Configuration tab.

Copy the generated Wings configuration into:

/etc/pterodactyl/config.yml

You can also use the node's generated Auto-Deploy command if your Panel provides one. Do not expose the token or configuration secrets.

For an HTTPS Panel, configure a valid TLS certificate for the Wings node address as well. The Panel and Wings can share one VPS, but require appropriate domain, port, and TLS configuration.

Step 10: Start Pterodactyl Wings

Test Wings in debug mode:

sudo /usr/local/bin/wings --debug

After checking for errors, press Ctrl+C, then configure Wings as a systemd service:

sudo tee /etc/systemd/system/wings.service > /dev/null <<'EOF'
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service

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

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now wings

sudo systemctl status wings --no-pager

In the Panel, create the required node allocations using the VPS network IP and the game ports you intend to assign. Ensure your firewall permits these allocations, along with the required Wings API and SFTP ports.

Step 11: Verify Your Pterodactyl Installation

Check that the Panel, queue worker, Docker, and Wings are running:

sudo systemctl status nginx mariadb redis-server php8.3-fpm pteroq docker wings --no-pager
sudo systemctl --failed
sudo docker ps
sudo journalctl -u wings -n 50 --no-pager

Open the Panel, confirm the node is connected, add an allocation, and deploy a test game server using an appropriate Pterodactyl egg.

Common Pterodactyl Installation Problems

Pterodactyl Panel Shows 502 Bad Gateway

Check PHP-FPM, Nginx, and application logs. Confirm that Nginx points to /run/php/php8.3-fpm.sock.

Wings Node Shows Offline

Check systemctl status wings, your node configuration, DNS, TLS certificates, and firewall access to the Wings API.

Game Server Won't Start

Verify Docker is running, that the chosen egg supports your system architecture, that sufficient CPU/RAM is available, and that the allocated ports are free.

Pterodactyl Schedules Not Working

Check the scheduler cron entry and queue worker service with sudo systemctl status pteroq.

Pterodactyl Error Logs

Check the Panel's storage/logs/ directory and Wings logs using sudo journalctl -u wings -n 100 --no-pager.

Related Solution: Host Game Servers on an Owned Networks KVM VPS

Need a VPS for Pterodactyl or Minecraft Hosting?

Deploy Pterodactyl Panel, Wings, and Docker-based game servers on an Owned Networks KVM VPS with full root access and control over your hosting environment.

  • KVM virtualization compatible with Docker and Wings
  • Full root access and SSD storage
  • Flexible CPU, RAM, and storage configurations
  • US and European server locations
  • Infrastructure suitable for self-managed game hosting

Compare KVM VPS Plans and Pricing

Explore Dallas VPS Hosting

Compare VPS Locations

Frequently Asked Questions

Can I install Pterodactyl Panel on a VPS?

Yes. You can install Pterodactyl on a compatible Linux VPS with root access. Wings requires Docker support, making KVM virtualization a suitable choice.

How much RAM does Pterodactyl need?

The Panel itself is relatively lightweight, but Wings and the game servers it manages require additional resources. A VPS with 4 GB RAM can be a starting point for small deployments, while modded Minecraft or multiple game servers may need significantly more.

Is Pterodactyl free?

Yes. Pterodactyl is a free, open-source game server management platform. You still need to pay for the hosting infrastructure and any related services.

Does Pterodactyl require Docker?

The Panel runs on a web application stack. Wings uses Docker containers to run and isolate the actual game servers.

Can I host Minecraft with Pterodactyl?

Yes. Pterodactyl supports Minecraft server deployments using compatible eggs, including common Java server types. Performance depends on the VPS resources and Minecraft configuration.

Can Panel and Wings run on the same VPS?

Yes. Small installations can run both components on one server. Larger environments can separate the Panel from Wings nodes for resource management and scalability.

Does Pterodactyl support Ubuntu 26.04?

Pterodactyl 1.x documentation targets Ubuntu 24.04 and older supported distributions. For Ubuntu 26.04, review the current compatibility documentation and version requirements before deployment. Pterodactyl 2.0 has separate installation instructions.

What ports does Pterodactyl use?

Common ports include 80/443 for the Panel, 8080 for the Wings API, 2022 for Wings SFTP, and the individual TCP/UDP ports required by each game server. These can vary according to your configuration.

Conclusion

Installing Pterodactyl Panel and Wings on an Ubuntu VPS provides a flexible platform for managing Minecraft and other multiplayer game servers through a web interface.

Looking for game server infrastructure? Explore Owned Networks KVM VPS Hosting or compare our US and European VPS locations.

Last reviewed: November 2026. Official references: Pterodactyl Panel Installation, Wings Installation, and Nginx Configuration.


Was this answer helpful?

KVM VPS & Dedicated Servers

Deploy a Linux VPS in under 2 minutes — AlmaLinux, Rocky Linux, Ubuntu, Debian. Full root access, KVM virtualization, US and EU locations.

« Back