Docs

Server health

Healthy servers are boring in the best way: clear deploy paths, enough headroom, easy recovery, and no hidden surprises.

01
Keep deploys predictable

Use explicit deploy commands, stable working directories, and clear health checks. If another operator cannot tell what a deploy does, the setup is too implicit.

02
Watch trends, not just spikes

A brief CPU or load spike is normal during deploys, image pulls, builds, and backups. What matters more is sustained pressure or repeated degradation after deploys.

03
Leave headroom

Healthy servers are not run permanently at the edge. Leave room in RAM, disk, and CPU so updates, restarts, and traffic bursts do not immediately become incidents.

04
Clean up Docker drift

Old images, exited containers, unused volumes, and temporary build leftovers quietly consume disk and can complicate rollback logic. Review them regularly.

05
Treat health checks as first-class

A running container is weaker evidence than a passing app health check. Prefer real endpoints like `/health` when possible, and use port checks only as a fallback.

06
Keep env and proxy files understandable

When env files, compose files, and proxy configs are easy to locate and reason about, recovery becomes faster and safer under pressure.

07
Restart on purpose, not by surprise

Unexpected reboots, unexplained low uptime, and silent container churn deserve investigation. Stability should come from maintenance, not luck.

Quick maintenance checklist

Review recent deploy results before changing anything else.
Check app health checks, not just container status.
Confirm enough free disk space remains for logs, pulls, and backups.
Inspect exited containers and recurring restarts.
Verify env and proxy changes match the currently deployed app.
Patch and reboot on a schedule instead of waiting for an emergency.

A practical mindset

The goal is not a perfect graph. The goal is a system where deploys are understandable, failures are visible, and recovery does not depend on memory or guesswork.