You cannot reason about your network surface without seeing it. Three commands answer the question "what is currently exposed?"
1. lsof -i — what processes are listening
Run this on a fresh login. You will be surprised. Common offenders: a forgotten Jupyter on 0.0.0.0:8888, an Ollama on 0.0.0.0:11434, a Vite dev server on 0.0.0.0:5173 from a project you closed three weeks ago.
2. ss -tlnp (Linux) — same idea, modern tool
3. From outside — what is actually reachable
What's bound is one thing; what a router actually forwards is another. From a phone on cellular (NOT your Wi-Fi), test reachability of suspect ports.
4. The once-a-quarter audit
Set a calendar reminder. Every 90 days, run lsof from inside and a port scan from outside. Compare to last quarter. Anything new is worth understanding before you forget why you opened it.