Installing the Daemon
Daemons are node processes that connect to Protocube and manage game server workloads. Install Protocube before setting up any daemon nodes.
- Official Docker image:
ghcr.io/jessefaler/sls/daemon:latest - Native binaries: SLS GitHub Releases
Before You Start
Install Docker on the host that will run servers. The Daemon requires a full Linux environment; on Windows, use WSL (see Getting Started).
Ensure Protocube and the Daemon can communicate. The default Compose setup uses internal hostnames (e.g.,
protocube.sls.net,daemon.sls.net) viaextra_hostsinside containers. From the host system, you may need to use127.0.0.1, real DNS, or/etc/hosts, depending on your deployment.
Installation Options
SLS supports two ways to run the Daemon:
- Docker — Recommended For Most deployments, production, and simple setup
- Native binary
Option 1 — Run the Daemon with Docker (Recommended)
Docker Compose
Download the official Compose file or view it on GitHub: daemon/docker-compose.yml
Steps
Create a directory on the node machine and save the Compose file as
docker-compose.yml.Create required system directories:
bashsudo mkdir -p /etc/sls/daemon /var/log/sls/daemon /tmp/sls/daemonStart the Daemon:
bashdocker compose up -d
On first start, a default configuration file will be generated at:
/etc/sls/daemon/config.ymlYou must then configure:
- A node API key
- The Protocube connection settings
See:
Option 2 — Run the Daemon from a Native Binary
Steps
Download the appropriate daemon binary for your platform from SLS Releases
Prepare required directories:
bashchmod +x daemon sudo mkdir -p /etc/sls/daemon /var/lib/sls /var/log/sls/daemon /tmp/sls/daemonThe Daemon requires
CAP_SYS_ADMINfor overlay filesystem mounts used by server instances.You may either grant the capability:
bashsudo setcap cap_sys_admin+ep /path/to/daemonor run as root:
bashsudo ./daemonWithout this permission, server provisioning and mounts may fail.
Start the Daemon:
bash./daemon --config /etc/sls/daemon/config.yml
Create a Node API Key
The Daemon authenticates to Protocube using an API key generated on the controller.
docker exec -it SLS protocube create-api-keyprotocube create-api-keyIf you changed the default container name, replace
SLSwith your configured name in thedocker execcommand.
Follow the prompts and copy the generated token.
For more information on managing API keys see: create-api-key
Configure the Daemon
Edit:
/etc/sls/daemon/config.ymlProtocube Connection
Configure how the Daemon connects to Protocube:
remote:
url: http://protocube.sls.net:5620
token: sls_live_9y1Vli9h9ty_your_api_keyReplace the URL if you are not using Compose hostnames (e.g. use an IP or real domain).
Daemon API Configuration
Configure how Protocube and external systems reach this Daemon:
api:
url: http://daemon.sls.net:5585
host: 0.0.0.0
port: 5585
tls:
enabled: false
cert: /etc/ssl/certs/sls.crt
key: /etc/ssl/private/sls.keyurl— The address Protocube uses to reach this node- Enable
tlsif terminating TLS directly on the Daemon
Restart Daemon
After configuration changes, restart the Daemon:
Docker:
bashdocker compose restartNative:
bashpkill daemon && ./daemon --config /etc/sls/daemon/config.yml
Check logs to confirm the node successfully registers with Protocube.
Next Steps
- Create Blueprints: Blueprint examples
- Configure software: Software configurations
- Troubleshooting: Troubleshooting guide
For help, join the community: https://discord.gg/BrH8GtyGSh
