What Is Pterodactyl Panel?
Pterodactyl is a popular open source game server management panel that runs game servers inside Docker containers. Setting it up requires two separate pieces: the web Panel (built on PHP, Nginx, and MariaDB) and Wings (the Go daemon that manages containers on each node).
Here is the complete walkthrough for setting it up on an Ubuntu or Debian VPS, along with the easier path if you want to skip the multi-step install.
System Requirements
Ubuntu 22.04 or 24.04 LTS (Debian 12 also works)
Minimum 1GB RAM for the panel, 2GB or more recommended if running games on the same VPS
Root SSH access
A domain or subdomain pointing to your VPS IP for SSL certificates
Step 1: Install Dependencies
Update your system packages and install the core tools:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl tar unzip git redis-server certbot python3-certbot-nginx
Install PHP and required extensions:
sudo apt install -y php8.2 php8.2-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip}
Install MariaDB and secure it:
sudo apt install -y mariadb-server
sudo mysql_secure_installation
Step 2: Download and Configure the Panel
Create the directory and pull the latest release:
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/
Configure environment, database, and encryption keys:
cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
php artisan p:environment:setup
php artisan p:environment:database
php artisan migrate --seed --force
php artisan p:user:make
Set file permissions for your web server user:
chown -R www-data:www-data /var/www/pterodactyl/*
Step 3: Configure Web Server and SSL
Set up Nginx to serve the panel, then run Certbot to generate a free Let's Encrypt certificate:
sudo certbot --nginx -d panel.yourdomain.com
Enable and start the queue worker using a systemd service file so background tasks like email and server installs run automatically.
Step 4: Install Wings on Your Node
Wings is the daemon that communicates with Docker. Install Docker first:
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
sudo systemctl enable --now docker
Download Wings:
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
In the Pterodactyl web panel, create a Node, copy the generated configuration YAML into `/etc/pterodactyl/config.yml`, and start Wings:
sudo systemctl enable --now wings
The Faster Alternative: M.A.F Cloud One-Line Agent
Manual Pterodactyl setup takes 30 to 45 minutes and requires maintaining PHP, MariaDB, Nginx, Redis, and Wings yourself. If you want game server containers with a live console, file manager, and auto-restart without running five daemons, M.A.F Cloud installs on any VPS in thirty seconds:
curl -fsSL https://cexi.my.id/agent-install.sh | sudo MAFCLOUD_TOKEN=<token> MAFCLOUD_API=https://cexi.my.id bash
The agent handles container lifecycle, port allocation with TCP and UDP support, live port probes, and crash recovery out of the box. You keep root on your VPS, while the panel runs remotely from mafcloud.my.id. If you prefer pure Pterodactyl slots without any setup at all, M.A.F Cloud also offers private Pterodactyl slots starting from RM2 to RM14.
Port Management and Firewall
Whether you run Pterodactyl or M.A.F Cloud, remember to open the ports you need:
Panel web interface: 80, 443 (TCP)
Wings daemon: 8080 (TCP) and 2022 (SFTP)
Game traffic: 25565 (TCP for Minecraft Java, UDP for Bedrock and Voice plugins)
Using UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25565/tcp
sudo ufw allow 25565/udp
sudo ufw enable
The Bottom Line
Pterodactyl gives you full control and a massive community of eggs and themes, at the cost of regular maintenance and manual upgrades. If you enjoy sysadmin work, it is a great weekend project. If you just want to run Minecraft and apps on your VPS today, a one-line agent gives you the same container control in under a minute.