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.compointing 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:
|
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.
|
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.