How often should you scan your homelab for vulnerabilities?
Short answer: nightly. Long answer: it depends on what you're actually trying to catch and how much noise you can tolerate on the morning coffee. This is the realistic guide.
The three scan cadences that matter
- Nightly (every 24 hours)
- The right default. Every major distro security advisory is published within a day of the upstream fix. Running nightly means a CVE that lands on Tuesday afternoon shows up in Wednesday morning's report. Couple that with a diff-from-yesterday view so you only see what's new, and you're not drowning in the same findings every day.
- Weekly
- Reasonable if you read reports yourself (no one else does) and you run a stable environment. A Proxmox cluster with a dozen LXC containers that never get new packages? Weekly is fine. You'll miss a four-day window during any given week, which is usually acceptable for homelab stakes.
- Monthly or ad-hoc
- Only if you're doing occasional audits and treating the homelab as a hobby, not a dependency. Fine for the box that runs Pi-hole and nothing else. Not fine for anything that holds data you care about, hosts services other people use, or sits on the internet.
What "nightly" actually costs
A full Noxen scan of 10 hosts (SSH inventory, port scan, TLS audit, HTTP header probes, admin-surface detection, CVE match) takes about 2–5 minutes, mostly waiting on port scan timeouts. At 03:00 local time, that's not going to wake up your router or eat your power bill.
CPU on the scanned hosts is effectively zero — Noxen is just
running dpkg-query over SSH and connecting TCP
sockets. If you can SSH into a box and run dpkg -l
without noticing, the host can tolerate a nightly scan.
Signal per scan — what you actually find
On a fresh Ubuntu 22.04 homelab VM, an initial scan typically surfaces:
- 6–20 CVE findings in OpenSSL, libcurl, glibc, and whichever web stack is installed.
- 1–3 TLS posture issues on exposed HTTPS ports (weak ciphers, near-expiry certs, missing SANs).
- 0–5 HTTP header misses on anything running a web UI (missing CSP or HSTS almost everywhere).
- 0–2 exposed admin surfaces if you're self-hosting Grafana / Portainer / phpMyAdmin without fronting them with a VPN.
After that first scan, the signal drops. Nightly scans against the same host produce new findings only when something changes: a new CVE landed, a service was installed, a cert rotated, a port opened. That's the point — you want to know what moved, not what's the same as yesterday.
When to rescan immediately
- After
apt upgradeordnf updateon any host (to confirm the patch closed the CVE you expected). - After bringing a new service up (to confirm it didn't open ports you didn't mean to).
- After a major upstream CVE announcement (OpenSSL, Log4j, sudo) — you want to see your exposure immediately.
- After rotating an SSH key or TLS certificate (sanity check).
What a sensible cadence looks like in practice
- Nightly full scans at 03:00 local time, via a LaunchAgent helper. Run while you sleep.
- Diff-from-yesterday banner on your Mac when you wake up. Usually empty.
- Monthly deep review on a Saturday morning — read the full cumulative report, plan patches.
- Immediate manual scans after any significant change.
Noxen is designed around that exact pattern. Scheduled scans are configured in Settings → Scanning, the diff view is the default on launch, and "Scan now" is one click away from any host.
Scan your Linux fleet from your Mac
Noxen runs nightly agentless audits over SSH and shows only what changed since the last scan — new CVEs, config drift, newly exposed admin services. Mac-native control plane, no SaaS round-trip.