Self-host runtime (installer vs runner)
Understand the supported ways to run a self-hosted Happier Server, and what each option installs/manages.
Happier currently supports two different self-host “shapes”:
- a managed install (service + config) driven by
happier relay host … - a runner that simply downloads/verifies artifacts and starts the server process (
@happier-dev/relay-server)
They are complementary, but they are not the same thing.
For a complete “what updates automatically vs manually” matrix across all shipped assets (desktop/mobile/web, CLI installers, Docker images, and runners), see: Updates.
Option A: Managed self-host install (recommended when you want a service)
Use happier relay host install when you want:
- the server installed as a managed service (user/system mode)
- a repeatable install-or-update command for your selected channel
First, install the Happier CLI: see CLI install.
Install locally:
happier relay host install --mode systemInstall remotely over SSH:
happier relay host install --ssh user@host --mode systemAfter install, you manage it with:
happier relay host status
happier relay host start
happier relay host stop
happier relay host restartTo update, rerun happier relay host install (it installs or updates to the latest version in that channel).
Option B: Runner (@happier-dev/relay-server) (recommended for Docker / “just run it”)
The relay server package is a server runner:
- it fetches the server runtime by rolling tag (
server-stable/server-preview/server-dev) - verifies and extracts it into a cache
- optionally fetches the UI web bundle (
ui-web-stable/ui-web-preview/ui-web-dev) - sets
HAPPIER_SERVER_UI_DIR(if UI is enabled) - then starts the extracted
happier-serverbinary
This is ideal when:
- you run the server in Docker (or any process supervisor you already have)
- you want updates to happen on restart (no managed install / no scheduler)
- you do not want
hstackinstalling services/timers/tasks on the host
Example (local runner):
npx --yes --package @happier-dev/relay-server happier-server --helpImportant: because this is a runner, happier relay host … service controls do not apply to it.
Choosing between them
- If you want a service and
hstack-managed lifecycle → use Option A. - If you already have a process manager (Docker/Compose/systemd/nomad/k8s) and just want a runner → use Option B.
If you’re unsure, start with Docker (runner) and switch to a managed install later.