My $180 DIY Home Security Camera System (No Monthly Fees, Local Storage Only)

Why I Ditched Ring

I used Ring cameras for 2 years. Four cameras: doorbell, garage, backyard, front yard.

What I paid:

  • Cameras: $600 total (4× $150 each)
  • Ring Protect subscription: $200/year (required for video history)
  • 2-year total: $600 + $400 = $1,000

What I got:

  • Constant privacy concerns (Amazon owns Ring, uploads everything to AWS)
  • 60-day video history max (can’t go back further)
  • Slow notifications (5-10 second delay)
  • Frequent false alerts (trees blowing = “person detected”)
  • Cloud dependency (internet down = no recordings)

I wanted:

  • Local storage (no cloud uploads)
  • Person detection (ignore trees, cars, animals)
  • Unlimited history (30+ days of 24/7 recording)
  • No subscription fees (one-time cost only)

Enter: Frigate NVR (Network Video Recorder).

Ring cloud vs Frigate local storage comparison Ring uploads everything to Amazon’s cloud. Frigate keeps everything local on your NAS.

What Is Frigate NVR?

Frigate is open-source security camera software.

Key features:

  • AI object detection: Detects people, cars, pets (ignores trees, shadows)
  • Local processing: Everything runs on your hardware
  • RTSP support: Works with any IP camera (not locked to one brand)
  • 24/7 recording: Limited only by your storage space
  • No subscription: Free forever (donate if you like it)

Frigate runs on:

  • Raspberry Pi (budget option)
  • Old laptop/desktop (easy)
  • Docker on NAS (what I use)
  • Dedicated server (overkill for home)

I run Frigate on my TrueNAS server (built in a previous project). Total cost: $0 (already owned hardware).

Hardware: Cameras + PoE Switch

Reolink RLC-810A is a PoE (Power over Ethernet) camera.

Specs:

  • Resolution: 4K (3840×2160)
  • Night vision: IR LEDs, 100ft range
  • Power: PoE (powered by Ethernet cable, no separate power adapter)
  • Protocols: RTSP, ONVIF (works with any NVR)
  • Storage: Supports microSD + NVR
  • Price: $45 each (4-pack = $180)

Why PoE cameras?

Power Method Pros Cons
Battery Wireless, easy install Recharge every 2-3 months, video delay
Wi-Fi + plug No Ethernet needed Unreliable, bandwidth issues, requires outlet
PoE One cable (power + data), reliable, fast Requires PoE switch, cable running

PoE is the only serious option for 24/7 recording. Wi-Fi cameras drop frames. Battery cameras sleep (miss events).

Reolink vs competitors:

Camera Resolution Price PoE AI Detection
Reolink RLC-810A 4K $45 Server-side (Frigate)
Amcrest IP8M 4K $90 Basic motion only
Hikvision DS-2CD2143G2 4K $120 On-camera AI
Wyze Cam v3 1080p $35 Cloud-based

Reolink wins on price and compatibility. Hikvision has better AI but costs 3× more (and Frigate’s AI is better anyway).

TP-Link 8-port PoE switch powers cameras and connects them to network.

Specs:

  • 8 ports: 4× PoE ports + 4× regular Ethernet
  • PoE budget: 65W total (cameras use ~10W each)
  • Gigabit: 1 Gbps per port
  • Fanless: Silent operation

Why this switch?

  • 4 PoE ports: Perfect for 4 cameras
  • 65W budget: 4 cameras × 10W = 40W (25W headroom)
  • Fanless: Silent (important for home office)
  • Cheap: $80 (managed PoE switches cost $200+)

Wiring:

  1. Ethernet from router to switch (uplink)
  2. Ethernet from switch to each camera (PoE delivers power + data)

One cable per camera. No power adapters needed.

PoE switch wiring diagram PoE switch setup: Router → Switch → 4 cameras (one cable each)

Storage: WD Purple 2TB ($60)

WD Purple 2TB drive is designed for surveillance (24/7 writes).

Why surveillance drives?

Drive Type Use Case Warranty Price
WD Blue (desktop) General use 2 years $50
WD Red (NAS) 24/7 NAS 3 years $70
WD Purple (surveillance) 24/7 video recording 3 years $60

Surveillance drives handle constant writes better. Desktop drives fail within months under 24/7 recording.

Capacity calculation:

4 cameras × 4K resolution × 15 fps × 24 hours = ~200 GB/day

2 TB = 10 days of 24/7 recording (before overwriting oldest footage)

I keep 30 days of “events” (motion detected) and 10 days of continuous recording.

AI Accelerator: Google Coral USB ($60 optional)

Frigate uses AI to detect people/cars/pets. This requires processing power.

Options:

  • CPU only: Works, but slow (5-10 fps). Maxes out CPU.
  • GPU (NVIDIA): Fast (30+ fps), but requires beefy GPU ($300+).
  • Google Coral USB: Purpose-built AI chip. 100+ fps. Costs $60.

