Pterodactyl: Game Server Panel
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
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.
- Ubuntu 22.04 / Debian 12
- PHP 8.3, MariaDB, Redis, Nginx
- Minimum 1 GB RAM dedicated to panel
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=composer
Database
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;
SQL
Download 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.com
Queue 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.service
Install 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/wings
Configure the node from Panel
# Paste the config generated from Panel
nano /etc/pterodactyl/config.yml
Start 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 wings
- Admin Panel → Nodes → Create New
- Fill in server details (FQDN, memory, disk)
- In "Configuration" section copy the token
- On the node server:
Egg (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 Egg
Available 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
Articoli correlati
Package Installation
How to install, update and remove software on your Linux server
Web Server: Nginx
Installation and basic configuration of Nginx on your server
Web Server: Apache
Installation and basic configuration of Apache on your server
