I have several cameras hooked up to an NVR that has 2TB drives for constant recording (when space runs out older recordings are deleted. I usually have a few weeks available).
I then have frigate[1] set up on a small fitlet (with a usb CORAL TPU), which gives me excellent control over detection (Humans vs dogs vs cars vs ...). Frigate grabs the streams from my NVR over rstp.
This is then hooked up to my Home Assistant where I have various rules to send alerts to my mobile devices based upon object detected, location of camera, and time of day.
Everything is internal. I have an always on wireguard on my family's mobile devices allowing them to access the cameras and home assistant alerts from anywhere.
It works great, but I have refused to set this up for my extended family (even though they have the same NVR and _really_ want my system), just because there are a lot of moving pieces that need to be maintained (not to mention having a server + vpn)
[1] https://frigate.video/