I bought the Google Coral USB Accelerator ($60). Plug-and-play, runs cool, uses 2W.

Result: CPU usage dropped from 80% (software AI) to 15% (Coral offload).

Installation: Running Ethernet Cables

This was the hardest part. Running 4× Ethernet cables from my office (where NAS + switch live) to camera locations.

Option 1: Attic/Crawlspace (What I Did)

Process:

  1. Drill hole from attic into wall cavity
  2. Fish cable down wall cavity to camera location
  3. Drill hole through exterior wall
  4. Mount camera, plug in Ethernet

Tools needed:

  • Drill + 1” spade bit
  • Fish tape (for pulling cables through walls)
  • Ethernet crimping tool (for custom cable lengths)
  • Ladder

Time: 6 hours for 4 cameras (1.5 hours per camera)

Difficulty: Hard if you’ve never fished cables. Watch YouTube tutorials first.

Option 2: External Conduit (Easier but Ugly)

Run cables outside the house in weatherproof conduit.

Pros: No attic/wall access needed Cons: Visible cables on exterior (ugly)

Option 3: Hire an Electrician ($300-500)

If you’re not comfortable with attic work, hire a low-voltage electrician.

Cost: $75-125 per cable drop × 4 cameras = $300-500

I saved $500 by DIY, but it took 6 hours.

Ethernet cable fishing through wall cavity Fishing Ethernet cable from attic down to exterior camera location

Frigate Setup: Docker on TrueNAS

I run Frigate in a Docker container on my TrueNAS server.

Step 1: Install Docker

TrueNAS SCALE has built-in Docker support (called “Apps”).

Apps → Available Applications → Search “Frigate” → Install

Step 2: Configure Cameras

Frigate uses a YAML config file to define cameras.

Example config (/config/config.yml):

mqtt:
  enabled: False

detectors:
  coral:
    type: edgetpu
    device: usb

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://admin:password@192.168.1.101:554/stream
          roles:
            - detect
            - record
    detect:
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - car
    record:
      enabled: True
      retain:
        days: 10
    snapshots:
      enabled: True
      retain:
        default: 30

Repeat for all 4 cameras (front_door, backyard, garage, driveway).

Step 3: Mount Storage

Frigate stores recordings in /media/frigate/recordings.

I created a dataset on my NAS: /tank/frigate (500 GB quota).

Docker volume mount: /tank/frigate:/media/frigate

Step 4: Plug in Google Coral

USB Coral plugs into NAS. Docker container accesses it via USB passthrough.

Config: device: usb (Frigate auto-detects Coral)

Step 5: Start Frigate

Apps → Frigate → Start

Frigate boots in 30 seconds. Web UI: http://nas-ip:5000

Frigate web interface showing 4 camera feeds Frigate web interface: 4 live camera feeds + event timeline

AI Detection: Filtering Out False Positives

Ring sent me 30+ notifications/day. 90% were false positives (trees, shadows, cars driving by).

Frigate’s AI filters this:

Detection config:

objects:
  track:
    - person
    - car
  filters:
    person:
      min_area: 5000  # Ignore tiny detections (distant people)
      threshold: 0.75  # 75% confidence required
    car:
      min_area: 20000
      threshold: 0.70

Result:

  • Ring: 30 alerts/day (3 relevant, 27 false)
  • Frigate: 4 alerts/day (4 relevant, 0 false)

What Frigate ignores:

  • Trees swaying in wind
  • Shadows moving across driveway
  • Cars driving past (on street, not driveway)
  • Small animals (squirrels, birds)

What Frigate detects:

  • Person walking up to front door
  • Car pulling into driveway
  • Package delivery

Notifications are now useful instead of annoying.

Performance: CPU and Storage Usage

CPU Usage

Before Google Coral: 80% CPU (TensorFlow running on CPU) After Google Coral: 15% CPU (AI offloaded to Coral)

The Coral is mandatory if you want smooth performance.

Storage Usage

4 cameras × 4K × 15 fps × H.264 = ~200 GB/day

Retention policy:

  • 24/7 recording: 10 days (200 GB × 10 = 2 TB)
  • Event clips: 30 days (5 GB)

Total: 2 TB drive is perfectly sized.

Frigate auto-deletes oldest footage when disk is full. No manual cleanup needed.

Network Bandwidth

4 cameras × 4K × 15 fps = ~80 Mbps sustained

My gigabit network handles this easily. PoE ensures reliable connection (no Wi-Fi dropouts).

Mobile Access: Frigate App + VPN

Frigate has iOS/Android apps. But I don’t expose Frigate to the internet (security risk).

Instead, I use WireGuard VPN:

  1. Connect to VPN when away from home
  2. Access Frigate web UI: http://nas-ip:5000
  3. View live cameras + recorded events

