How to build a Frigate NVR from scratch
Build a local Frigate NVR for Home Assistant from scratch or on an old PC: hardware and detector picks, app vs Docker install, RTSP cameras, and tuning.
On this page
Frigate is the best open-source NVR solution for local-first smart homes, but getting it running well requires some upfront planning. Here’s how to build one that works, whether you are buying a box for it or repurposing an old PC.
Short version: a mini PC like the Beelink EQ14 running detection on the Intel iGPU through OpenVINO, ONVIF/RTSP cameras on PoE (wired Reolink or Amcrest models), a dedicated SSD for recordings, and the Frigate integration in Home Assistant. Budget $300-500 for the server and $50-150 per camera. An old Intel-based mini PC or desktop does the same job for free if you already own one.
Hardware: what runs Frigate well
Frigate needs real compute to handle AI object detection in real time. Its load splits into two jobs: decoding the video streams, and running object detection on the decoded frames. Decoding wants hardware video acceleration, and Intel QuickSync on an Intel iGPU is the cheap, common way to get it. Detection wants an accelerator; CPU-only detection works, but it caps how many cameras and how much resolution you can sustain. Frigate itself is Linux software, normally run in Docker, so the host has to be a real x86 mini PC, a single-board computer or a server, and Frigate should live on that box rather than on a lightweight Home Assistant appliance like the Green.
Skip the Raspberry Pi - it’s not viable for anything beyond one or two cameras with basic motion detection. A Pi 5 with the Raspberry Pi AI HAT+ (a Hailo-8L at 13 TOPS or a Hailo-8 at 26 TOPS, from about $70) fixes the detection side but not the decode side, so it still tops out at a couple of low-resolution feeds.
For 4-8 cameras, a compact mini PC is the right balance of cost and capability. If you’d rather repurpose hardware you already own, see running Frigate on an old PC below. An N100 or N150-class box like the Beelink EQ14 handles 6-8 1080p streams with hardware acceleration without breaking the bank. (The EQ13 this guide used to name is discontinued; the EQ14 replaced it.) If you want more headroom for future cameras or higher resolutions, the Intel NUC 12 Pro (discontinued, so look for it used, or step up to the current ASUS NUC 15 Pro) is overkill in the best way - it’ll run Home Assistant, Frigate, and more without breaking a sweat. It sells as a barebones kit around a Core i5-1240P, so add 16GB of RAM and an NVMe SSD to the price. On the N100 boxes, a free M.2 slot is what lets you drop in a Hailo module later if the iGPU runs out of detection headroom. On detection, lean on the Intel iGPU through OpenVINO first, with a discrete GPU or a Hailo-8/8L M.2 module as the step up. Frigate’s documentation no longer recommends the Google Coral as the starting point for a new install, though it remains supported and is still the pick when power draw is the binding constraint.
Storage matters more than most people plan for. Plan on 1TB minimum for a week of continuous recording at 1080p, more if you want longer retention or higher resolution. Use a dedicated SSD - NVR workloads are write-heavy and spinning drives will bottleneck you. To size it, one 1080p H.264 stream recorded continuously runs to tens of gigabytes a day; multiply by camera count and retention days and add headroom. If money forces the recordings onto a USB 3.0 external drive, keep Frigate’s database and cache on the internal SSD so the UI stays responsive. All in, budget $300-500 for a capable NVR server, $50-150 per camera, and plan for storage up front.
Running Frigate on an old PC
Running Frigate on an old PC is a practical way to build this without buying anything. An old Intel-based mini PC or desktop makes a good Frigate host: run it as a Home Assistant app for simplicity or as a standalone Docker container for the best performance, lean on the Intel iGPU (or a Coral or GPU) for detection, detect on a substream, and keep recordings local.
A quick clarification first: Frigate is not a Home Assistant “custom component.” Frigate runs as its own service, either as a Home Assistant add-on (on Home Assistant OS or Supervised installs) or as a standalone Docker container. There is a separate Frigate integration (HACS custom component) that connects an already-running Frigate to Home Assistant for events, and a separate Lovelace card installed on top of that, but the NVR itself is a container.
What the old PC needs
Frigate’s heaviest cost is object detection on the video stream, so how you handle detection drives the hardware choice more than the CPU alone. For a modest old PC, aim for:
- A 6th-gen Intel Core (Skylake, ~2015) or newer CPU. Intel chips matter here because their integrated GPU (iGPU) can do hardware video decoding and, on recent generations, OpenVINO-based detection.
- 8 GB of RAM (4 GB can work for a couple of cameras, but 8 GB gives you headroom).
- A wired Ethernet connection for reliable camera streams.
- Storage sized for your retention needs. Recordings add up fast at higher resolutions.
A small business-class mini PC is an excellent fit. The Lenovo ThinkCentre M-series (Tiny), the Intel NUC 12 Pro, the Minisforum UM790 Pro, or the Beelink EQ13 all run Frigate well, and the Intel-based ones can offload both decoding and detection to the iGPU. Two of those carry the buying note from above: the Intel NUC 12 Pro is discontinued (ASUS stopped it in April 2024 and software support ended in October 2025), so treat it as a used-market buy and look at the ASUS NUC 15 Pro if you want something still in production, and the EQ13 is discontinued as well, with Beelink’s own store now returning only the N150 EQ14. Pick a detector based on the hardware you already have: a recent Intel iGPU running OpenVINO, or a discrete GPU, often outperforms a Google Coral TPU, though the Coral is still a low-power option.
A note on small boards and laptops: a Raspberry Pi can run Frigate for one or two low-resolution cameras, but it struggles to scale and benefits from a detection accelerator. The older NVIDIA Jetson Nano is not a great fit for current Frigate. A laptop like a MacBook Air M1 is not a good Frigate host, because Frigate’s hardware acceleration paths target Linux on x86 (Intel/AMD) or supported ARM SBCs, not Apple Silicon under macOS.
Home Assistant app or standalone Docker
Frigate runs in a container, so you have two clean paths.
Path A - Home Assistant app. If you run Home Assistant OS on the machine, open Settings, Apps, then the App Store, add the Frigate repository, and install Frigate NVR. (Home Assistant 2026.2 renamed add-ons to apps. Same software, same Supervisor behind it - only the label and the menu changed, so older guides still say “Settings > Add-ons”.) This is the simplest route and keeps everything in one place, but it is the more constrained one for acceleration: apps run in a managed container, Nvidia GPUs are not supported at all, and reaching the Intel iGPU often means switching to the Full Access variant and turning off Protection mode.
Path B - Standalone Docker. Install a server Linux distribution (Debian or Ubuntu Server are good choices), install Docker, and run Frigate from a docker-compose.yml. This is the best-performing path because the container gets low-overhead access to the iGPU or a Coral device. You’ll map your camera config, a storage path for recordings, and any detector device (for example /dev/dri for an Intel iGPU, or /dev/bus/usb for a USB Coral).
Either way, your configuration lives in Frigate’s own config file (the config.yml covered below, not Home Assistant’s configuration.yaml). That file defines your cameras, their RTSP stream URLs, detection settings, and record/snapshot retention. If you are still choosing cameras, PoE models give the most dependable RTSP streams, and it is worth settling PoE versus Wi-Fi before you run any cable.
Keeping an older machine healthy
- Use a substream for detection and a high-resolution stream only for recording. Detecting on a 720p substream cuts CPU load considerably.
- Enable hardware acceleration for decoding (
hwaccel_args) so the iGPU handles video, not the CPU. - Tune detection zones and object filters so Frigate only processes the regions and objects you care about.
- Put recordings on a drive with enough endurance and capacity, and set sensible retention. A NAS such as a Synology or QNAP over a network share is a fine target for archived clips.
Skip the gimmicks: a smart plug power-cycling the PC is not a real reliability strategy and risks corrupting recordings or the filesystem. If Frigate misbehaves, fix the root cause, and let Docker (or the add-on supervisor) restart the container automatically with a restart policy.
Cameras: what works and what doesn’t
Not all cameras play nice with Frigate. Stick to ONVIF cameras for the best experience - Reolink’s PoE camera line is a cost-effective ONVIF option that works reliably. The Reolink Duo 3 PoE is excellent for wide-area coverage with dual lenses.
Avoid cloud-only cameras that don’t support local streaming. You’re building a local system - cameras that require cloud connectivity defeat the purpose.
For the best Frigate experience, enable RTSP streams on your cameras and configure them in Frigate. Most wired Reolink and Amcrest cameras support this out of the box. On the Reolink side power type is what decides it: the PoE and plug-in models expose RTSP and ONVIF, while Reolink’s battery cameras expose neither as standalone devices, so they cannot feed Frigate directly. If you’re using Amcrest IP8M-2496E or similar, the ONVIF integration handles the heavy lifting.
Frigate ingests RTSP, and you add each camera by hand in the config; there is no discovery step. ONVIF matters for a different reason: it is what Frigate uses to drive a PTZ camera and to autotrack, so if you buy a PTZ, check that it advertises ONVIF relative pan/tilt. The standard pattern is to point detection at the camera’s low-resolution substream, which keeps the decode load down, and record from the high-resolution main stream; most IP cameras expose both. Cameras, streams and detection all go in config.yml, mapped to /config/config.yml inside the container (there is a config editor in the web UI), and a Docker compose.yaml defines the container, its volumes and the device passthrough for the iGPU or whichever accelerator you use.
Networking: don’t skimp here
POE (Power over Ethernet) simplifies camera installs a great deal. If you’re running new wiring, go with POE - it’s more reliable than WiFi and eliminates separate power runs. A UniFi Protect setup, which is what I run, is the packaged alternative, though Frigate gives you more flexibility. Check the port list before you count on one box doing everything, because most Protect consoles do not power cameras: the UDM Pro, the UDM Pro Max and the plain UNVR have no PoE ports at all, so the cameras still need a PoE switch beside them. The consoles that do supply PoE themselves are the UDM SE, the Dream Router (two PoE ports) and the UNVR Instant (six).
For WiFi cameras, expect occasional dropouts. Placement matters - avoid corners and areas with interference. If reliability matters, wired connections aren’t optional.
Integration with Home Assistant
This is where Frigate shines. The Home Assistant integration gives you real-time camera feeds, motion events as automation triggers, and thumbnail generation for notifications. You don’t need a separate dashboard - install the Frigate integration through HACS, point it at your Frigate server, and the cameras appear automatically. The Frigate Lovelace card for clips and event review is a separate HACS install, not part of the integration. Frigate communicates with Home Assistant over MQTT, so you’ll have an MQTT broker (the Mosquitto add-on is the usual choice).
From there you automate normally: a person event on the driveway camera turning on a Philips Hue White A19 at night, or switching a plain floodlight through a Philips Hue Smart Plug. One caveat on that second pattern: don’t put a Hue bulb itself behind the plug, because cutting its power drops it off the Zigbee mesh.
For presence detection, combine Frigate with the Aqara FP2 or Everything Presence One sensors. Frigate handles exterior monitoring while presence sensors handle indoor occupancy. This separation prevents the “camera everywhere” creep that makes smart homes feel invasive.
HomeKit and Hubitat
Frigate can put cameras in Apple Home without Home Assistant in the middle. The go2rtc instance embedded in Frigate acts as a HomeKit accessory: you pair each camera from the go2rtc web UI on port 1984, and Frigate’s own documentation covers the steps. The condition is that the Frigate container has to run in host network mode for pairing to work, which not every install wants. If yours does not, the other route is Home Assistant’s HomeKit Bridge re-exposing Frigate’s camera entities. Either way you get live viewing rather than recording, because HomeKit Secure Video is a separate Apple feature and not something Frigate provides. Hubitat has no native Frigate driver, so most people who run both let Home Assistant own the camera and NVR side and keep Hubitat for whatever automations already live there, or use Hubitat’s MQTT support to react to Frigate’s MQTT messages. If Hubitat is your only hub, expect this to be the rough edge.
Once your NVR is running, the same hardware can power other local-first projects - for example a local baby monitor with Frigate and RTSP.