Wings Installation

Wings is the server control plane for Pterodactyl/Trexzactyl that handles all server management, Docker container creation, and file operations.

Prerequisites

Before installing Wings:

  1. Panel Installed: Panel must be installed first
  2. Node Created: Create a node in the panel admin area
  3. Docker Support: Server must support Docker
  4. Ports Open: Required ports must be accessible

Automatic Installation

The easiest way to install Wings:

bash <(curl -s http://installer.trexz.xyz/install.sh)

Select 2. Install Wings from the menu.

The installer will:

  1. Install Docker
  2. Install Wings binary
  3. Configure Wings service
  4. Set up automatic startup
  5. Configure firewall rules

Manual Installation

Install Docker

curl -sSL https://get.docker.com/ | CHANNEL=stable bash
sudo systemctl enable --now docker

Install Wings

Download the latest Wings binary:

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

Configure Wings

  1. Create a node in the panel admin area
  2. Copy the configuration from the panel
  3. Save to /etc/pterodactyl/config.yml

Example configuration:

debug: false
uuid: your-node-uuid
token_id: your-token-id
token: your-token
api:
  host: 0.0.0.0
  port: 8080
  ssl:
    enabled: false
  upload_limit: 100
system:
  root_directory: /var/lib/pterodactyl/volumes
  log_directory: /var/log/pterodactyl
  data: /var/lib/pterodactyl
  sftp:
    bind_port: 2022
allowed_mounts: []
remote: https://panel.example.com

Create Systemd Service

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:

sudo systemctl enable --now wings

Configuration

Node Configuration in Panel

  1. Navigate to Admin Panel → Nodes
  2. Click Create New
  3. Fill in details:
    • Name: Node name
    • Location: Select location
    • FQDN: node.example.com
    • Scheme: HTTPS (if using SSL)
    • Memory: Total RAM in MB
    • Disk: Total disk space in MB
    • Daemon Port: 8080
    • SFTP Port: 2022

Allocations

Add IP allocations for game servers:

# In panel admin area
# Navigate to Node → Allocations
# Add IP and port range
# Example: 192.168.1.100 ports 25565-25665

SSL Configuration for Wings

If using SSL for Wings API:

  1. Generate certificate:
sudo certbot certonly --standalone -d node.example.com
  1. Update config.yml:
api:
  ssl:
    enabled: true
    cert: /etc/letsencrypt/live/node.example.com/fullchain.pem
    key: /etc/letsencrypt/live/node.example.com/privkey.pem
  1. Restart Wings:
sudo systemctl restart wings

Firewall Configuration

Required Ports

  • 8080: Wings API (panel communication)
  • 2022: SFTP (file management)
  • 25565-25665: Game server ports (example range)

UFW Configuration

# Wings API
sudo ufw allow 8080/tcp

# SFTP
sudo ufw allow 2022/tcp

# Game server ports
sudo ufw allow 25565:25665/tcp
sudo ufw allow 25565:25665/udp

iptables Configuration

# Wings API
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# SFTP
sudo iptables -A INPUT -p tcp --dport 2022 -j ACCEPT

# Game server ports
sudo iptables -A INPUT -p tcp --dport 25565:25665 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 25565:25665 -j ACCEPT

Docker Configuration

Storage Driver

Check Docker storage driver:

docker info | grep "Storage Driver"

Recommended: overlay2

Docker Daemon Configuration

Edit /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}

Restart Docker:

sudo systemctl restart docker

Management

Service Control

# Start Wings
sudo systemctl start wings

# Stop Wings
sudo systemctl stop wings

# Restart Wings
sudo systemctl restart wings

# Check status
sudo systemctl status wings

# View logs
sudo journalctl -u wings -f

Update Wings

# Stop Wings
sudo systemctl stop wings

# Download latest version
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")"

# Set permissions
sudo chmod u+x /usr/local/bin/wings

# Start Wings
sudo systemctl start wings

Or use the installer:

bash <(curl -s http://installer.trexz.xyz/install.sh)
# Select option 6. Update Wings

Debug Mode

Enable debug logging in /etc/pterodactyl/config.yml:

debug: true

Restart Wings and check logs:

sudo systemctl restart wings
sudo journalctl -u wings -f

Troubleshooting

Wings Won't Start

Check logs:

sudo journalctl -u wings -n 50

Common issues:

  • Invalid configuration
  • Docker not running
  • Port already in use
  • Permission issues

Connection Issues

Test Wings API:

curl http://localhost:8080

Check firewall:

sudo ufw status

Docker Issues

Check Docker status:

sudo systemctl status docker

Test Docker:

sudo docker ps
sudo docker run hello-world

SFTP Not Working

Check SFTP port:

sudo netstat -tlnp | grep 2022

Test SFTP connection:

sftp -P 2022 user@node.example.com

Container Creation Failed

Check Docker logs:

sudo docker logs <container-id>

Verify Docker has enough resources:

df -h
free -h

Performance Tuning

System Limits

Edit /etc/security/limits.conf:

* soft nofile 4096
* hard nofile 4096

Docker Resource Limits

In Wings config.yml:

docker:
  network:
    name: pterodactyl_nw
  tmpfs_size: 100
  container:
    user: 988

Kernel Parameters

Edit /etc/sysctl.conf:

net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
fs.file-max=2097152

Apply changes:

sudo sysctl -p

Monitoring

Resource Usage

# CPU and Memory
docker stats

# Disk usage
docker system df

# Container list
docker ps -a

Wings Metrics

Wings exposes metrics on the API endpoint:

curl http://localhost:8080/api/system

Log Monitoring

# Real-time logs
sudo journalctl -u wings -f

# Last 100 lines
sudo journalctl -u wings -n 100

# Logs from today
sudo journalctl -u wings --since today

Security

Best Practices

  1. Firewall: Only open required ports
  2. Updates: Keep Wings and Docker updated
  3. SSL: Use SSL for Wings API
  4. Monitoring: Monitor logs for suspicious activity
  5. Backups: Regular backups of server data

Docker Security

# Enable Docker content trust
export DOCKER_CONTENT_TRUST=1

# Scan images for vulnerabilities
docker scan <image-name>

Multiple Nodes

To run multiple Wings nodes:

  1. Create separate nodes in panel
  2. Install Wings on each server
  3. Use unique configuration for each
  4. Distribute servers across nodes for load balancing

Backup and Restore

Backup Server Data

# Backup all server volumes
tar -czf wings-backup-$(date +%Y%m%d).tar.gz /var/lib/pterodactyl/volumes

Restore Server Data

# Stop Wings
sudo systemctl stop wings

# Restore volumes
tar -xzf wings-backup.tar.gz -C /

# Start Wings
sudo systemctl start wings

Useful Commands

# Check Wings version
wings --version

# Validate configuration
wings configure

# View Wings help
wings --help

# Check Docker version
docker --version

# Clean up Docker
docker system prune -a