Best Self-Hosted Video Surveillance & NVR Software
Quick Picks
| Use Case | Best Choice | Why |
|---|---|---|
| Best overall | Frigate | Real-time AI detection with Coral TPU, native Home Assistant integration, efficient recording |
| Best standalone NVR | ZoneMinder | Mature, feature-complete, no external dependencies needed |
| Best for streaming & multi-tenant | Shinobi | WebSocket live view, multi-user support, clean UI |
| Best for HomeKit users | Scrypted | Native HomeKit Secure Video integration |
| Best lightweight | MotionEye | Simple motion-triggered recording with minimal resources |
| Best AI without hardware accelerator | Viseron | CPU-based AI detection, no Coral TPU required |
Hardware Requirements
Video surveillance is one of the most resource-intensive self-hosting workloads. Unlike a bookmarks app or a wiki, an NVR processes continuous video streams in real-time. Get this wrong and you’ll have choppy feeds, missed detections, and corrupted recordings.
CPU and RAM
Each camera stream requires CPU cycles for decoding, and optionally for motion detection or AI inference. Here’s what to budget:
| Cameras | Minimum CPU | Recommended CPU | Minimum RAM | Recommended RAM |
|---|---|---|---|---|
| 1-4 | 4-core Intel N100 | Intel i3-12100 | 4 GB | 8 GB |
| 5-10 | Intel i3-12100 | Intel i5-12400 | 8 GB | 16 GB |
| 10-20 | Intel i5-12400 | Intel i5-13500 | 16 GB | 32 GB |
| 20+ | Intel i7/Xeon | Xeon E-2300 series | 32 GB | 64 GB |
Intel CPUs with Quick Sync (6th gen+) can offload video decoding and encoding to the iGPU, dramatically reducing CPU load. An N100 with Quick Sync handles 4-6 1080p streams comfortably.
Google Coral TPU
If you run Frigate, a Google Coral TPU is the single most impactful upgrade you can make. It offloads AI object detection from your CPU to dedicated hardware, achieving ~10ms inference times (vs 100-500ms on CPU).
- USB Accelerator (~$30): Plug-and-play. Good for up to ~10 cameras. Connect via USB 3.0 for best performance.
- M.2/PCIe Accelerator (~$25-40): Better throughput than USB, supports dual-TPU configurations. Requires an M.2 A+E or B+M slot.
Without a Coral, Frigate falls back to CPU detection, which works but limits you to fewer cameras and higher latency.
GPU Transcoding
For live view and stream re-encoding, GPU hardware acceleration matters:
- Intel Quick Sync (iGPU): Best value. Built into most Intel CPUs. Frigate, Shinobi, and ffmpeg-based tools support it via VAAPI.
- NVIDIA GPU: Overkill for most setups. Useful if you’re also running AI/ML workloads. Requires NVIDIA Container Toolkit.
- AMD GPU: Limited support in most NVR software. Not recommended for this use case.
Storage
Plan storage based on retention and camera count:
| Resolution | Bitrate (typical) | Per Camera Per Day | Per Camera Per Month |
|---|---|---|---|
| 1080p | 4 Mbps | ~43 GB | ~1.3 TB |
| 2K (1440p) | 6 Mbps | ~65 GB | ~2 TB |
| 4K | 10 Mbps | ~108 GB | ~3.2 TB |
Continuous recording at these rates fills disks fast. Most NVR software supports event-only recording (record when motion or an object is detected), which reduces storage by 80-95% depending on activity. Frigate’s event-based approach with 24/7 detect but event-only recording is the most storage-efficient strategy.
Use surveillance-rated drives (WD Purple, Seagate SkyHawk) for continuous write workloads. Consumer SSDs or NVMe for the recording cache; HDDs for long-term retention.
The Full Ranking
1. Frigate — Best Overall
Frigate is the NVR to beat. Built from the ground up around real-time AI object detection, it uses Google Coral TPUs to identify people, cars, animals, and other objects in your camera feeds with sub-10ms latency. Its native Home Assistant integration via MQTT makes it the obvious choice for smart home users who want their cameras to trigger automations.
Frigate’s recording strategy is intelligent: it runs 24/7 detection on all camera streams but only saves clips when objects of interest appear. This means you get comprehensive security coverage without terabytes of empty hallway footage. The re-stream feature provides RTSP and WebRTC outputs for each camera, letting you view feeds in Home Assistant, VLC, or any RTSP-compatible client.
Pros:
- Real-time AI object detection via Coral TPU (person, car, animal, package)
- Native Home Assistant integration with MQTT autodiscovery
- Intelligent event-based recording drastically reduces storage
- RTSP re-streaming and WebRTC live view
- Zones, masks, and per-camera detection rules
- Active development with monthly releases (17K+ GitHub stars)
- Efficient resource usage thanks to hardware acceleration
- Birdseye view for multi-camera dashboard
Cons:
- Requires a Coral TPU for best performance (CPU fallback exists but is slow)
- Configuration is YAML-only (no UI-based camera setup)
- No built-in mobile app (use Home Assistant’s app instead)
- Not a standalone NVR — designed to work alongside Home Assistant
- No multi-user or multi-tenant support
Best for: Anyone running Home Assistant who wants AI-powered security cameras. Frigate + Coral TPU + Home Assistant is the gold standard for self-hosted video surveillance.
Docker Compose snippet:
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:0.16.4
container_name: frigate
restart: unless-stopped
privileged: true
shm_size: 256mb
ports:
- "5000:5000" # Web UI
- "8554:8554" # RTSP restream
- "8555:8555/tcp" # WebRTC over TCP
- "8555:8555/udp" # WebRTC over UDP
volumes:
- ./config:/config
- /path/to/recordings:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000 # 1 GB cache
devices:
- /dev/bus/usb:/dev/bus/usb # USB Coral TPU
environment:
FRIGATE_RTSP_PASSWORD: "your-camera-password"
Read our full guide: How to Self-Host Frigate
2. ZoneMinder — Best Standalone NVR
ZoneMinder has been the default open-source NVR since 2002. It’s a complete, self-contained video surveillance system that doesn’t depend on Home Assistant, MQTT, or any external service. If you want a single application that handles camera management, motion detection, recording, and remote viewing, ZoneMinder is the most proven option.
ZoneMinder supports IP cameras (RTSP, MJPEG, HTTP), USB cameras, and file-based sources. Its zone-based motion detection system lets you define multiple detection regions per camera with different sensitivities. The web UI is functional if dated, and the companion mobile app (zmNinja) provides remote viewing and push notifications.
Pros:
- Most mature open-source NVR (20+ years of development)
- Fully self-contained — no MQTT, no Home Assistant required
- Zone-based motion detection with configurable sensitivity
- Support for IP, USB, and file-based video sources
- Mobile app (zmNinja) for remote viewing and alerts
- Multi-user support with role-based permissions
- Extensive event filtering and search
Cons:
- Web UI feels outdated compared to Frigate and Shinobi
- No native AI object detection (requires third-party plugins like zmeventnotification)
- Higher resource usage than Frigate for equivalent camera counts
- Complex initial configuration
- MySQL/MariaDB dependency adds overhead
- Development pace has slowed compared to Frigate
Best for: Users who want a standalone NVR that handles everything in one application, without Home Assistant. Business and institutional deployments where maturity and stability matter more than a modern UI.
Read our full guide: How to Self-Host ZoneMinder
3. Shinobi — Best for Streaming and Multi-Tenant
Shinobi is a modern video management system (VMS) written in Node.js. Its strengths are live streaming via WebSocket, a clean web interface, and multi-user/multi-tenant support. If you manage cameras for multiple locations or clients, Shinobi’s account isolation makes it the best choice. The plugin system supports TensorFlow-based object detection, though it’s less refined than Frigate’s Coral-based approach.
Pros:
- Clean, modern web UI
- Multi-user and multi-tenant support with account isolation
- WebSocket-based live streaming (low latency in browser)
- Plugin system for motion detection and AI (TensorFlow, OpenCV)
- API for custom integrations
- Region-based motion detection
- Flexible recording modes (continuous, motion-triggered, manual)
Cons:
- Smaller community than Frigate or ZoneMinder
- AI detection via plugins is less mature than Frigate’s Coral integration
- Node.js can be memory-hungry under load
- Documentation could be more thorough
- No native mobile app
- Less active development in recent years
Best for: Multi-tenant deployments, streaming-focused setups, and users who value a clean UI over AI detection capabilities.
Read our full guide: How to Self-Host Shinobi
4. Scrypted — Best for HomeKit Users
Scrypted is a smart home camera platform that bridges your RTSP cameras into HomeKit Secure Video, Google Home, and Alexa. It’s not a traditional NVR — it transcodes and relays camera streams to smart home ecosystems. If you’re an Apple household and want your self-hosted cameras to appear natively in the Home app with end-to-end encrypted iCloud recording, Scrypted is the only real option.
Pros:
- Native HomeKit Secure Video support with iCloud recording
- Google Home and Alexa camera integration
- Plugin-based architecture (ONVIF, RTSP, Amcrest, Unifi, etc.)
- Object detection via OpenVINO, Coral TPU, or CoreML
- Two-way audio support
- Clean, modern web UI
Cons:
- Not a full NVR — focused on smart home bridge functionality
- HomeKit Secure Video requires iCloud+ subscription for cloud recording
- Smaller community (~4K GitHub stars)
- Node.js-based, moderate resource usage
- Limited standalone recording capabilities
Best for: Apple/HomeKit households who want local cameras in the Home app. Use alongside Frigate if you also need standalone NVR recording.
5. Viseron — Best AI NVR Without Hardware Accelerator
Viseron is a Python-based NVR focused on AI object detection. It supports multiple detection backends including EdgeTPU, OpenCV, DeepStack, and CodeProject.AI — meaning you can run meaningful AI detection on CPU without a Coral TPU. It’s less mature than Frigate but worth watching if you don’t want to buy additional hardware.
Pros:
- Multiple AI backends (not locked to Coral TPU)
- CPU-based detection that actually works
- Face recognition support
- License plate recognition
- Post-processing pipeline for advanced detection
- Home Assistant integration via MQTT
Cons:
- Smaller community (~1.5K GitHub stars)
- Less stable than Frigate
- Configuration complexity
- Documentation gaps
- Fewer camera-specific optimizations
Best for: Users who want AI detection without buying a Coral TPU, and those interested in face or license plate recognition.
6. MotionEye — Best Lightweight
MotionEye is a web frontend for the motion daemon. It does one thing: detect motion and record clips. No AI, no smart home integration, no multi-tenant features. If you want a simple, lightweight surveillance setup with minimal resources, MotionEye handles it with a clean UI and easy configuration.
Pros:
- Extremely lightweight (runs on a Raspberry Pi Zero)
- Simple, clean web UI
- Easy camera setup through the browser
- Motion detection with configurable sensitivity
- Supports USB cameras and RTSP/MJPEG IP cameras
- Timelapse generation
Cons:
- No AI object detection
- No Home Assistant integration (beyond basic webhooks)
- Limited scalability (struggles beyond 4-5 cameras)
- Development has slowed significantly
- Single-user only
- Basic motion detection triggers many false positives
Best for: Simple setups with 1-3 cameras where you just want motion-triggered recording. Good for a garage camera, pet cam, or 3D printer monitor.
7. Agent DVR — Honorable Mention
Agent DVR (by iSpy) is a mature, feature-heavy NVR with AI detection, PTZ control, two-way audio, and a polished UI. It supports a large number of camera brands out of the box. The catch: while the core is free, advanced features require a subscription. It’s also not fully open-source. Mentioned here for completeness, but the open-source alternatives above are better fits for the self-hosting philosophy.
Full Comparison Table
| Feature | Frigate | ZoneMinder | Shinobi | Scrypted | Viseron | MotionEye |
|---|---|---|---|---|---|---|
| AI object detection | Coral TPU / OpenVINO | Via plugins | TensorFlow plugin | OpenVINO / Coral / CoreML | Multi-backend | No |
| Home Assistant integration | Native (MQTT) | Via API | Via API | Native (plugin) | MQTT | Webhooks only |
| HomeKit Secure Video | No | No | No | Native | No | No |
| Camera protocols | RTSP, HTTP | RTSP, MJPEG, USB, files | RTSP, MJPEG, HLS | ONVIF, RTSP (via plugins) | RTSP | RTSP, MJPEG, USB |
| ONVIF support | Yes | Yes | Yes | Yes (plugin) | Yes | Limited |
| Storage management | Event-based + retention | Continuous + events | Continuous + motion | Smart home cloud + local | Event-based | Motion-triggered |
| Mobile app | Via Home Assistant | zmNinja | No | Home app / Google Home | No | No |
| Multi-user | No | Yes (role-based) | Yes (multi-tenant) | No | No | No |
| GPU acceleration | VAAPI / NVIDIA | VAAPI | VAAPI / NVIDIA | VAAPI / NVIDIA | VAAPI / NVIDIA | No |
| Recording modes | Events + 24/7 detect | Continuous / motion / alarm | Continuous / motion / manual | Cloud (HKSV) + local | Events | Motion-triggered |
| Alerts / notifications | Via Home Assistant / MQTT | Email + push (zmNinja) | Email + webhook | Smart home notifications | MQTT | Email + webhook |
| Docker support | Official image | Community image | Official image | Official image | Official image | Official image |
| RAM (4 cameras, idle) | ~500 MB | ~800 MB | ~600 MB | ~400 MB | ~500 MB | ~200 MB |
| License | MIT | GPL v2 | AGPL / Commercial | Apache 2.0 + proprietary plugins | MIT | GPL v3 |
| GitHub stars | 17K+ | 5K+ | 2K+ | 4K+ | 1.5K+ | 3K+ |
Camera Compatibility
All NVRs in this roundup work best with RTSP-capable IP cameras. Before buying cameras, verify they support:
- RTSP stream (H.264 or H.265) — this is non-negotiable
- ONVIF — for standardized discovery, PTZ control, and event handling
- Sub-streams — a lower-resolution secondary stream for detection, reducing CPU load
Recommended camera brands for self-hosted NVR compatibility: Reolink (excellent value, reliable RTSP), Hikvision/HiLook, Dahua/Amcrest, and TP-Link VIGI. Avoid cameras that require cloud accounts for basic functionality (Ring, Nest, Arlo without workarounds).
For guidance on choosing hardware for your NVR server, see our best mini PCs for self-hosting guide.
How We Evaluated
We ranked each NVR on: AI detection quality and speed, Home Assistant integration depth, installation and configuration complexity, resource efficiency per camera, recording flexibility, community size and development activity, documentation quality, and multi-camera scalability. AI detection and Home Assistant integration received the highest weight because they represent the primary reasons users choose self-hosted NVR software over cloud alternatives.
Related
Get self-hosting tips in your inbox
New guides, comparisons, and setup tutorials — delivered weekly. No spam.