Introduction
fleetd is a self-hosted tool for looking after a small fleet of Linux servers and routers. A single server collects metrics, raises alerts and offers a web admin page; every managed machine runs a small agent.
What makes it different
Remote management tools usually trust their control panel completely: whoever controls the panel can run anything as root on every machine. fleetd is built so that a compromised server cannot run commands:
- Commands are signed in your browser with an Ed25519 key that cannot be exported and never reaches the server.
- Each agent keeps its own list of trusted keys and its own permission level. The server cannot change either.
- Agent updates must be signed with a release key that stays offline on your computer.
The server only relays signed messages and stores metrics. See the design document for the full threat model.
How it works
browser ──HTTPS──▶ fleetd-server ──▶ PostgreSQL
▲
│ WebSocket + Noise (agents dial out)
┌───────────────┼────────────────┐
fleetd-agent fleetd-agent fleetd-agent
- You run
fleetd-serverwith PostgreSQL, behind an HTTPS reverse proxy. - Each machine runs one command from the admin page to install the agent. It connects out to the server and waits for your approval.
- Once approved it reports metrics every 10 seconds. You can run signed commands on it and open a terminal, within the permission level you gave it.
Requirements
| Part | Needs |
|---|---|
| Server | Linux (or Docker), PostgreSQL 13+, a domain with HTTPS for access from outside |
| Agents | Linux x86_64 or arm64 with systemd, or OpenWrt / iStoreOS; outbound access to the server |
| Admin | A current Chrome, Edge, Firefox or Safari (Ed25519 in WebCrypto) |
Next steps
- Quick start: try it locally with Docker in two minutes.
- Server setup: run it for real.