A rewrite of Pterodactyl Wings in the Rust programming language. This rewrite aims to be 100% API compatible while implementing new features, better performance and more stability.
For installation instructions, please refer to the Docs.
api:
# custom redirects for the api server, e.g. / -> https://yourpanel.comredirects: {}# max amount of active file pulls per serverserver_remote_download_limit: 3# cidrs to block on the remote download pull endpointremote_download_blocked_cidrs:
- '0.0.0.0/8'
- '127.0.0.0/8'
- '10.0.0.0/8'
- '100.64.0.0/10'
- '172.16.0.0/12'
- '192.168.0.0/16'
- '169.254.0.0/16'
- '192.0.0.0/24'
- '198.18.0.0/15'
- '224.0.0.0/4'
- '240.0.0.0/4'
- ::/128
- ::1/128
- fe80::/10
- fc00::/7
- 2002::/16
- ff00::/8# whether to disable the /openapi.json endpointdisable_openapi_docs: false# how many entries can be listed on a single page on the /list-directory API call, 0 means unlimiteddirectory_entry_limit: 10000# send server logs of an offline server when connecting to wssend_offline_server_logs: false# how many threads to use when searching files using file searchfile_search_threads: 4# how many threads to use when copying directoriesfile_copy_threads: 4# how many threads to use when decompressing .zip/.7z/.ddupfile_decompression_threads: 2# how many threads to use when compressing .gz/.xz/.7zfile_compression_threads: 2# how often a jwt can be used to download a file/backup until expiry, 0 means unlimited (2 minimum recommended)max_jwt_uses: 5system:
# path for temporary mountpoints for serversvmount_directory: /var/lib/pterodactyl/vmounts# how many concurrent disk checks to allow for all servers globally, this applies to all disk checks - so also partial checks.# 2 means no more than 2 servers will be checked at any given timedisk_check_concurrency: 2# how often to do a full disk check when inotify is used, this is to prevent gradual desync between the# actual disk usage and the inotify events. 6 means that a full disk check will be done every 6 inotify disk checks.# so, if disk_check_interval is 150 seconds, then a full disk check will be done every 900 seconds (15 minutes)full_disk_check_every: 6# apply a real quota limit to each server# none, btrfs_subvolume, zfs_dataset, xfs_quota, (experimental) fuse_quotadisk_limiter_mode: none# use inotify to selectively rescan disk usage instead of forcing full rescansdisk_check_use_inotify: true# use multiple threads to run chown on server startupcheck_permissions_on_boot_threads: 4sftp:
# whether to even enable to sftp (ssh) serverenabled: true# the algorithm to use for the ssh host keykey_algorithm: ssh-ed25519# whether to disable password auth for the sftp (ssh) serverdisable_password_auth: false# how many entries can be listed on readdir, 0 means unlimiteddirectory_entry_limit: 20000# how many entries to send on each readdir call (chunk size)directory_entry_send_amount: 500limits:
# how many failed password authentication attempts within cooldownauthentication_password_attempts: 3# how many failed public key authentication attempts within cooldownauthentication_pubkey_attempts: 20# how long in seconds to cooldown after reaching max authentication attempts (if 0, no cooldown is applied)# the cooldown is a sliding window, so if you make 3 failed attempts in 1 minute, you will have to wait 60 seconds from the last attemptauthentication_cooldown: 60# how many concurrent connections a single user can havemax_connections_per_user: 10# how many concurrent channels a single connection can havemax_channels_per_connection: 10# how many concurrent open handles a single channel can havemax_handles_per_channel: 32# how many concurrent open handles a single server can havemax_handles_total: 1024shell:
# whether to enable the wings remote shell (allows server management over ssh)enabled: truecli:
# what to call the internal cli for managing server actions (e.g. ".wings help")name: ".wings"activity:
# whether to log successful sftp logins in server activitylog_logins: false# whether to log file read actions in server activitylog_file_reads: falsefile_history:
enabled: truezstd_level: 19anchor_interval: 4keep_chains: 2file_size_cap: 1048576per_file_disk_budget: 5242880per_server_disk_budget: 209715200maintenance_interval: 3600backups:
# what compression level to use? best_speed, good_speed, good_compression, best_compression (higher compression = more CPU usage, better compression)compression_level: best_speed# allow browsing backups via the web file managermounting:
# whether backup "mounting" is enabledenabled: true# what the start of the path should be for browsing# in this case, ".backups/<backup uuid>"path: .backups# settings for the wings backup driverwings:
# how many threads to use when creating a .gz/.xz/.7z wings backupcreate_threads: 4# how many threads to use when restoring a zip wings backuprestore_threads: 4# what archive format to use for local (wings) backups# tar, tar_gz, tar_xz, tar_lzip, tar_bz2, tar_lz4, tar_zstd, zip, seven_ziparchive_format: tar_gz# settings for the s3 backup drivers3:
# how many threads to use when creating a .gz s3 backupcreate_threads: 4# how long in seconds to wait until a backup part is uploaded to s3part_upload_timeout: 7200# how often to attempt retrying each failed backup partretry_limit: 10# settings for the ddup-bak backup driverddup_bak:
# how many threads to use when creating a ddup-bak backupcreate_threads: 4# the compression format to use for each ddup-bak chunk# none, deflate, gzip, brotlicompression_format: deflate# settings for the restic backup driverrestic:
# the repository to use for restic backups (must already be initialized, can be overriden by panel)repository: /var/lib/pterodactyl/backups/restic# the password file to use for authenticating against the repository (can be overriden by panel)password-file: /var/lib/pterodactyl/backups/restic_password# how long to wait for a repository lock if locked in seconds (can be overriden by panel)retry_lock_seconds: 60# the restic cli environment for each command (useful for s3 credentials, etc, can be overriden by panel)environment: {}# settings for the btrfs backup driverbtrfs:
# how many threads to use when restoring a btrfs backup (snapshot)restore_threads: 4# whether to create the snapshots as read-onlycreate_read_only: true# settings for the zfs backup driverzfs:
# how many threads to use when restoring a zfs backup (snapshot)restore_threads: 4# settings for the pbs backup driverpbs:
# how many threads to use when creating a pbs backupcreate_threads: 4# how many download streams to use when restoring a pbs backupdownload_concurrency: 4docker:
# the docker-compatible socket or http address to connect tosocket: /var/run/docker.sock# whether to add (part) of the server name in the container nameserver_name_in_container_name: false# delete docker containers when a server is stopped/killed/crashes (a lot better for your cpu)delete_container_on_stop: truenetwork:
# whether to disable binding to a specific ipdisable_interface_binding: falseinterfaces:
v4:
# whether to enable ipv4 support for the docker networkenabled: truev6:
# whether to enable ipv6 support for the docker networkenabled: trueregistry_image_fetch_cache:
# whether to enable caching of docker registry image fetches (pulls)enabled: true# how long in seconds to cache docker registry image fetches (pulls)duration: 300installer_limits:
# how long in seconds to wait until an install container is considered failed, 0 means no limittimeout: 1800remote_headers: {}remote_query:
# how often to attempt retrying some important api requests (exponential backoff)retry_limit: 10# whether to ignore requests to upgrade wings remotelyignore_panel_wings_upgrades: falseGET /openapi.jsonendpoint for getting a full OpenAPI documentation of the wings APIGET /api/statsAPI endpoint for seeing node usageGET /api/system/logsAPI endpoint for listing all wings log filesGET /api/system/logs/{file}API endpoint for reading a wings log filePOST /api/system/upgradeAPI endpoint for remotely upgrading the wings binaryPOST /api/servers/{server}/scriptAPI endpoint for running custom scripts async on the serverPOST /api/servers/{server}/ws/permissionsAPI endpoint for live updating user permissions on a serverPOST /api/servers/{server}/ws/broadcastAPI endpoint for broadcasting a websocket message to multiple usersPOST /api/servers/{server}/install/abortAPI endpoint for aborting a server installation processGET /api/servers/{server}/logs/installAPI endpoint for getting server installation logsGET /api/servers/{server}/versionAPI endpoint for getting a version hash for a serverGET /api/servers/{server}/files/fingerprintsAPI endpoint for getting fingerprints for many files at onceGET /api/servers/{server}/files/listAPI endpoint for listing files with pagination and file sortingPOST /api/servers/{server}/files/searchAPI endpoint for searching for file names/contentGET /api/servers/{server}/download/directoryAPI endpoint for downloading directories on-the-fly as archives
- properly support egg
file_denylist - add support for browsing
.zip,.7z, and.dduparchives in the file manager - add support for browsing
/home/container/mounts as virtual directories in the file manager - add support for
nameproperty onPOST /api/servers/{server}/files/copy - add support for opening individual compressed file (e.g.
.log.gz) inGET /api/servers/{server}/files/contents - add (real) folder size support on
GET /api/servers/{server}/files/list-directory - add multithreading support to
POST /api/servers/{server}/files/decompress - add zip and 7z support to
POST /api/servers/{server}/files/compress - add support for
ignored_filesin the file upload jwt - allow transferring backups in server transfers
- reworked file operations so progress can be tracked via websocket events and in the background
- add ability to connect via ssh and access server console
- add
.wingsCLI to do basic server actions like power
- add support for the check-file SFTP extension
- add support for the copy-file SFTP extension
- add support for the space-available SFTP extension
- add support for the limits@openssh.com SFTP extension
- add support for the statvfs@openssh.com SFTP extension
- add support for the hardlink@openssh.com SFTP extension
- add support for the fsync@openssh.com SFTP extension
- add support for the lsetstat@openssh.com SFTP extension
- add support for the users-groups-by-id@openssh.com SFTP extension
- add support for the posix-rename@openssh.com SFTP extension
- properly support egg
file_denylist
- add
ddup-bakbackup driver - add
btrfsbackup driver - add
zfsbackup driver - add
resticbackup driver - add ability to create
zipand7zarchives onwingsbackup driver - add ability to browse backups (for some drivers)
- add
service-installcommand to automatically setup a service for wings - add
migrate-disk-limitercommand to migrate to btrfs/zfs disk limiter without needing to do a transfer for each server