This is a self-hosted Network Video Recording System built with Frigate, go2rtc, NVIDIA Hardware Acceleration, and onnx AI Detection
This documents my journey on setting up my Self-Hosted NVR.
- 24/7 8 Camera Recording
- Frigate Detection Recording powered by onnx
- NVIDIA Hardware Acceleration and AI Processing
- Dedicated Camera Wall
- Docker-based Deployment
[Camera Feed] [go2rtc] [Frigate] [NVIDIA GPU] [Recording/Detection] [User Interface]
| Component | Hardware |
|---|---|
| CPU | Ryzen 7 5800XT |
| GPU | RTX 5060 Ti |
| RAM | 32 GB |
| OS | Ubuntu |
| Cameras | Hikvision / Northern |
| NVR | Frigate |
| Restreaming | go2rtc |
-
Install Ubuntu
-
Install NVIDIA drivers
-
Install Docker
-
Configure NVIDIA Container Toolkit
-
Deploy Frigate
-
Configure go2rtc
-
Add cameras
-
Configure Home Assistant
-
Configure kiosk display
Web browser could not handle displaying all 8 streams concurrently on linux
Both firefox and chrome bottlednecked when displaying streams even with Hardware Acceleration
I had AI build me a Kiosk System to display Cameras to remove the bottleneck out of the equation
Kiosk System was rerendering main 2k stream feeds and decoding the streams down to 640 x 360
The kiosk was using to much gpu power to rerender a high quality feed down to a lower quality speed
I increased the quality of the substream and used the substream feed instead of the main feed which was running at 720p instead of 2k there for lowering vram usage from 6gb to just 1gb
When detecting objects on your feed it is better to use lower quality feeds so that you do not sacrific compute power on your gpu when only needing to see if a car or person is moving infront of the camera
Also when rendering a 1920x1080 3x3 Kiosk system it is better to downstream a 720p feed than a 2k feed because it uses less processing power without sacraficing quality and reliability.