Binary Wings Installation
Install a Container Runtime
Wings requires Docker or Podman to be installed and running on the host to manage game server containers.
Verify your installation:
docker --versionIf Docker is not installed, the easiest way to get it is Docker's installation script:
curl -sSL https://get.docker.com/ | CHANNEL=stable bashOtherwise refer to the official Docker installation guide for your distribution.
Install the Wings Binary
curl -L "https://github.com/calagopus/wings/releases/latest/download/wings-rs-$(uname -m)-linux" -o /usr/local/bin/wings
chmod +x /usr/local/bin/wingsVerify the installation:
wings versionConfigure Wings
On a fresh installation, Wings starts in setup mode when no configuration file exists. You can start it in the foreground:
wingsRead the pairing code printed in the terminal, then follow Pair a Waiting Node in the Panel. Keep Wings running while you pair it; it writes its configuration and starts normal operation when pairing succeeds.
To create the node entry first, use the Panel's enrollment command, or apply the generated YAML or configure --join-data command. Existing configurations continue to load normally.
Install as a Service
Stop any foreground Wings process with Ctrl+C before starting the service:
wings service-installThe installer creates, enables, and starts a service for the host's init system. An unconfigured installation starts in setup mode; a configured one starts normal operation. On systemd, check its status and read the pairing code with:
systemctl status wings
journalctl -u wings -n 50 --no-pagerOn Alpine/OpenRC, check it with rc-service wings status; if the pairing code is not visible in service logs, configure it using the enrollment command before starting the service.
Optional LXCFS
LXCFS makes selected /proc and /sys files inside server containers reflect their resource limits. It runs as a separate service on the container host; Wings bind-mounts its files read-only into game server containers. Installer containers do not use these mounts.
Install your distribution's lxcfs package first. To create a dedicated service, run as root:
wings service-install --lxcfsThis installs, enables, and starts wings-lxcfs using systemd or OpenRC, with CPU quota awareness (--enable-cfs). It installs the lxcfs service only; install the Wings service separately as shown above. If you use a custom Wings configuration path, pass it with wings --config /path/to/config.yml service-install --lxcfs.
When a Wings configuration is loaded, the command saves:
docker:
lxcfs:
enabled: true
directory: /var/lib/calagopus-wings/lxcfsWithout a loaded configuration, add these settings once Wings has been configured. Restart Wings, then restart each server to recreate its container with the mounts. On systemd, check the separate service with systemctl status wings-lxcfs; on OpenRC, use rc-service wings-lxcfs status.
You can also use an existing host lxcfs service: enable docker.lxcfs.enabled and set docker.lxcfs.directory to its mount directory, usually /var/lib/lxcfs. That is the configuration default, which differs from the dedicated service's path. Set the directory in the local Wings config; the Panel cannot change it.
If lxcfs stops, existing containers can report Transport endpoint is not connected when reading its files. Restore the lxcfs service, then restart affected servers to remount it. Restarting Wings alone does not repair those mounts. When native Wings cannot find a valid lxcfs mount during container creation, it logs a warning and continues without the integration.
Next Steps
With Wings running, the next step is to set up allocations - the IP and port combinations you can assign to servers. See Setting up Allocations.