Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/pterodactyl/wings/llms.txt

Use this file to discover all available pages before exploring further.

This page covers common issues you may encounter when running Pterodactyl Wings and their solutions.

Installation Issues

Error Message:
Error: Configuration File Not Found
Wings was not able to locate your configuration file
Solution:Wings looks for the configuration file at /etc/pterodactyl/config.yml by default (defined in config/config.go:31).
  1. Ensure the configuration file exists:
    ls -la /etc/pterodactyl/config.yml
    
  2. If using a custom location, specify it with the --config flag:
    wings --config /path/to/config.yml
    
  3. Verify file permissions (should be readable by Wings):
    chmod 600 /etc/pterodactyl/config.yml
    
Error Message:
failed to create pterodactyl system user
Solution:Wings requires a dedicated system user to own server files. The default username is pterodactyl (configurable in config.yml).For most Linux distributions:
useradd --system --no-create-home --shell /usr/sbin/nologin pterodactyl
For Alpine Linux:
addgroup -S pterodactyl
adduser -S -D -H -G pterodactyl -s /sbin/nologin pterodactyl
Verify the user was created:
id pterodactyl
Error Message:
failed to configure system directories for pterodactyl
Solution:Wings needs to create several directories. Ensure the parent directories exist and have proper permissions:Default directories (from config/config.go):
  • Root: /var/lib/pterodactyl
  • Data: /var/lib/pterodactyl/volumes
  • Archives: /var/lib/pterodactyl/archives
  • Backups: /var/lib/pterodactyl/backups
  • Logs: /var/log/pterodactyl
  • Temp: /tmp/pterodactyl
Create directories manually:
mkdir -p /var/lib/pterodactyl/{volumes,archives,backups}
mkdir -p /var/log/pterodactyl
mkdir -p /tmp/pterodactyl
chown -R pterodactyl:pterodactyl /var/lib/pterodactyl
chown -R pterodactyl:pterodactyl /var/log/pterodactyl
Error Message:
failed to configure log rotation on the system
Solution:Wings automatically creates a logrotate configuration at /etc/logrotate.d/wings if the directory exists.
  1. Verify logrotate is installed:
    which logrotate
    
  2. Check if the directory exists:
    ls -ld /etc/logrotate.d
    
  3. If you don’t want automatic log rotation, disable it in config.yml:
    system:
      enable_log_rotate: false
    
  4. Manually create the logrotate config if needed:
    cat > /etc/logrotate.d/wings << 'EOF'
    /var/log/pterodactyl/wings.log {
        size 10M
        compress
        delaycompress
        dateext
        maxage 7
        missingok
        notifempty
        postrotate
            /usr/bin/systemctl kill -s HUP wings.service >/dev/null 2>&1 || true
        endscript
    }
    EOF
    

Docker Issues

Error Message:
failed to configure docker environment
Possible Causes & Solutions:
  1. Docker is not running:
    systemctl status docker
    systemctl start docker
    
  2. Docker socket permission denied:
    # Add the user running Wings to the docker group
    usermod -aG docker $USER
    # Or if running as root, check socket permissions
    ls -la /var/run/docker.sock
    
  3. Docker API version mismatch: Wings uses API version negotiation. Check your Docker version:
    docker version
    
    Ensure you’re running Docker 20.10 or newer.
  4. Network creation failed: The default network name is pterodactyl_nw. Check for conflicts:
    docker network ls
    docker network inspect pterodactyl_nw
    
    If there’s a conflict, remove the old network:
    docker network rm pterodactyl_nw
    
Error Context: Wings uses a 30-second timeout when checking container status during boot to prevent hanging (see cmd/root.go:220).Solutions:
  1. Check Docker daemon logs:
    journalctl -u docker -n 100 --no-pager
    
  2. Inspect the container:
    docker ps -a | grep <server-uuid>
    docker logs <container-id>
    
  3. Check available disk space:
    df -h
    docker system df
    
  4. Verify image exists:
    docker images
    
    If the image is missing, Wings will pull it on first start (may take time).
  5. Check for resource limits: Ensure the server has enough memory and CPU allocated.
Error: Issues with pterodactyl0 bridge interfaceSolution:The network configuration is defined in config.yml:
docker:
  network:
    interface: 172.18.0.1
    name: pterodactyl_nw
    ispn: false
    driver: bridge
    network_mode: pterodactyl_nw
    is_internal: false
    enable_icc: true
    network_mtu: 1500
    interfaces:
      v4:
        subnet: 172.18.0.0/16
        gateway: 172.18.0.1
      v6:
        subnet: fdba:17c8:6c94::/64
        gateway: fdba:17c8:6c94::1011
  1. Check for IP conflicts:
    ip addr show
    
    Ensure 172.18.0.0/16 doesn’t conflict with existing networks.
  2. Recreate the network:
    docker network rm pterodactyl_nw
    systemctl restart wings
    
  3. For custom networks: Edit config.yml and adjust the subnet/gateway.

