Pterodactyl: Game Server Panel
Install Pterodactyl to manage game servers (Minecraft, FiveM, Rust, CS2 and others) via web interface with users, permissions and limited resources.
Pterodactyl is an open source panel for managing game servers. It lets you create, start, stop and monitor game servers via browser, with user management, CPU/RAM limits and integrated file manager.
Architecture: Panel (web interface) + Wings (daemon on nodes hosting the servers).
Panel requirements
- Ubuntu 22.04 / Debian 12
- PHP 8.3, MariaDB, Redis, Nginx
- Minimum 1 GB RAM dedicated to panel
Panel and Wings separated
The Panel can run on the same server as game servers (Wings node) or on a dedicated server. For personal use, same server is fine.
Install Panel
Dependencies
# PHP and extensions
apt install -y php8.3 php8.3-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} \
mariadb-server nginx tar unzip git redis-server
# Composer
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composerDatabase
mysql -u root << 'SQL'
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'secure_password';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SQLDownload 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/Configuration
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 # create the first admin user
chown -R www-data:www-data /var/www/pterodactyl/Nginx
# /etc/nginx/sites-available/pterodactyl.conf
server {
listen 80;
server_name panel.yourdomain.com;
root /var/www/pterodactyl/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/
systemctl reload nginx
certbot --nginx -d panel.yourdomain.comQueue worker
cat > /etc/systemd/system/pteroq.service << 'EOF'
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now pteroq.serviceInstall Wings (node)
Wings is the daemon that actually runs the game server containers.
# Install Docker
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
systemctl enable --now docker
# Download Wings
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings \
"https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64"
chmod +x /usr/local/bin/wingsConfigure the node from Panel
- Admin Panel → Nodes → Create New
- Fill in server details (FQDN, memory, disk)
- In "Configuration" section copy the token
- On the node server:
# Paste the config generated from Panel
nano /etc/pterodactyl/config.ymlStart Wings
cat > /etc/systemd/system/wings.service << 'EOF'
[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now wingsEgg (server template)
"Eggs" are templates for each game server type. Pterodactyl includes Minecraft ones by default. For other games:
# Download official eggs from:
# https://github.com/pterodactyl/yolks
# https://github.com/parkervcp/eggs
# Import from Panel: Admin → Nests → Import EggAvailable eggs: Minecraft, Paper, Bungeecord, Velocity, FiveM, Rust, CS2, Valheim, ARK, Terraria, TeamSpeak, Palworld and many others.
Ports to open
# Panel web
ufw allow 80/tcp
ufw allow 443/tcp
# Wings API (from panel to node)
ufw allow 8080/tcp
# SFTP for file manager
ufw allow 2022/tcp
# Game server ports (customizable range)
ufw allow 25565:25600/tcp # Minecraft
ufw allow 27015:27020/udp # Steam games