# VPS Health Score — 20-Point Audit Checklist

## Free Lead Magnet

Audit your VPS in 20 minutes. Each item scores 1 point. Score below 15 = time for a tune-up.

---

### 1️⃣ Disk Health (4 points)

- [ ] **Disk usage below 80%** — `df -h /` shows <80% used
- [ ] **No orphaned Docker images** — `docker system df` shows less than 5GB in unused images
- [ ] **Logs are rotated** — `journalctl --disk-usage` shows <500MB; no `.log` files >100MB in `/var/log/`
- [ ] **No stale package cache** — `apt-get clean` has been run in the last 30 days

### 2️⃣ Process Hygiene (3 points)

- [ ] **No zombie processes** — `ps aux | grep Z` returns empty
- [ ] **No left-behind dev servers** — no stray `bun run dev`, `vite`, `nodemon` running persistently
- [ ] **CPU idle above 60% under normal load** — `htop` shows no single process pegging CPU over 50% idle

### 3️⃣ Security Posture (5 points)

- [ ] **SSH key-only auth** — `grep PasswordAuthentication /etc/ssh/sshd_config` shows `no`
- [ ] **Root login disabled** — `grep PermitRootLogin /etc/ssh/sshd_config` shows `prohibit-password` or `no`
- [ ] **Firewall active** — `iptables -L INPUT -n` shows DROP policy and specific allow rules only
- [ ] **Fail2ban installed** — `fail2ban-client status` returns active jails
- [ ] **No unused listening ports** — `ss -tlnp` shows only ports you intentionally opened

### 4️⃣ Docker Hygiene (3 points)

- [ ] **Containers run non-root** — `docker inspect <container> | grep '"User"'` is not empty or root
- [ ] **No :latest tags in production** — `docker ps --format '{{.Image}}'` has no `:latest` except intentionally
- [ ] **Resource limits set** — `docker inspect <container> | grep -A2 '"Memory"'` shows limits configured

### 5️⃣ Backup & Recovery (3 points)

- [ ] **Automated backups running** — last backup file timestamp is <48 hours old
- [ ] **SSL certs not expiring within 30 days** — `openssl x509 -checkend 2592000 ...` passes for all domains
- [ ] **Monitoring is active** — uptime check or health endpoint that alerts you on failure

### 6️⃣ General (2 points)

- [ ] **Swap configured** — `swapon --show` shows swap space (general purpose) or none (servers with enough RAM)
- [ ] **Time to recover documented** — you know exactly what to do if the server goes down (1-page runbook exists)

---

## Scoring

| Score | Status | Recommended Action |
|-------|--------|-------------------|
| **18-20** | 🟢 Healthy | You're in good shape. Schedule quarterly check. |
| **12-17** | 🟡 At risk | 3-5 issues need attention. Get a tune-up. |
| **6-11** | 🟠 Unstable | Security or reliability risk. Fix soon. |
| **0-5** | 🔴 Critical | Your VPS is a liability. Full optimization needed now. |

---

## Want us to do it for you?

We'll run this checklist + fix everything in 48 hours flat.

**VPS Tune-Up — $497** → [Book Now](https://buy.hqtraders.net)

Or DM for details.
