Install Pterodactyl
A complete guide to deploying the Pterodactyl game server panel on ThermalCloud infrastructure.
Initial Setup
Updating system packages & installing curl.
sudo apt update && sudo apt upgrade -y
sudo apt install curl -y
Pterodactyl Installer
Execute the automated installation script.
bash <(curl -s https://pterodactyl-installer.se)
SSL Certificate
Generate a self-signed SSL certificate and patch your Nginx configuration.
subdirectory_arrow_right Generate SSL & Patch Nginx
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /2.pem -out /1.pem -subj "/CN=localhost"
sed -i 's|^\s*ssl_certificate\s\+.*| ssl_certificate /1.pem;|' /etc/nginx/sites-available/pterodactyl.conf
sed -i 's|^\s*ssl_certificate_key\s\+.*| ssl_certificate_key /2.pem;|' /etc/nginx/sites-available/pterodactyl.conf
sed -i 's/\b443\b/8443/g; s/\b80\b/8000/g' /etc/nginx/sites-available/pterodactyl.conf
systemctl restart nginx
Cloudflare Tunnel
Set up secure tunnel for external access.
1. Network → Tunnels → Create Tunnel
2. Select cloudflared, name it whatever you want
3. Choose Debian → install cloudflared
4. Install the service for auto-start
5. Use the same subdomain as earlier
6. Service Type: https
7. Service URL: localhost:8443
8. Enable "No TLS Verify" in Additional Settings
NOTE: YOU MUST HAVE A DOMAIN ON CLOUDFLARE TO EXPOSE YOUR PTERODACTYL AND WINGS.
Wings Installer
Execute the automated wings installation script.
bash <(curl -s https://pterodactyl-installer.se)
Cloudflare Tunnel
Set up secure tunnel for node access.
1. Go to Cloudflare → Zero Trust → Access → Tunnels
2. Select your existing tunnel
3. Click Edit, then open Public Hostnames
4. Click Add New Hostname
5. Enter your node subdomain
6. Set Service Type to https
7. Set Service URL to localhost:443
8. Open Additional Settings → TLS
9. Enable No TLS Verify
NOTE: YOU MUST HAVE A DOMAIN ON CLOUDFLARE TO EXPOSE YOUR PTERODACTYL AND WINGS.
Pterodactyl Wings Setup
Set up locations and nodes in the admin panel.
1. Login to panel
2. Admin → Locations → Create one (example: US)
3. Admin → Nodes → Add node
4. Daemon Port: 443
5. SSL: Not Behind Proxy
6. Use the node subdomain as the FQDN (example: node1.thermalcloud.site)
7. Copy config token and run the command as usual
NOTE: YOU MUST HAVE A DOMAIN ON CLOUDFLARE TO EXPOSE YOUR PTERODACTYL AND WINGS.
subdirectory_arrow_right If panel and node are on different hosts (VPS(s))
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /2.pem -out /1.pem -subj "/CN=localhost"
sed -i 's|^\(\s*cert:\s*\).*|\1/1.pem|' /etc/pterodactyl/config.yml
sed -i 's|^\(\s*key:\s*\).*|\1/2.pem|' /etc/pterodactyl/config.yml
systemctl restart wings
subdirectory_arrow_right If panel and node are on same hosts (VPS)
sed -i 's|^\(\s*cert:\s*\).*|\1/1.pem|' /etc/pterodactyl/config.yml
sed -i 's|^\(\s*key:\s*\).*|\1/2.pem|' /etc/pterodactyl/config.yml
systemctl restart wings
Deployment Complete
Your Pterodactyl panel is now securely running behind Cloudflare. You can access it using your configured domain. If you see a green heart, congratulations — you’ve successfully set up Wings!