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.
The package provides four things. Doing this by hand means providing them yourself:
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.
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.
Without a service the wrapper will not survive a reboot. A minimal systemd unit at
/etc/systemd/system/gamedash-daemon.service:
Then:
You do not need to generate a keystore. The daemon produces an ephemeral self-signed certificate at startup unless you configure a persistent one.
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.