Complete Pterodactyl Panel Setup for Hosting Resellers

Published on | Updated

Step-by-step guide to installing and configuring Pterodactyl Panel for your game server hosting business. Covers panel, Wings, eggs, and WHMCS integration.

A pile of Minecraft blocks in many colours

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:

  1. Customer orders a plan through WHMCS
  2. WHMCS calls the Pterodactyl API with an API key you create in the panel
  3. The server is created with the resources set in the product's module settings
  4. 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 .env file with APP_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 -v lists "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: