a rewrite of pterodactyl wings in the rust programming language. this rewrite aims to be 100% API compatible while implementing new features and better performance.
sudo curl -L "https://github.com/calagopus/wings/releases/latest/download/wings-rs-$(uname -m)-linux" -o /usr/local/bin/wings
sudo chmod +x /usr/local/bin/wings
wings versionapi:
# max amount of active file pulls per server
server_remote_download_limit: 3
# cidrs to block on the remote download pull endpoint
remote_download_blocked_cidrs:
- '127.0.0.0/8'
- '10.0.0.0/8'
- '172.16.0.0/12'
- '192.168.0.0/16'
- '169.254.0.0/16'
- ::1
- fe80::/10
- fc00::/7
# whether to disable the /openapi.json endpoint
disable_openapi_docs: false
# how many entries can be listed on a single page on the /list-directory API call, 0 means unlimited
directory_entry_limit: 10000
# send server logs of an offline server when connecting to ws
send_offline_server_logs: false
# how many threads to use when searching files using file search
file_search_threads: 4
# how many threads to use when decompressing .zip/.7z/.ddup
file_decompression_threads: 2
# how many threads to use when compressing .gz/.xz/.7z
file_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: 5
system:
# apply a real quota limit to each server
# none, btrfs_subvolume, zfs_dataset, xfs_quota
disk_limiter_mode: none
# use multiple threads to check disk usage (usually lower to reduce load)
disk_limiter_threads: 2
# use multiple threads to run chown on server startup
check_permissions_on_boot_threads: 4
sftp:
# whether to even enable to sftp (ssh) server
enabled: true
# the algorithm to use for the ssh host key
key_algorithm: ssh-ed25519
# whether to disable password auth for the sftp (ssh) server
disable_password_auth: false
# how many entries can be listed on readdir, 0 means unlimited
directory_entry_limit: 20000
# how many entries to send on each readdir call (chunk size)
directory_entry_send_amount: 500
shell:
# whether to enable the wings remote shell (allows server management over ssh)
enabled: true
cli:
# what to call the internal cli for managing server actions (e.g. ".wings help")
name: ".wings"
backups:
# 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 manager
mounting:
# whether backup "mounting" is enabled
enabled: true
# what the start of the path should be for browsing
# in this case, ".backups/<backup uuid>"
path: .backups
# settings for the wings backup driver
wings:
# how many threads to use when creating a .gz/.xz/.7z wings backup
create_threads: 4
# how many threads to use when restoring a zip wings backup
restore_threads: 4
# what archive format to use for local (wings) backups
# tar, tar_gz, tar_xz, tar_bz2, tar_lz4, tar_zstd, zip, seven_zip
archive_format: tar_gz
# settings for the s3 backup driver
s3:
# how many threads to use when creating a .gz s3 backup
create_threads: 4
# how long in seconds to wait until a backup part is uploaded to s3
part_upload_timeout: 7200
# how often to attempt retrying each failed backup part
retry_limit: 10
# settings for the ddup-bak backup driver
ddup_bak:
# how many threads to use when creating a ddup-bak backup
create_threads: 4
# the compression format to use for each ddup-bak chunk
# none, deflate, gzip, brotli
compression_format: deflate
# settings for the restic backup driver
restic:
# 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 driver
btrfs:
# how many threads to use when restoring a btrfs backup (snapshot)
restore_threads: 4
# whether to create the snapshots as read-only
create_read_only: true
# settings for the zfs backup driver
zfs:
# how many threads to use when restoring a zfs backup (snapshot)
restore_threads: 4
docker:
# the docker-compatible socket or http address to connect to
socket: /var/run/docker.sock
# whether to add (part) of the server name in the container name
server_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: true
network:
# whether to disable binding to a specific ip
disable_interface_binding: false
installer_limits:
# how long in seconds to wait until an install container is considered failed, 0 means no limit
timeout: 1800
remote_headers: {}
remote_query:
# how often to attempt retrying some important api requests (exponential backoff)
retry_limit: 10GET /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}/install/abortapi endpoint for aborting a server installation processGET /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 paginationPOST /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
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
- 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
- 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