Add Linux systemd support and --install-service/--remove-service flags
The service package now has a Linux implementation alongside the Windows one: systemd unit install/remove (/etc/systemd/system), readiness notification (READY=1 via go-systemd) sent only after the listeners are bound, a 30s watchdog, and STOPPING on shutdown. Listeners are pre-bound so port conflicts fail fast and the readiness signal is truthful. The notify calls are no-ops without NOTIFY_SOCKET (containers, shells) and on non-Linux builds. --install-service/--remove-service work on both platforms; the 'service install|remove' subcommand remains as an alias.
This commit is contained in:
@@ -94,15 +94,15 @@ go build ./cmd/gpu-turnstile
|
||||
./gpu-turnstile
|
||||
```
|
||||
|
||||
### Run natively on Windows (primary deployment)
|
||||
### Run natively on Windows (current primary deployment)
|
||||
|
||||
Download `gpu-turnstile.exe` from a release, put a `gpu-turnstile.env`
|
||||
next to it, and run it — or install it as a Windows service from an
|
||||
elevated shell:
|
||||
|
||||
```sh
|
||||
gpu-turnstile.exe service install # auto-start service, recovery = restart
|
||||
gpu-turnstile.exe service remove
|
||||
gpu-turnstile.exe --install-service # auto-start service, recovery = restart
|
||||
gpu-turnstile.exe --remove-service
|
||||
```
|
||||
|
||||
The service uses the config file (services have no convenient
|
||||
@@ -115,6 +115,23 @@ the install directory for self-updates. For least privilege, run it as the
|
||||
virtual account `NT SERVICE\gpu-turnstile` and grant write access to just
|
||||
those two directories.
|
||||
|
||||
### Run natively on Linux (systemd)
|
||||
|
||||
The same binary works on Linux. Install it as a systemd service as root:
|
||||
|
||||
```sh
|
||||
gpu-turnstile --install-service # writes + enables + starts the unit
|
||||
gpu-turnstile --remove-service
|
||||
```
|
||||
|
||||
The unit (`/etc/systemd/system/gpu-turnstile.service`) is `Type=notify`:
|
||||
`systemctl start` blocks until the listeners are actually bound, a 30 s
|
||||
watchdog restarts the process if it wedges, and logs land in the journal
|
||||
(`journalctl -u gpu-turnstile -f`) unless `LOG_FILE` is set. Put the
|
||||
config in a `gpu-turnstile.env` next to the binary (or pass
|
||||
`-config /path` during install). The notify integration is a no-op in
|
||||
containers and interactive shells.
|
||||
|
||||
**Auto-update is on by default**: the binary checks the repo's latest
|
||||
release on startup and every `UPDATE_INTERVAL`, verifies the Ed25519
|
||||
signature of the download against the public key embedded at build time,
|
||||
|
||||
Reference in New Issue
Block a user