I’d recommend frigate for basic recording features. Its human detection is pretty bad even with compute, but recording and transcoding is very solid. It can be self hosted as standalone. Been using one for a few months now and it’s rock solid. Only downside is that you have to configure it via yaml.
Another solution I can recommend, especially if you want to more easily integrate with HomeKit or any of the other smart home providers is Scrypted. It’s more UI centric and covers all the same bases as frigate, though slightly more resource intensive.
Frigate can run in its own container and provide its own web GUI. You get extras if you integrate it with Home Assistant but if you think those aren’t worth spinning up an instance, then you don’t have to.
Blue Iris is another good option if you don’t mind Windows (blah I know but at least it’s still self hosted and fully under your control).
I've tried Zoneminder, Shinobi, iSpy AgentDVR and most recently Frigate. I have seven IP cameras with PoE and anything I run is on docker. My personal experiences are as follows:
Zoneminder: dated UI when compared to other software, pain to setup properly, needs a lot of fiddling to get it to work properly. Used it for over a year. Never did.
Shinobi: Wanted very much to like it, but the CPU and RAM usage was ridiculous. That wasn't a container. It was Pac-Man for resources.
Agent DVR: Pretty good. Could be a bit slow when detecting and the UI was a bit annoying (many nested menus and such), but overall it was a good solution. I ran it for nearly two years but at some point they decided https was not for the free version anymore and it stopped working behind Traefik. That was a deal-breaker for me.
Frigate: I've started using that recently (about a month). So far I like it a lot. It works best with a Coral (I adddd a USB accelerator in a passthrough to an LXC container as described above). Setup can be a bit intimidating (it's all config based) but it's lightweight, has a responsive UI and has very good integration with HA, which I also use. The AI detection leaves a bit to be desired for longer-distance cameras (I have a lot of cats waltzing around that never get recorded and they often get mislabeled as dogs or birds), but that may be me needing to play with the parameters a bit more.