Running Frigate on hardware is more straightforward than you may immediately believe. It's not a taxing package, but running IP cameras and using detection algorithms is where your CPU can really bog down. Thankfully, most recent and moderately powerful mini PCs are up to the job. But what if you're building a home-based data center?
That's where used enterprise hardware can come into play and is precisely what I used to create my ultimate network video recorder (NVR) solution. I found a Dell PowerEdge R210 II for next to nothing on a classified site and just had to pick it up.
4 reasons Frigate is an amazing home surveillance platform
Armed with several surveillance features, Frigate is one of the best NVR tools on the block
Why I picked the Dell PowerEdge R210 II
Cheap, cheerful, and powerful
The PowerEdge R210 II from Dell isn't designed to be the world's most powerful server. It's also nearly two decades old at this point, but that Intel Xeon processor is still a mighty beast for running Docker containers, especially Frigate. I'm fortunate with this server too since I have an Nvidia T1000 GPU at hand to handle detection work, which can quickly bog down even the more recent and powerful processors from AMD and Intel. Here's a quick look at the server specs:
|
PowerEdge R210 II |
|
|---|---|
|
CPU |
Intel Xeon E3-1245 V2 |
|
GPU |
Nvidia T1000 |
|
RAM |
32 GB DDR3 ECC |
|
Storage |
|
At the heart of the PowerEdge R210 II is the Intel Xeon E-1220 V2. This is a capable four-core CPU with a maximum boost speed of 3.5 GHz. It's great fort running a few Docker containers and virtual machines, but this chip would struggle with what I plan to use Frigate for. Don't get me wrong, it would be possible to pair this thing up with the T1000 and call it a day, but I wanted higher resolution streams, which is where the Intel Xeon E3-1245 V2 upgrade came into play for $20.
The E3-1245 V2 is quite the upgrade, most notably including support for Hyperthreading, allowing for eight threads to run simultaneously, reaching speeds up to 3.8 GHz. It's slightly more power-hungry but won't be pushed too hard with the T1000 and has plenty of grunt to not get bogged down with Frigate. It also gave me an additional reason to remove the CPU heatsink and apply fresh thermal paste — this is something I recommend doing on any used system you purchase.
Since I'm already rocking a few switches and another server inside a cabinet, the R210 makes perfect sense.
32 GB of DDR3 RAM is more than enough for our home setup, consisting of a few Reolink-branded cameras. It's also ECC, which is a handy bonus if using older enterprise gear. That and you get server-grade features and performance. A 256 GB SATA SSD has Proxmox and the Frigate VM running. I preferred this route so I could load up the server with other packages further down the line. Then there's a single 2 TB SATA HDD for storing recorded footage, which is great for four feeds.
Since I'm already rocking a few switches and another server inside a cabinet, the R210 makes perfect sense. It's not the most efficient way to host Frigate, nor does it have the best performance per watt as a whole, but it's a neat way to set up a security system at home. Running Proxmox on the system is easy and it barely has any overhead.
4 things I wish I knew before setting up Frigate for home security
Some things I wish I knew before using Frigate
Setting up Reolink cameras in Frigate
It's easier than I thought
Reolink is one of the major players in the IP camera and home security space. It's a renowned company responsible for creating some epic products. I have a few of their cameras at hand for the security setup, and Frigate ties everything together. Getting them all registered and connected to the software was as straightforward as editing a YAML config file. It's easy to learn and to become a master of not just Frigate but the wider Docker ecosystem.
Here's a copy of my config file for Frigate, should you be interested. Feel free to edit the cameras and other sections to suit your setup better. Note that this config file is using the Nvidia GPU, so be sure to edit accordingly, unless you also have a capable graphics card at the ready. Replace USERNAME and PASSWORD with the credentials for each of your cameras and check your router or accompanying app to locate the assigned IP addresses.
mqtt:
host: mqtt.example.local
user: frigate
password: PASSWORD
detectors:
coral:
type: edgetpu
device: usb
gpu:
type: tensorflow
model:
path: /models/coco_ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb
device: 0 # GPU device index
database:
path: /media/frigate/frigate.db
record:
enabled: True
retain:
days: 3
events:
retain:
default: 7
snapshots:
enabled: True
timestamp: True
bounding_box: True
retain:
default: 7
objects:
track:
- person
- car
- dog
- cat
- bicycle
- motorcycle
ffmpeg:
hwaccel_args: preset-nvidia-h264
cameras:
rlc_511w:
ffmpeg:
inputs:
- path: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
roles:
- detect
- record
detect:
width: 2560
height: 1440
fps: 5
rlc_410:
ffmpeg:
inputs:
- path: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
roles:
- detect
- record
detect:
width: 1920
height: 1080
fps: 5
rlc_510:
ffmpeg:
inputs:
- path: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
roles:
- detect
- record
detect:
width: 2560
height: 1440
fps: 5
rlc_810a:
ffmpeg:
inputs:
- path: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
roles:
- detect
- record
detect:
width: 3840
height: 2160
fps: 5
detect:
enabled: True
max_disappeared: 25
stationary:
interval: 100
threshold: 10
go2rtc:
streams:
rlc_511w: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
rlc_410: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
rlc_510: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
rlc_810a: rtsp://USERNAME:PASSWORD@IP_ADDRESS:554/h264Preview_01_main
With the T1000 working through the Ubuntu VM and loaded into Docker with the necessary Nvidia toolset, Frigate was able to communicate with and utilise all the CUDA cores for processing object detection events, The CPU continues to handle motion detection and footsge, which is fairly light, but the GPU (or NPU, should you have one available) is what handles object detection with ease.
My home lab wouldn’t be the same without these 7 Docker containers
Nothing in my home would run as smoothly as it does if I hadn't deployed these Docker containers
Building a Frigate NVR is easy
All you need is an SBC
A single-board computer (SBC) will run Frigate and a camera or two just fine. You will need a dedicated device to handle object detection but it's certainly doable. I recommend using an old desktop tower Pc you may have lying around or building a system specifically for the job. There are even some NVR hardware that can be purchased and used for this purpose alone. Building out a home lab with some old enterprise servers can allow you to do much more than create your own security solution.
As well as running Frigate, I have other systems hosting Jellyfin, Immich, Nextcloud, Pi-hole, Mealie, Couchdb, and much more. It's a rabbit hole one can quite easily get lost exploring. The best part with Frigate is the integration with Home Assistant.
How I self-host Frigate to power my home surveillance system from my NAS
With a little bit of elbow grease, you can build a powerful NVR combo by pairing a Frigate instance with your storage server
