Skip to content

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.

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.

Terminal window
sudo apt update && sudo apt -y upgrade
sudo apt -y install curl tar unzip
Terminal window
curl -fsSL https://get.docker.com | sudo bash
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

Re-login after adding the user to Docker group, or continue with sudo for immediate execution.

Terminal window
sudo mkdir -p /etc/pterodactyl
sudo mkdir -p /var/lib/pterodactyl
Terminal window
cd /usr/local/bin
sudo curl -L -o wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64"
sudo chmod u+x wings
wings --version

In Pterodactyl Panel:

  1. Go to Admin -> Nodes -> Create New.
  2. Set node name, FQDN, memory/disk limits, and allocation ranges.
  3. Save node and open the Configuration tab.
  4. Copy generated Wings configuration.

Write it to /etc/pterodactyl/config.yml on the node.

Open required ports:

  • 8080 (Wings API, if used directly)
  • 2022 (SFTP)
  • Allocation range for game servers (as configured in panel)

Example with UFW:

Terminal window
sudo ufw allow 8080/tcp
sudo ufw allow 2022/tcp
sudo ufw allow 25565/tcp
sudo ufw enable

Adjust game ports based on your allocation pool.

Create /etc/systemd/system/wings.service:

[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
[Install]
WantedBy=multi-user.target

Enable and start:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now wings

Check service logs:

Terminal window
sudo journalctl -u wings -f

Then in Panel, confirm the node shows as online and test server deployment.

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.

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.