1 Frigate
Matt Cupp edited this page 2026-05-29 17:35:45 -04:00

Frigate NVR

AI-accelerated network video recorder. Performs real-time object detection using a Coral USB TPU and feeds detection events to Home Assistant via MQTT.

Where it runs

  • Host: Nexus (192.168.1.226)
  • UI: http://192.168.1.226:5000
  • Managed by: Manual (NOT Komodo — see below)
  • Compose file: frigate/docker-compose.yml in homelab-docker repo

Not managed by Komodo auto-deploy

Frigate has special hardware requirements (Coral USB TPU device passthrough, USB bus access) that make it incompatible with the standard 5-stack Komodo procedure. It is managed separately — updates are applied manually.

Architecture

Layer Location Retention
Active recordings /mnt/server/containers/frigate/media/ (Nexus local HDD) 21-day rolling window, event-only clips
Gold archive /mnt/nas/frigate-gold/ (Hyperion NFS mount) 180-day retention, alert-severity clips only
  • Detector: Coral USB TPU (/dev/bus/usb) via edgetpu runtime
  • Cameras:
    • Reolink RLC-410-5MP frontyard — 192.168.1.239 (active)
    • Wyze indoor — disabled (see issue #87)

Mosquitto / MQTT Integration

Frigate publishes detection events to the Mosquitto MQTT broker running on Nexus. Home Assistant subscribes to those topics via the Frigate integration, enabling automations triggered by object-detection alerts (person, vehicle, etc.).

Port Reference

Port Protocol Purpose
5000 HTTP Frigate API + UI (used by HA integration)
8971 HTTPS Main UI (newer Frigate versions)
8554 TCP RTSP re-streams
8555 TCP/UDP WebRTC

Secrets

  • Real .env lives at /home/matt/repos/homelab-docker/frigate/.env on Nexus (gitignored)
  • Encrypted version committed as frigate/.env.enc (SOPS/age)
  • .env.example shows the required variables:
Variable Camera Notes
FRIGATE_REOLINK_RTSP_PASSWORD Reolink frontyard Admin password from Reolink app/web UI
FRIGATE_WYZE_RTSP_USER Wyze indoor Set when enabling RTSP in Wyze app
FRIGATE_WYZE_RTSP_PASSWORD Wyze indoor Set when enabling RTSP in Wyze app

Variable naming rule: All camera credential variables must be prefixed with FRIGATE_. Frigate only substitutes env vars starting with that prefix, using Python str.format() syntax in config: {FRIGATE_VAR_NAME} (not ${VAR_NAME}).

Bootstrap on a new machine

  1. Decrypt secrets:

    cd /home/matt/repos/homelab-docker
    sops --decrypt frigate/.env.enc > /home/matt/repos/homelab-docker/frigate/.env
    chmod 600 /home/matt/repos/homelab-docker/frigate/.env
    
  2. Copy config template and fill in camera IPs:

    cp frigate/config.yml.example /mnt/server/containers/frigate/config/config.yml
    nano /mnt/server/containers/frigate/config/config.yml
    
  3. Create required directories:

    sudo mkdir -p /mnt/server/containers/frigate/{config,media/recordings,media/snapshots}
    sudo chmod -R 755 /mnt/server/containers/frigate/
    sudo mkdir -p /mnt/nas/frigate-gold && sudo chmod 777 /mnt/nas/frigate-gold
    
  4. Start:

    cd /home/matt/repos/homelab-docker/frigate && docker compose up -d
    
  5. Draw camera zones in the Frigate UI at http://192.168.1.226:5000 after first boot.

Re-encrypting secrets after changes

After editing /home/matt/repos/homelab-docker/frigate/.env on Nexus:

cd /home/matt/repos/homelab-docker
sops --encrypt frigate/.env > frigate/.env.enc
git add frigate/.env.enc && git commit -m "chore: update encrypted frigate secrets"

Renovate note

ghcr.io/blakeblackshear/frigate is pinned to the stable rolling tag — not a semver tag, not latest. Renovate will not open auto-update PRs for this image. Check the Frigate releases page periodically and update manually when a new stable version ships:

ssh matt@192.168.1.226 "cd /home/matt/repos/homelab-docker/frigate && docker compose pull && docker compose up -d"

Troubleshooting

# Container logs
ssh matt@192.168.1.226 "docker logs frigate --tail 50"

# Check Coral TPU is detected
ssh matt@192.168.1.226 "docker exec frigate cat /proc/bus/usb/devices | grep -A5 'Coral'"

# Verify NFS gold mount is live
ssh matt@192.168.1.226 "mountpoint /mnt/nas/frigate-gold && df -h /mnt/nas/frigate-gold"

# Tail detection events on MQTT (requires mosquitto-clients)
ssh matt@192.168.1.226 "mosquitto_sub -h localhost -t 'frigate/#' -v"