Features Demo Pricing Guides Alternatives Blog Docs My account Français Buy a license GitHub
Guides / Several Docker servers

Monitor Several Docker Servers From One Dashboard

One central Maintenant server, a read-only agent on each of your other hosts, one dashboard. How the agents enroll and authenticate, the exact commands, and what each edition allows.

· 3 min read

You run Maintenant on one server and it sees everything on that machine. Now you have a second VPS, then a third. Installing a separate Maintenant on each works, but you end up with three dashboards and three sets of alerts.

The multi-server mode keeps one dashboard: one server, and a lightweight agent on every other host.

How it works

  • The server is a normal Maintenant instance, started with --mode=server. It keeps the history, evaluates the alert rules and serves the dashboard.
  • Each agent is the same image, started with --mode=agent. It reads the local Docker socket read-only (or Swarm, or Kubernetes, detected on its own) and streams container state, endpoints, certificates and host CPU, memory and disk to the server.
  • The link is one persistent gRPC stream, opened by the agent. No shared database, no message queue, no VPN.
  • Every entity is attributed to its host, so two postgres containers on two machines never get mixed up.

Enrolling a host

Enrollment uses a one-time token that you generate in the server’s interface. On first start, the agent creates an Ed25519 key pair locally, presents the token once, and from then on every stream is authenticated by challenge and response. You can revoke an agent from the interface at any time.

The interface generates the exact command. It looks like this:

docker run -d --name maintenant-agent --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -v /proc:/host/proc:ro \
  -v /etc/os-release:/host/etc/os-release:ro \
  -v maintenant-agent-data:/var/lib/maintenant \
  ghcr.io/kolapsis/maintenant:latest \
  --mode=agent --server=grpcs://monitoring.example.com \
  --enrollment-token=mnt_enr_XXXXXXXXXXXXXXXX --label="prod-worker-01"

On the server, set MAINTENANT_GRPC_URL to the address the agents will reach (for example grpcs://monitoring.example.com), so the generated commands point to the right place. The multi-host documentation covers the reverse proxy and TLS setup.

When an agent goes quiet

If the network drops, the agent keeps collecting into a local spool, reconnects on its own, and replays container events, resource samples and probe results once the stream is back. The graphs and the uptime keep no hole. On reconnect, it sends a fresh inventory first, so the current view is right immediately.

What each edition allows

CommunityPersonalPro
Machine running Maintenantyesyesyes
Remote hosts through agentsnoneup to 20Unlimited
Alert channelswebhook, Discord+ email, Telegram+ Slack, Teams, escalation
Use on someone else’s serversyes (Apache 2.0)noyes

The machine that runs the server is never counted. Personal is 149 € incl. VAT, once, for servers you own or run for yourself. If the servers belong to your clients, that is Pro.

Before you start

  • The agents only need outgoing access to the server’s gRPC address.
  • The server holds the agent identities. If you run it on PostgreSQL, a replacement server picks the fleet back up without re-enrolling anything.

More than one server to watch?

Open the demo to see the multi-server view, the alerts and the CVE tracking. Personal covers up to 20 remote hosts for 149 € incl. VAT, once.

Or install it for free