Connection Problems

Default Configuration:
  • Host: 0.0.0.0
  • Port: 8080
  • SSL: Disabled by default
Troubleshooting:
  1. Verify Wings is listening:
    netstat -tlnp | grep :8080
    # or
    ss -tlnp | grep :8080
    
  2. Check firewall rules:
    # UFW
    ufw status
    ufw allow 8080/tcp
    
    # firewalld
    firewall-cmd --list-all
    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload
    
    # iptables
    iptables -L -n | grep 8080
    
  3. Test connectivity:
    curl -k https://your-wings-ip:8080/api/system
    
  4. Check SSL configuration in config.yml:
    api:
      host: 0.0.0.0
      port: 8080
      ssl:
        enabled: true
        cert: /etc/letsencrypt/live/example.com/fullchain.pem
        key: /etc/letsencrypt/live/example.com/privkey.pem
    
  5. Verify certificate validity:
    openssl x509 -in /path/to/cert.pem -text -noout
    
Default SFTP Configuration:
  • Address: 0.0.0.0
  • Port: 2022
Common Issues:
  1. Port not accessible:
    netstat -tlnp | grep :2022
    # Allow in firewall
    ufw allow 2022/tcp
    
  2. Invalid credentials:
    • SFTP uses the format: username.serverid
    • The username must match the regex pattern: ^(?i)(.+)\.([a-z0-9]{8})$
    • Password is verified against the Panel API
  3. Authentication failures: Check Wings logs:
    tail -f /var/log/pterodactyl/wings.log | grep sftp
    
    Common error: the credentials provided were invalid
    • Verify Panel is accessible from Wings
    • Check API token in config.yml
  4. Read-only mode: If SFTP is in read-only mode, check config.yml:
    system:
      sftp:
        read_only: false
    
  5. Check SFTP server logs: Wings logs SFTP connections with the client IP:
    journalctl -u wings -f | grep sftp
    
Error: Panel shows Wings as offline or unreachableChecklist:
  1. Verify Wings is running:
    systemctl status wings
    journalctl -u wings -n 50
    
  2. Check token configuration: The token in Wings config.yml must match the Panel:
    token_id: "your-token-id"
    token: "your-secret-token"
    
    Wings also supports environment variables:
    export WINGS_TOKEN_ID="your-token-id"
    export WINGS_TOKEN="your-secret-token"
    
    And file-based tokens (useful with systemd credentials):
    token: "file://${CREDENTIALS_DIRECTORY}/token"
    
  3. Verify remote query settings in config.yml:
    remote: "https://panel.example.com"
    remote_query:
      timeout: 30
      boot_servers_per_page: 50
    
  4. Test Panel connectivity from Wings:
    curl -I https://panel.example.com
    
  5. Check for certificate errors: If using self-signed certificates, you may need:
    wings --ignore-certificate-errors
    
    Only use --ignore-certificate-errors for testing. In production, use valid SSL certificates.

Configuration Issues

Error Message:
failed to detect system timezone or use supplied configuration value
Solution:Wings attempts to auto-detect timezone from:
  1. TZ environment variable
  2. /etc/timezone file
  3. timedatectl command
  4. Falls back to UTC
Manual configuration in config.yml:
system:
  timezone: America/New_York
Verify timezone:
timedatectl
cat /etc/timezone
Context: Wings saves server states to disk every minute in /var/lib/pterodactyl/states.json to survive reboots.If servers don’t restart after reboot:
  1. Check states file:
    cat /var/lib/pterodactyl/states.json
    
  2. Verify file permissions:
    ls -la /var/lib/pterodactyl/states.json
    chown pterodactyl:pterodactyl /var/lib/pterodactyl/states.json
    
  3. Check Wings logs for state errors:
    journalctl -u wings | grep "states"
    
Error: Server cannot write to files or directoriesSolution:Wings uses the configured system user (default: pterodactyl UID/GID 988).
  1. Check current ownership:
    ls -la /var/lib/pterodactyl/volumes/<server-uuid>/
    
  2. Fix ownership recursively:
    chown -R pterodactyl:pterodactyl /var/lib/pterodactyl/volumes/<server-uuid>/
    
  3. Enable automatic permission checks in config.yml:
    system:
      check_permissions_on_boot: true
    
Setting check_permissions_on_boot: false can speed up boot times but may cause permission issues.

See Also