Install Pterodactyl Wings
This guide covers deployment of Pterodactyl Wings on a Linux node for production game hosting. It assumes your panel is already installed and reachable. If not, start with Install Pterodactyl Panel.
Before You Start
Section titled “Before You Start”Prepare a dedicated node with virtualization support, stable network, and adequate CPU and NVMe performance for your game workloads. For predictable routing and operations, deploy the node on an UltraVM VPS.
Step 1: Base System Update
Section titled “Step 1: Base System Update”sudo apt update && sudo apt -y upgradesudo apt -y install curl tar unzipStep 2: Install Docker Engine
Section titled “Step 2: Install Docker Engine”curl -fsSL https://get.docker.com | sudo bashsudo systemctl enable --now dockersudo usermod -aG docker $USERRe-login after adding the user to Docker group, or continue with sudo for immediate execution.
Step 3: Create Required Directories
Section titled “Step 3: Create Required Directories”sudo mkdir -p /etc/pterodactylsudo mkdir -p /var/lib/pterodactylStep 4: Download Wings Binary
Section titled “Step 4: Download Wings Binary”cd /usr/local/binsudo curl -L -o wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64"sudo chmod u+x wingswings --versionStep 5: Configure Node in Panel
Section titled “Step 5: Configure Node in Panel”In Pterodactyl Panel:
- Go to
Admin->Nodes->Create New. - Set node name, FQDN, memory/disk limits, and allocation ranges.
- Save node and open the
Configurationtab. - Copy generated Wings configuration.
Write it to /etc/pterodactyl/config.yml on the node.
Step 6: Firewall Ports
Section titled “Step 6: Firewall Ports”Open required ports:
8080(Wings API, if used directly)2022(SFTP)- Allocation range for game servers (as configured in panel)
Example with UFW:
sudo ufw allow 8080/tcpsudo ufw allow 2022/tcpsudo ufw allow 25565/tcpsudo ufw enableAdjust game ports based on your allocation pool.
Step 7: Create systemd Service
Section titled “Step 7: Create systemd Service”Create /etc/systemd/system/wings.service:
[Unit]Description=Pterodactyl Wings DaemonAfter=docker.serviceRequires=docker.servicePartOf=docker.service
[Service]User=rootWorkingDirectory=/etc/pterodactylLimitNOFILE=4096PIDFile=/var/run/wings/daemon.pidExecStart=/usr/local/bin/wingsRestart=on-failureStartLimitInterval=180StartLimitBurst=30RestartSec=5s
[Install]WantedBy=multi-user.targetEnable and start:
sudo systemctl daemon-reloadsudo systemctl enable --now wingsStep 8: Validate Node Registration
Section titled “Step 8: Validate Node Registration”Check service logs:
sudo journalctl -u wings -fThen in Panel, confirm the node shows as online and test server deployment.
Optional: Reverse Proxy and TLS
Section titled “Optional: Reverse Proxy and TLS”For hardened deployments, terminate TLS via NGINX or Cloudflare Tunnel in front of Wings endpoints used externally. Keep internal control-plane paths restricted with source ACLs.
Operational Notes
Section titled “Operational Notes”Monitor CPU steal, disk latency, and packet loss for each node. For low-latency game workloads, align Wings node placement with Regional Connectivity and Low-Latency Routing guidance.