system | object | | SystemConfiguration defines basic system configuration settings. |
system.check_install_exit_code | bool | false | CheckInstallExitCode marks a server installation as failed when the install script exits with a non-zero code, or the container wait reports an error. It is disabled by default to keep the historic behaviour, where every installation that ran to completion was reported to the Panel as successful. |
system.root_directory | string | /var/lib/featherpanel | The root directory where all of the featherpanel data is stored at. |
system.log_directory | string | /var/log/featherpanel | Directory where logs for server installations and other wings events are logged. |
system.data | string | /var/lib/featherpanel/volumes | Directory where the server data is stored at. |
system.archive_directory | string | /var/lib/featherpanel/archives | Directory where server archives for transferring will be stored. |
system.backup_directory | string | /var/lib/featherpanel/backups | Directory where local backups will be stored on the machine. |
system.node_backup_directory | string | /var/lib/featherpanel/wings_backup | Directory where whole-node Wings backups are stored (outside volumes so they are not exposed over SFTP). |
system.diffs_directory | string | /var/lib/featherpanel/diffs | Directory where per-server file revision databases are stored. |
system.tmp_directory | string | /tmp/featherpanel | TmpDirectory specifies where temporary files for featherpanel installation processes should be created. This supports environments running docker-in-docker. |
system.username | string | featherpanel | The user that should own all of the server files, and be used for containers. |
system.timezone | string | | The timezone for this Wings instance. This is detected by Wings automatically if possible, and falls back to UTC if not able to be detected. If you need to set this manually, that can also be done. This timezone value is passed into all containers created by Wings. |
system.user | object | | Definitions for the user that gets created to ensure that we can quickly access this information without constantly having to do a system lookup. |
system.user.rootless | struct | | Rootless controls settings related to rootless container daemons. |
system.user.uid | int | | |
system.user.gid | int | | |
system.user.mount_passwd | bool | true | Passwd controls weather a passwd file is mounted in the container at /etc/passwd to resolve missing user issues |
system.user.passwd_file | string | /etc/featherpanel/passwd | |
system.machine_id | object | | MachineID controls the mounting of a generated `/etc/machine-id` file into containers started by Wings. |
system.machine_id.enabled | bool | true | Enable controls whether a generated machine-id file should be mounted into containers. By default this option is enabled and Wings will mount an additional machine-id file into containers. |
system.machine_id.directory | string | /run/wings/machine-id | Directory is the directory on disk where the generated machine-id files will be stored. This directory may be temporary as it will be re-created whenever Wings is started. This path **WILL** be both written to by Wings and mounted into containers created by Wings. If you are running Wings itself in a container, this path will need to be mounted into the Wings container as the exact path on the host, which should match the value specified here. If you are using SELinux, you will need to make sure this file has the correct SELinux context in order for containers to use it. |
system.disk_check_interval | int64 | 150 | The amount of time in seconds that can elapse before a server's disk space calculation is considered stale and a re-check should occur. DANGER: setting this value too low can seriously impact system performance and cause massive I/O bottlenecks and high CPU usage for the Wings process. Set to 0 to disable disk checking entirely. This will always return 0 for the disk space used by a server and should only be set in extreme scenarios where performance is critical and disk usage is not a concern. |
system.quotas | object | | Quotas define is quota management is enabled on the Data directory |
system.quotas.enabled | bool | false | |
system.activity_send_interval | int | 60 | ActivitySendInterval is the amount of time that should ellapse between aggregated server activity being sent to the Panel. By default this will send activity collected over the last minute. Keep in mind that only a fixed number of activity log entries, defined by ActivitySendCount, will be sent in each run. |
system.activity_send_count | int | 100 | ActivitySendCount is the number of activity events to send per batch. |
system.status_sync_interval | int | 300 | StatusSyncInterval is how often (in seconds) Wings re-reports each server's power state to the Panel. This keeps the Panel database accurate if a transition push was missed (daemon restart, temporary Panel outage, etc). Set to 0 to disable. Defaults to 300 (5 minutes). |
system.check_permissions_on_boot | bool | true | If set to true, file ownership for a server will be synced to the Wings user when the process is booted (recursive chown). On large trees this can still take noticeable time; chown is skipped for files that already match the configured uid/gid. Set false if external tools do not modify ownership, or use a dedicated repair action when needed. |
system.enable_log_rotate | bool | true | If set to false Wings will not attempt to write a log rotate configuration to the disk when it boots and one is not detected. |
system.websocket_log_count | int | 150 | The number of lines to send when a server connects to the websocket. |
system.file_collaboration | object | | FileCollaboration controls real-time collaborative file editing over the server websocket (Yjs CRDT), compatible with Calagopus-style clients. |
system.file_collaboration.enabled | bool | true | Enabled turns collaborative editing on or off for this node. |
system.file_collaboration.file_size_cap | uint64 | 1048576 | FileSizeCap is the maximum file size in bytes that can be collaboratively edited. |
system.file_collaboration.max_sessions_per_server | uint64 | 16 | MaxSessionsPerServer limits concurrent collab sessions (files) per server. |
system.file_collaboration.max_sessions_per_connection | uint64 | 8 | MaxSessionsPerConnection limits how many files one websocket may edit at once. |
system.file_collaboration.max_editors_per_session | uint64 | 32 | MaxEditorsPerSession limits editor tabs for the same file on one connection. |
system.file_collaboration.max_cursors_per_connection | uint64 | 64 | MaxCursorsPerConnection limits awareness cursors tracked per connection. |
system.file_collaboration.session_grace_period | uint64 | 30 | SessionGracePeriod is how long (seconds) an empty session is kept before teardown. |
system.file_history | object | | FileHistory controls Calagopus-compatible file revision snapshots. |
system.file_history.enabled | bool | true | |
system.file_history.zstd_level | int | 3 | |
system.file_history.anchor_interval | uint64 | 4 | |
system.file_history.keep_chains | uint64 | 5 | |
system.file_history.file_size_cap | uint64 | 1048576 | |
system.file_history.per_file_disk_budget | uint64 | 5242880 | |
system.file_history.per_server_disk_budget | uint64 | 209715200 | |
system.file_history.maintenance_interval | uint64 | 3600 | |
system.sftp | object | | SftpConfiguration defines the configuration of the internal SFTP server. |
system.sftp.bind_address | string | 0.0.0.0 | The bind address of the SFTP server. |
system.sftp.bind_port | int | 2022 | The bind port of the SFTP server. |
system.sftp.read_only | bool | false | If set to true, no write actions will be allowed on the SFTP server. |
system.sftp.max_connections_per_user | int | | The maximum number of connections a single user may have open at once, or zero to use the default of 32. |
system.sftp.max_authenticating_connections_per_ip | int | | The maximum number of connections from a single IP address, or IPv6 /64 network, that may be authenticating at once, or zero to use the default of 16. Raise this if clients connect through a proxy, since they then all appear to come from the address of the proxy. |
system.sftp.key_only | bool | false | If set to true users won't be able to login using their password. |
system.sftp.allow_console_shell | bool | true | AllowConsoleShell permits interactive SSH (shell/PTY) access to the game console for anyone who successfully authenticates on this listener. When false, the panel must include "control.console" in SFTP validation permissions (file-only subusers cannot open a shell). |
system.fastdl | object | | |
system.fastdl.enabled | bool | false | Enabled controls whether FastDL is enabled. When enabled, nginx configuration will be generated for servers that have FastDL enabled. Requires nginx to be installed. |
system.fastdl.bind_port | int | 80 | The bind port for the nginx FastDL server. |
system.fastdl.public_hostname | string | | PublicHostname is the hostname clients use in sv_downloadurl (node FQDN). When empty, falls back to extracting a host from PanelLocation (legacy). |
system.fastdl.nginx_config_path | string | /etc/nginx/sites-available/featherwings-fastdl | NginxConfigPath is the path where nginx config files will be written. Defaults to /etc/nginx/sites-available/featherwings-fastdl |
system.crash_detection | object | | |
system.crash_detection.enabled | bool | true | CrashDetectionEnabled sets if crash detection is enabled globally for all servers on this node. |
system.crash_detection.detect_clean_exit_as_crash | bool | true | Determines if Wings should detect a server that stops with a normal exit code of "0" as being crashed if the process stopped without any Wings interaction. E.g. the user did not press the stop button, but the process stopped cleanly. |
system.crash_detection.timeout | int | 60 | Timeout specifies the timeout between crashes that will not cause the server to be automatically restarted, this value is used to prevent servers from becoming stuck in a boot-loop after multiple consecutive crashes. |
system.crash_detection.max_restarts | int | 0 | MaxRestarts specifies how many times a server may be automatically restarted after a crash before Wings stops attempting to recover it. The counter resets when the server is manually started. A value of 0 disables this limit. |
system.crash_detection_activity_lines | int | 2 | The ammount of lines the activity logs should log on server crash |
system.host_terminal | object | | HostTerminal controls interactive shell access to the host over websockets. |
system.host_terminal.enabled | bool | true | Enabled toggles whether the host terminal websocket is available. |
system.host_terminal.shell | string | /bin/bash | Shell specifies the shell executable to launch for terminal sessions. |
system.host_terminal.disabled_commands | []string | | DisabledCommands is a list of commands (full command or executable name) that cannot be executed. |
system.backups | object | | |
system.backups.write_limit | int | 0 | WriteLimit imposes a Disk I/O write limit on backups to the disk, this affects all backup drivers as the archiver must first write the file to the disk in order to upload it to any external storage provider. If the value is less than 1, the write speed is unlimited, if the value is greater than 0, the write speed is the value in MiB/s. Defaults to 0 (unlimited) |
system.backups.compression_level | string | best_speed | CompressionLevel determines how much backups created by wings should be compressed. "none" -> no compression will be applied "best_speed" -> uses gzip level 1 for fast speed "best_compression" -> uses gzip level 9 for minimal disk space useage Defaults to "best_speed" (level 1) |
system.backups.restore_host_allowlist | []string | | RestoreHostAllowlist allows backup restore downloads to connect to otherwise blocked private/internal destinations. Entries may be hostnames, IP addresses, or CIDR ranges. |
system.backups.remove_backups_on_server_delete | bool | true | RemoveBackupsOnServerDelete deletes backups associated with a server when the server is deleted |
system.backups.pbs | object | | PBS configures the optional Proxmox Backup Server destination. When enabled, the panel may request adapter "pbs" so server files are streamed with proxmox-backup-client (pxar) instead of writing local tar.gz archives. |
system.backups.pbs.enabled | bool | false | Enabled marks this node as capable of using PBS as a backup destination. The panel reads this via Wings config to choose adapter "pbs" automatically. |
system.backups.pbs.repository | string | | Repository is the PBS repository string, e.g. "backup@[email protected]:datastore". Alternative component fields below may be used instead. |
system.backups.pbs.server | string | | Server, Port, Datastore, and AuthID are optional alternatives to Repository. |
system.backups.pbs.port | int | | |
system.backups.pbs.datastore | string | | |
system.backups.pbs.auth_id | string | | |
system.backups.pbs.password | string | | Password is the PBS user password or API token secret (PBS_PASSWORD). |
system.backups.pbs.fingerprint | string | | Fingerprint is an optional TLS certificate pin (PBS_FINGERPRINT). Leave empty when the PBS cert is issued by a trusted CA (e.g. Let's Encrypt / ACME); proxmox-backup-client does not require it then, and pinning breaks on renewal. Set only for self-signed or otherwise untrusted certificates. |
system.backups.pbs.namespace | string | featherpanel | Namespace is the PBS namespace for FeatherPanel backups (default "featherpanel"). |
system.backups.pbs.binary | string | proxmox-backup-client | Binary is the proxmox-backup-client executable path/name. |
system.backups.pbs.archive_name | string | root.pxar | ArchiveName is the pxar archive name inside each snapshot (without path). Defaults to root.pxar so PBS file browser matches PVE CT backups (root.pxar.didx). |
system.backups.pbs.change_detection_mode | string | metadata | ChangeDetectionMode is passed to proxmox-backup-client (--change-detection-mode). "metadata" is recommended so unchanged files are not re-read when possible. |
system.backups.pbs.keyfile | string | | KeyFile is an optional client-side encryption key file path. |
system.backups.pbs.encryption_password | string | | EncryptionPassword unlocks KeyFile when set (PBS_ENCRYPTION_PASSWORD). |
system.transfers | object | | |
system.transfers.download_limit | int | 0 | DownloadLimit imposes a Network I/O read limit when downloading a transfer archive. If the value is less than 1, the write speed is unlimited, if the value is greater than 0, the write speed is the value in MiB/s. Defaults to 0 (unlimited) |
system.transfers.perform_checksum_checks | bool | false | PerformChecksumChecks controls whether incoming transfer archives are validated against the provided SHA-256 checksum. If set to false, the destination node will not enforce checksum verification; the archive will be extracted as received and the checksum part (if present) is ignored. This can be useful for trusted networks or debugging, but reduces protection against corrupted or tampered archives. Defaults to false; set to true to enforce checksum validation. |
system.transfers.storage_pool | object | | StoragePool configures whether this node participates in a shared storage pool. |
system.transfers.storage_pool.enabled | bool | false | Enabled signals that this node shares a common data volume with other nodes. |
system.transfers.storage_pool.pool_name | string | | PoolName is a per-node identifier used to compare shared storage pool membership across nodes. |
system.openat_mode | string | auto | |
system.updates | object | | Updates controls runtime update capabilities. |
system.updates.enable_url | bool | true | EnableURL controls whether URL driven self-updates are permitted. |
system.updates.allow_api | bool | true | AllowAPI controls whether the HTTP API may invoke self-updates. |
system.updates.disable_checksum | bool | true | DisableChecksum skips checksum verification for all self-updates. |
system.updates.restart_command | string | systemctl restart featherwings | RestartCommand, when set, is executed after a successful self-update. |
system.updates.repo_owner | string | mythicalltd | RepoOwner defines the default GitHub repository owner used for self-updates. |
system.updates.repo_name | string | featherwings | RepoName defines the default GitHub repository name used for self-updates. |
system.updates.github_binary_template | string | wings_linux_{arch} | GitHubBinaryTemplate defines the asset name template (supports {arch} placeholder). |
system.updates.default_url | string | | DefaultURL, when set, is used as the fallback direct download source for URL based updates. |
system.updates.default_sha256 | string | | DefaultSHA256 optionally provides a checksum for DefaultURL. |