I’ve never liked the idea of security camera footage from my apartment sitting on someone else’s servers. On top of that, Ring, Nest, Arlo, and all other major vendors want a monthly fee just to keep more than a few hours of recordings, and that fee climbs fast if you start adding cameras.
So I decided to add to my growing list of self-hosted apps that make my home server worth it, and added a self-hosted security camera server. It costs almost nothing to run, stores data locally, and doesn’t depend on anyone’s servers (or the internet) to work as intended.
More than just a video recorder
Frigate adds AI-powered object detection to your security cameras
Frigate connects to your existing IP cameras over RTSP, pulls in the video streams, and runs real-time AI object detection locally, no cloud round-trip required. It can tell the difference between a person, a car, a package, and your cat wandering across the yard, and it uses that information to record only the clips that matter instead of hoarding everything.
As someone who runs his house on Home Assistant, I’m also a fan of how cleanly Frigate plugs into Home Assistant. This gives me the freedom to create automations like triggering a specific light when a specific person is detected at the door, sending a notification, or starting a full automation chain without any extra code. Everything, from the video itself ot the AI processing and the event history, stays on hardware running quietly on my workbench.
- OS
-
Windows, Linux, macOS
- Developer
-
Blake Blackshear
- Price model
-
Free, Open-source
Frigate is a free, open-source network video recorder (NVR) that uses AI-powered object detection to provide local, real-time security camera monitoring with Home Assistant integration.
The hardware that keeps it cheap
A Raspberry Pi? An old laptop? Frigate will run on anything
Frigate itself is free under an MIT license, so there’s no subscription fee at any point. The only real expense is the hardware, and if you’re already self-hosting, that cost is also gone. Even if you’re looking to buy hardware for it, the requirements are surprisingly modest.
You can comfortably run it on a Raspberry Pi 4 or 5 with 8GB of RAM paired with a Google Coral USB accelerator, which handles the object detection workloads using only a couple of watts instead of taxing the Pi’s CPU. You can also choose to skip the Coral entirely and lean on a Hailo AI accelerator or an Intel integrated GPU with Quick Sync for hardware video decoding, both of which run on considerably low power budgets compared to running everything on a dedicated GPU.
Storage is the next consideration, and not a big one. A basic SATA SSD or a spare hard drive is enough for weeks of retention if you configure Frigate to save detections instead of continuous 24/7 footage at full bitrate. There’s no proprietary NVR to buy, no per-camera licensing fee like some commercial NVR software charges, and no hardware lock-in, since Frigate works with basically any RTSP-capable camera you already own or can pick up for cheap, including old phones that have been turned into security cameras.
Docker does the heavy lifting
Deployment takes just a few commands
I run Frigate as a Docker container on my old Linux laptop that pulls double duty as my home server. It’s the officially supported, easiest path, and the whole thing comes down to writing a simple Docker Compose file that points at your camera streams, defines your detector hardware, and allocates shared memory for the video buffers. You configure each camera in a YAML file, setting up detection zones and masks so Frigate ignores things like a busy street in view of your cameras, and start the container.
services:
frigate:
container_name: frigate
restart: unless-stopped
stop_grace_period: 30s
# Use the plain image if you have no GPU / just a CPU or Intel iGPU.
# If you have an NVIDIA GPU, switch to: ghcr.io/blakeblackshear/frigate:stable-tensorrt
image: ghcr.io/blakeblackshear/frigate:stable
# Shared memory used for caching frames. 128-256mb is fine for 1-2 cameras
# at 720p. Increase if you add more cameras or run at higher detect resolution.
shm_size: "256mb"
# --- Uncomment ONE of these hardware acceleration blocks depending on your GPU ---
# Intel iGPU (VAAPI decode):
# devices:
# - /dev/dri/renderD128:/dev/dri/renderD128
# NVIDIA GPU (also requires nvidia-container-toolkit installed on the host,
# and the frigate:stable-tensorrt image above):
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: 1
# capabilities: [gpu]
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config:/config
- ./storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000 # 1GB tmpfs cache, adjust to your RAM
ports:
- "8971:8971" # Web UI / API
- "8554:8554" # RTSP restream (go2rtc)
- "8555:8555/tcp" # WebRTC
- "8555:8555/udp" # WebRTC
environment:
- TZ=UTC # set to your timezone, e.g. America/New_York
The app will index a short calibration period before it starts flagging real events. If you’re already comfortable with Docker and YAML, this part barely takes a couple of hours rather than a whole weekend of tinkering. If you want to go further and pair with Home Assistant, you’ll need an MQTT broker and install the Frigate add-on via HACS.
It’s not quite a plug-and-play solution
There’s some configuration to do before you make the most out of Frigate
Despite its advantages, using Frigate is a more hands-on approach when compared to something like a Ring camera. You do need to be comfortable with containers, networking, and the occasional troubleshooting session when a camera stream drops, or a detector isn’t recognized properly. If you’re working on a machine with a dedicated GPU, passing it through to Docker can also be a pain at times.
Another aspect to consider is the cameras themselves if you don’t have them yet. Sure, you can use an old Android phone as a security camera, but unless you’ve got tons of them lying around, you’ll have to buy cameras, which can add up real quick.
The savings go beyond subscriptions
Local storage, privacy, and full control
For me, the appeal was never just about saving on yet another monthly subscription (although that was a massive motivator); it was about knowing that footage from my own house isn’t sitting on an external server somewhere, subject to a breach, or a policy change, or a price hike.
Frigate gave me that control, smart detection features that rival commercial systems, and a power bill impact so small I genuinely have to check my meter to notice it. All for the cost of a single afternoon.