Installation & setup
Web app
Docker (local):
- Clone the repository.
cd web, thencp .env.example .envand setNUXT_BASIC_AUTH_USERSto at least oneuser:passwordpair (required — without it every route denies all requests).docker compose up -d, then openhttp://localhost:3000and log in.
Fly.io:
- Edit
fly.tomlas needed. fly volumes create data.fly secrets set NUXT_BASIC_AUTH_USERS="you:strong-password".fly deploy.
Fly.io terminates TLS for
*.fly.devautomatically. If you self-host elsewhere, serve the app behind TLS (Caddy, Tailscale Serve, Cloudflare Tunnel) — agent tokens travel in HTTP headers and must never cross the network in cleartext.
Agent (Linux x86_64)
Command execution shells out to kill and the docker CLI, so the agent is Linux-only.
- Download
servomon-agent-linux-x86_64from the latest GitHub Release (verify withSHA256SUMS), or build from source:cd agent && deno task build. chmod +xthe binary.- Copy
agent/.env.exampleto.envbeside it; setSERVER_URLandNAME. LeaveAGENT_TOKENempty. - Run it from that folder. On first run it prints a pairing code — approve it on the dashboard's Agents page and it starts sending metrics.
For background operation, use the example servomon_agent.service unit: replace User=, WorkingDirectory= (must hold the binary and .env), and the ExecStart= path, copy to /etc/systemd/system/, then daemon-reload, enable, start.
How it fits together
Next: read WebSocket authentication and Agent enrollment for the security design, or watch the demo.