
Pterodactyl is a free, open-source game server panel (MIT licence). Your customers get a web panel to start, stop and configure their own servers, and you manage nodes, users and limits from the admin area. If you are starting a hosting reseller business, here is how to set it up properly, following the official 1.x docs as they stood on 31 October 2026.
Versions: Panel 1.15.2 and Wings 1.13.4 are the latest stable releases on 31 October 2026, and Panel 1.15.2 requires PHP 8.2 or 8.3. Panel 2.0 is an open beta with its own install guide; this guide covers 1.x.
Overview
Pterodactyl has two components:
- Panel: The web interface where customers manage their servers
- Wings: The daemon that runs on each server node and manages game server processes
You can run both on the same machine for small operations, or separate them as you grow. Our Panel vs Wings guide shows which ports and DNS names each half needs.
Requirements
Panel Server
- Ubuntu 24.04 or 22.04, or Debian 11, 12 or 13 (the docs also support RHEL, Rocky Linux and AlmaLinux 8 and 9)
- PHP 8.2 or 8.3 (8.3 recommended) with the cli, openssl, gd, mysql, PDO, mbstring, tokenizer, bcmath, xml, curl, zip and fpm extensions
- MariaDB 10.2 or newer, or MySQL 5.7.22 or newer (MySQL 8 recommended)
- Redis, a web server (Nginx, Apache or Caddy), Composer 2, curl, tar, unzip and git
- Enough RAM for the panel itself, since game servers need their own resources on the nodes
Wings Server
- Ubuntu 22.04 or 24.04, Debian 11, 12 or 13, or RHEL, Rocky Linux or AlmaLinux 8 or 9
- Virtualization that runs Docker: the docs call KVM guaranteed to work, while on OpenVZ, Virtuozzo or LXC you will most likely be unable to run Wings
- Docker installed
- Enough RAM and CPU for your game servers
Panel Installation
Run these commands as root (sudo -i). Our VPS install guide walks through the same steps with every configuration file in full.
1. Install Dependencies
# Update system
apt update && apt upgrade -y
# Add "add-apt-repository" command
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
# Ubuntu 22.04 only: PHP 8.3 from the ondrej/php PPA (Ubuntu 24.04 ships PHP 8.3)
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
# Add Redis official APT repository
curl -fsSL https://packages.redis.io/gpg | sudo 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" | sudo tee /etc/apt/sources.list.d/redis.list
# Install PHP 8.3, MariaDB, Nginx and Redis
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
# Install Composer
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
On Debian, use the docs' Debian dependencies instead. They add the packages.sury.org PHP repository, plus the Redis repository and MariaDB's repo setup script on Debian 11 and 12.
2. Database Setup
mariadb -u root -p
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'your-secure-password';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
exit
3. Download and Configure 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/
cp .env.example .env
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader
# Only on a first install, with no Pterodactyl data in the database
php artisan key:generate --force
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
php artisan migrate --seed --force
php artisan p:user:make
chown -R www-data:www-data /var/www/pterodactyl/*
Two of these steps matter more for a business than for a hobby panel. Store the APP_KEY line from .env off the server: the docs warn that if you lose it, all encrypted data is irrecoverable, even with database backups. And set up mail in p:environment:mail (choose smtp), because customers created through WHMCS get their password email from the panel.
4. Configure Nginx
HTTPS is non-negotiable for customer trust. Create the certificate first: the docs warn that the web server fails to start when the SSL configuration points at certificate files that do not exist yet.
sudo apt install -y certbot python3-certbot-nginx
certbot certonly --nginx -d panel.example.com
rm /etc/nginx/sites-enabled/default
Save the docs' Nginx With SSL file as /etc/nginx/sites-available/pterodactyl.conf (our VPS guide prints it in full), replace <domain> with your panel domain, and enable it:
sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
sudo systemctl restart nginx
5. Set Up Queue Worker and Cron
Add this line to root's crontab (sudo crontab -e). It runs every minute for tasks such as session cleanup and sending scheduled tasks to the nodes, so your customers' backup schedules depend on it:
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
Then create the queue worker /etc/systemd/system/pteroq.service from the docs. It runs php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3 as www-data. Start Redis and the worker:
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
Wings Installation
1. Install Docker
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
systemctl enable --now docker
This is the Pterodactyl docs' quick install. Docker's own install guide says the convenience script isn't recommended for production environments, so on nodes that run customer servers you can install Docker from its apt repository instead, as Docker's Ubuntu guide describes.
2. Install Wings
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
chmod u+x /usr/local/bin/wings
3. Configure Wings
In the admin area, create a Location first, because a node cannot be created without one. Then go to Nodes, click Create New, and fill in the FQDN, Communicate Over SSL, memory, disk and ports (Daemon Port 8080 and Daemon SFTP Port 2022 by default). Copy the node's Configuration File to /etc/pterodactyl/config.yml, or click Generate Token under Auto-Deploy and run the command it shows.
When the panel uses SSL, the node needs a certificate for its own FQDN. On a node without a web server:
sudo apt install -y certbot
certbot certonly --standalone -d node1.example.com
4. Set Up as Service
Test Wings with sudo wings --debug and stop it with Ctrl+C once it runs without errors. Then create /etc/systemd/system/wings.service from the Wings docs so it starts automatically on boot, and start it:
sudo systemctl enable --now wings
Finally add allocations (the IP and ports your customers' servers will use) on the node's Allocation tab.
Game Server Eggs
Eggs define how game servers are installed and started. Panel 1.15.2 installs these by default:
- Minecraft: Paper, Vanilla, Forge, BungeeCord and Sponge (SpongeVanilla)
- Rust
- Source Engine games: Garry's Mod, ARK: Survival Evolved, Counter-Strike: Global Offensive, Team Fortress 2 and Insurgency
- Mumble and TeamSpeak 3
Minecraft Bedrock, Fabric, FiveM, Valheim and many more are community eggs on eggs.pterodactyl.io. Download the egg file and import it under Nests with the Import Egg button. Imported eggs do not update themselves, so import the new file again when an egg changes.
WHMCS Integration
The Pterodactyl WHMCS module automates server provisioning:
- Customer orders a plan through WHMCS
- WHMCS calls the Pterodactyl API with an API key you create in the panel
- The server is created with the resources set in the product's module settings
- A customer without a panel account gets an email from the panel to set a password; an existing user keeps their login
The module is free (MIT licence), published in the Pterodactyl GitHub organisation, and works with Panel 1.x and 2.x. Its README adds that customer emails only arrive when the panel's mail settings work (restart pteroq after changing them), and that the module cannot yet give one server multiple ports.
Security
- Keep Panel and Wings updated with the docs' Updating the Panel steps; they are for 1.x only, and 2.0 has its own upgrade guide
- Use strong passwords for the database and admin account
- Require two-factor authentication: in the admin area under Settings, set Require 2-Factor Authentication to Admin Only or All Users
- Firewall each machine to the ports it needs: SSH, 80 and 443 on the panel; 8080, 2022 and your game ports on each node, plus 80 when a node renews its certificate with certbot's HTTP challenge
- Regular backups of the Panel database and its
.envfile withAPP_KEY(see our Pterodactyl backup guide)
Performance Tips
- Choose Redis for the cache, session and queue drivers in
p:environment:setup, which marks Redis as recommended for all three - Keep OPcache on: on Ubuntu 24.04 the php8.3-fpm package depends on php8.3-opcache, and
php -vlists "with Zend OPcache" when it is loaded - Set appropriate memory limits for game servers
- Decide on overselling deliberately: Memory Over-Allocation and Disk Over-Allocation on each node take a percentage, 0 blocks new servers that would push the node over its totals, and -1 turns the check off
Pterodactyl is powerful and free. Set it up right, and it handles the operational side of game hosting so you can focus on growing your business.
Sources
All opened on 31 October 2026:
- Pterodactyl docs: Getting Started, Webserver Configuration, Creating SSL Certificates, Debian 11, 12 & 13, Installing Wings, Creating a New Node, Updating the Panel, Upgrading PHP
- Releases: Panel, Wings
- Panel 1.15.2 source: LICENSE.md, composer.json, AppSettingsCommand.php, node form, node Configuration tab, Settings page, default eggs, Nests page
- Pterodactyl eggs
- Pterodactyl WHMCS module README
- Docker: Install Docker Engine on Ubuntu
- Ubuntu packages: php8.3 in 24.04, php in 22.04, php8.3-fpm in 24.04