Wings

Installing Wings

Install Wings, the service that runs your game servers, on a node.

Introduction

Wings runs on each node, manages Docker, and runs your game servers for the Panel. For the connections and ports it uses, see How Pterodactyl Works.

Pterodactyl 2.0 uses the same Wings as 1.x, and Wings 1.13.2 to 1.13.4 are tested with it.

Supported Systems

Wings supports these operating systems:

Operating SystemVersions
Ubuntu22.04, 24.04, 26.04
Debian12, 13

Other Linux distributions may work but often need changes to these steps, and we cannot help with them. Wings does not run on Windows.

System Requirements

Wings needs a Linux system that can run Docker containers. Most virtual private servers and nearly all dedicated servers can.

If your provider uses Virtuozzo, OpenVZ, or LXC virtualization, Wings probably will not run. Some providers support Docker anyway, so ask them. KVM always works.

To check your virtualization, run:

systemd-detect-virt

If the result is not openvz or lxc, Wings should work. none means the server is not virtualized.

Dependencies

Wings needs curl and Docker.

Installing Docker

Install Docker with Docker's install script:

curl -sSL https://get.docker.com/ | CHANNEL=stable bash

To install it by hand, follow the official Docker documentation.

Check your kernel

Some hosts use a modified kernel that lacks important Docker features. If uname -r ends in -xxxx-grs-ipv6-64 or -xxxx-mod-std-ipv6-64, ask your host to switch to your distribution's standard kernel.

Start Docker on Boot

On systemd systems, run this so Docker starts on boot:

sudo systemctl enable --now docker

Enabling Swap

Linux kernel 6.1 and newer enable swap accounting by default, so you can skip this step. Check your version with uname -r.

On older kernels, Docker usually cannot limit swap, and docker info prints WARNING: No swap limit support near the end. Enabling swap is optional, but we recommend it if you host servers for others, to help prevent out-of-memory errors.

To enable it, open /etc/default/grub as root and add swapaccount=1 inside the quotes of the GRUB_CMDLINE_LINUX_DEFAULT line, keeping anything already there:

GRUB_CMDLINE_LINUX_DEFAULT="swapaccount=1"

Then run sudo update-grub and sudo reboot. Some distributions ignore GRUB_CMDLINE_LINUX_DEFAULT. If the change has no effect, add the option to GRUB_CMDLINE_LINUX instead.

Installing Wings

Create the configuration directory, then download the Wings binary for your CPU:

sudo mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
sudo chmod u+x /usr/local/bin/wings

Configuring Wings

Create a node in the Panel, then give its configuration to Wings.

  1. In the Panel, open Admin → Nodes and click New node.
  2. Fill in the node's details, then save it.
  3. Open the node and select the Configuration tab.

The tab shows the node's configuration file. Configure Wings in one of two ways.

Using the Auto-Deploy Command

Click Generate Token under Auto-Deploy. The Panel shows a command like this:

cd /etc/pterodactyl && sudo wings configure --panel-url https://panel.example.com --token ptla_... --node 1

Run it on the node. It saves the configuration from the Panel to /etc/pterodactyl/config.yml. If the file exists, add --override to replace it.

Copying the Configuration File

Or copy the file from the Configuration tab to /etc/pterodactyl/config.yml on the node. The tab fills in remote from the address you opened the Panel with, so check that it is your Panel's address.

If your Panel uses HTTPS, Wings also needs a certificate for its own domain name.

Starting Wings

Start Wings in debug mode to check that it works:

sudo wings --debug

The first start may take a few minutes while Wings sets up Docker. Once it runs without errors, stop it with CTRL+C and run it as a service.

Running Wings as a Service

To run Wings in the background, create wings.service in /etc/systemd/system:

[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

Then enable and start it:

sudo systemctl enable --now wings

Adding Allocations

An allocation is an IP address and port you can assign to a server. Every server needs at least one. To add them, open the node in Admin → Nodes and select the Allocation tab.

Use the IP address of the node's network interface, or the internal IP address behind NAT. To find it, run:

hostname -I | awk '{print $1}'

Do not use 127.0.0.1 for allocations players connect to. It is only for servers that other servers on the node connect to, such as the backend servers of a Minecraft proxy network.

Edit on GitHub

Last updated on

On this page