Camera NVR

Two Frigate installs that record continuously and detect people on local hardware: one I built and maintain for a friend, and one at home. The goal was alerts I actually read: only people, only in the places that matter, and never for me.

Software
Frigate in Docker, go2rtc, frigate-notify, ntfy
Friend's site
Raspberry Pi 5 with a Hailo-8L accelerator, Reolink cameras
Home
Home server, Intel integrated graphics through OpenVINO, one Tapo camera
Access
Caddy HTTPS on the LAN, Tailscale from anywhere

What it does

  • Records every camera around the clock and detects people without any cloud service.
  • Sends an alert only when a person enters a zone I've drawn, so passersby on the street don't buzz my phone.
  • Recognizes my face and skips alerts for me.
  • Pushes one notification per alert through ntfy, with a link that opens the clip over HTTPS.

How it's built

For a friend: Raspberry Pi 5 with a Hailo-8L

  • The Hailo-8L accelerator runs detection at about 10 ms per frame, leaving the Pi's CPU free for video.
  • The Hailo driver is matched to the HailoRT version inside the Frigate image, and the kernel is held so updates can't break it.
  • Daily automatic updates, a hardware watchdog and reboot-on-panic keep the headless Pi recovering on its own, and I maintain it remotely over Tailscale.

Home: OpenVINO on the home server

  • Detection runs on the Intel integrated GPU through OpenVINO, using a YOLOv9-tiny model I exported to ONNX myself.
  • go2rtc keeps one connection to the camera and restreams it. Frigate records the main stream and detects on the substream.
  • VAAPI decoding on the iGPU keeps the CPU mostly idle, and motion masks hide the camera's timestamp overlay.