Skip to content

pterodactyl wings daemon rewritten in the rust programming language with additional features.

License

Notifications You must be signed in to change notification settings

pterodactyl-rs/wings

Repository files navigation

pterodactyl-rs wings (close to official stability)

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.

quick installation

please remember to update atleast weekly

sudo curl -L "https://github.com/pterodactyl-rs/wings/releases/latest/download/wings-rs-$(uname -m)-linux$(ldd --version 2>&1 | grep -q 'GLIBC 2.3[5-9]\|GLIBC 2.[4-9]' || echo '-musl')" -o /usr/local/bin/wings
sudo chmod +x /usr/local/bin/wings

wings version

added config options

api:
  # 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

system:
  # apply a real quota limit to each server
  # none, btrfs_subvolume, zfs_dataset, xfs_quota
  disk_limiter_mode: none

  sftp:
    # the algorithm to use for the ssh host key
    key_algorithm: ssh-ed25519
    # whether to disable password auth for the sftp 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:
    # 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 restoring a zip wings backup
      restore_threads: 4
      # what archive format to use for local (wings) backups
      # tar, tar_gz, tar_zstd, zip
      archive_format: tar_gz

    # 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
      # whether to ignore the panel restic backup list (only if you know what you are doing)
      ignore_server_backup_list: false
      # 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_seconds: 1800

added features

api

  • GET /openapi.json endpoint for getting a full OpenAPI documentation of the wings api
  • GET /api/stats api endpoint for seeing node usage
  • POST /api/servers/{server}/script api endpoint for running custom scripts async on the server
  • POST /api/servers/{server}/ws/permissions api endpoint for live updating user permissions on a server
  • GET /api/servers/{server}/version api endpoint for getting a version hash for a server
  • GET /api/servers/{server}/files/fingerprints api endpoint for getting fingerprints for many files at once
  • GET /api/servers/{server}/files/list api endpoint for listing files with pagination
  • POST /api/servers/{server}/files/search api endpoint for searching for file names/content
  • GET /api/servers/{server}/download/directory api endpoint for downloading directories on-the-fly as .tar.gzs

  • properly support egg file_denylist
  • add support for name property on POST /api/servers/{server}/files/copy
  • add support for opening individual compressed file (e.g. .log.gz) in GET /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_files in the file upload jwt
  • allow transferring backups in server transfers

shell

  • add ability to connect via ssh and access server console
  • add .wings cli to do basic server actions like power

sftp

backups

  • add ddup-bak backup driver
  • add btrfs backup driver
  • add zfs backup driver
  • add restic backup driver
  • add ability to create zip archives on wings backup driver
  • add ability to browse backups (for some drivers)

cli

  • add service-install command to automatically setup a service for wings

About

pterodactyl wings daemon rewritten in the rust programming language with additional features.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors 3

  •  
  •  
  •  

Languages