Manual installation

The packaged install is the supported route and handles the service unit, system user and runtime for you. Install manually when the package does not fit — an unsupported distribution, an immutable host, or a container image you are building yourself.

Read Installing the daemon first; this page assumes you know what the package would have done.

What you are replacing

The package provides four things. Doing this by hand means providing them yourself:

  • Java 21 on the host
  • The wrapper JAR
  • A root directory for configuration and runtime state
  • A service that keeps the wrapper running

Steps

1. Install Java 21. Any Temurin or distribution build is fine. The daemon will not run on an older runtime.

2. Choose a root directory. This is where daemon.properties, staged daemon binaries and runtime state live. The packaged install uses /var/lib/gamedash; anything works as long as it is writable by the account the wrapper runs as.

3. Fetch the wrapper. Take the JAR from the installer project's releases. The wrapper — not the daemon — is what you run.

4. Start it, pointing at your root directory.

java -jar gamedash-daemon-wrapper-all.jar -directory /var/lib/gamedash

If -directory is omitted the wrapper uses the directory containing its own JAR, which is rarely what you want on a real host.

5. Configure it. The daemon needs api.client.domain and authentication.token before it can reach your panel. See Daemon configuration for the full key list and the three ways to set them.

Running as a service on Linux

Without a service the wrapper will not survive a reboot. A minimal systemd unit at /etc/systemd/system/gamedash-daemon.service:

[Unit]
Description=GameDash Daemon
After=network-online.target

[Service]
User=root
WorkingDirectory=/var/lib/gamedash
ExecStart=/usr/bin/java -jar /var/lib/gamedash/gamedash-daemon-wrapper-all.jar -directory /var/lib/gamedash
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Then:

chmod 644 /etc/systemd/system/gamedash-daemon.service
systemctl daemon-reload
systemctl enable --now gamedash-daemon

No keystore required

You do not need to generate a keystore. The daemon produces an ephemeral self-signed certificate at startup unless you configure a persistent one.

Upgrades are still automatic

Even installed by hand, the wrapper continues to manage daemon versions. You are taking over responsibility for the wrapper and the runtime, not for the daemon binary.