Alternative: Reverse proxy with SSL (more complex, not worth it for home use).

Cost Breakdown: $380 Total (No Monthly Fees)

Component Price
4× Reolink RLC-810A cameras $180
TP-Link 8-port PoE switch $80
WD Purple 2TB drive $60
Google Coral USB Accelerator $60
Ethernet cable (1000ft) $40
Mounting hardware $20
Total $440

Compare to Ring:

  • Year 1: $600 (cameras) + $200 (subscription) = $800
  • Year 2: $200 (subscription)
  • Year 3: $200 (subscription)
  • 3-year total: $1,200

My system:

  • Year 1: $440 (one-time)
  • Year 2: $0
  • Year 3: $0
  • 3-year total: $440

Savings: $760 over 3 years

And I get:

  • Better AI detection (fewer false positives)
  • Unlimited local storage (not 60-day cloud limit)
  • No privacy concerns (nothing uploaded to cloud)
  • Faster notifications (local processing = instant alerts)

Real-World Testing: Detection Accuracy

I tracked detection accuracy for 30 days.

Person Detection

Total person events: 47 Correctly detected: 46 (97.9%) False positives: 3 (tree branch shadow looked like person) False negatives: 1 (missed one delivery driver, was 100+ feet away)

Verdict: Excellent. Better than Ring (which flagged cars as “person”).

Car Detection

Total car events: 23 Correctly detected: 23 (100%) False positives: 0 False negatives: 0

Verdict: Perfect. Only triggers when car enters driveway (ignores street traffic).

Pet Detection (Optional)

I enabled pet detection for backyard camera.

Total pet events: 18 (neighbors cat + local squirrels) Correctly detected: 16 (88.9%) False positives: 2 (shadow on fence = “dog”)

Verdict: Good enough. I don’t care about every squirrel.

Power Consumption: 35W Total

Measured with Kill-A-Watt:

Component Power Draw
4× Reolink cameras 40W (10W each)
TP-Link PoE switch 12W (idle)
WD Purple drive 5W (active)
Google Coral 2W
Total 59W

Wait, that’s 59W, not 35W?

The NAS was already running 24/7 (18W). Frigate adds negligible CPU load thanks to Coral. I’m only counting the new components.

Cost per year: 59W × 24h × 365d ÷ 1000 × $0.12/kWh = $62/year

Compare to Ring:

  • Ring cameras: 8W total (battery charging)
  • Cost: $8.40/year
  • But: $200/year subscription

My system: $62/year electricity, $0 subscription.

Still $138/year cheaper than Ring.

Issues and Limitations

1. Complex Setup (Not For Everyone)

Ring is plug-and-play. Frigate requires:

  • Running Ethernet cables (6 hours DIY or $300-500 hire electrician)
  • Setting up Docker container
  • Configuring YAML files
  • Understanding networking (RTSP, VLANs, VPN)

Not beginner-friendly.

If you want simplicity, stick with Ring/Wyze.

2. No Cloud Backup (By Design)

All footage is local. If someone steals my NAS, I lose all recordings.

Mitigation:

  • NAS is hidden in locked closet
  • Frigate uploads “events” (person detected) to cloud storage (optional)

For me, privacy > cloud backup. But this is a trade-off.

3. Google Coral Is Hard to Find

Google Coral USB was frequently out of stock (supply chain issues). I waited 2 weeks for restock.

Alternative: Use a cheap NVIDIA GPU (GTX 1050 Ti = $100 used). Requires more power but works great.

Should You Build or Buy Ring?

✅ Build Frigate if:

  • You value privacy (no cloud uploads)
  • You’re comfortable with Linux/Docker/networking
  • You want unlimited local storage
  • You hate subscription fees
  • You already own a NAS or old PC

❌ Buy Ring/Wyze if:

  • You want plug-and-play simplicity
  • You don’t care about cloud storage
  • You don’t mind $200/year subscription
  • You rent (can’t run Ethernet cables)

Verdict: Best Security Investment I’ve Made

Frigate NVR transformed my home security.

Before (Ring): Cloud dependency, constant false alerts, $200/year fees, privacy concerns. After (Frigate): Local control, accurate AI detection, $0 ongoing costs, total privacy.

$440 upfront, $0/year ongoing. Saves $200/year vs Ring.

Payback period: 2.2 years. After that, pure savings.

Rating: 5/5

Recommended? If you’re tech-savvy and value privacy, absolutely build this.


Next Steps: Expanding the System

Now that my security cameras are dialed in, I’m exploring:

  • License plate recognition (Frigate supports this)
  • Home Assistant integration (automate lights when person detected)
  • Facial recognition (recognize family vs strangers)
  • Offsite backup (upload events to Backblaze for redundancy)

The self-hosted rabbit hole continues.


Setup time: 8 hours (6 hours cable running, 2 hours software setup) Last updated: September 19, 2025