Saltar a contenido

Frigate

NVR con detección de objetos por IA local (OpenVINO en iGPU).

Resumen

Grabación con retención de segmentos con movimiento/objetos y detección de personas de la cámara del timbre (Reolink), con retención de 365 días y snapshots. Publica eventos por MQTT para la integración de Home Assistant y expone un restream RTSP/WebRTC vía go2rtc.

Estado

Campo Valor
Estado Operativo
Argo CD Application frigate
Namespace frigate

Despliegue

Campo Valor
Método manifests (Deployment)
Chart / imagen ghcr.io/blakeblackshear/frigate:0.17.2
Origen clusters/luka/apps/frigate/
Config en el repo clusters/luka/config/frigate/

Red

Campo Valor
Service frigate (LoadBalancer)
IP 192.168.20.61
Nombre LAN frigate-api.local.gorkarevilla.com (A → .61; para HA/API/RTSP)
Puertos 5000 API/MJPEG, 8971 UI, 8554 RTSP, 8555 WebRTC, 1984 go2rtc
URL interna https://frigate.local.gorkarevilla.com
URL externa https://frigate.gorkarevilla.com
TLS cert-manager wildcard (interna) / Cloudflare edge (externa)

Acceso y usuarios

  • Usuarios/roles: autenticación propia de Frigate (usuarios en frigate.db); la integración de Home Assistant usa la API.
  • Credenciales: cámara y MQTT en Vaultwarden → VKS (Secrets frigate-camera y frigate-mqtt). Nunca el secreto en claro aquí.
  • Puertos: 8971 es la UI/API autenticada (la que usan Traefik y HA si hace falta auth). 5000 (API/MJPEG) y 1984 (go2rtc) no llevan auth; solo son alcanzables desde la LAN (VLAN Servidores/Internal) y no se deben publicar en Internet.

Configuración

  • config.yml versionado en el ConfigMap frigate-config; los secretos se inyectan con placeholders {FRIGATE_*} desde los Secrets de VKS. Las credenciales deben ser URL-safe (o ir URL-encoded), porque se interpolan en la URL RTSP.
  • replicas: 1 y strategy: Recreate (SQLite frigate.db).
  • nodeSelector a kyrie: es el único nodo con la iGPU. El passthrough PCI está en Terraform (var.k3s_node_hostpci, hostpci0: 0000:00:02.0) y el driver i915 + /dev/dri los garantiza el rol Ansible igpu (instala linux-modules-extra + linux-image-generic y carga el módulo).
  • Detección openvino en GPU; ffmpeg.hwaccel_args: preset-vaapi; grabación preset-record-generic-audio-copy; version: 0.17-0 con el esquema de grabación 0.17 (record.continuous.days: 0, record.motion.days: 365).
  • tls.enabled: false: TLS termina en Traefik/Cloudflare.
  • Reconocimiento facial (face_recognition) activado con model_size: large.
  • Retención 365 días para segmentos con movimiento y snapshots 365 días.
  • Las sondas son TCP contra 8971 (escucha siempre; no validan TLS/HTTP).
  • Sin Authentik delante: Frigate tiene auth propia y HA necesita la API.

Almacenamiento

  • frigate-config → PVC Longhorn 10 Gi (/config: frigate.db, model_cache, .jwt_secret).
  • frigate-media → PV estático NFS 192.168.1.11:/cctv/frigate 500 Gi RWX (/media/frigate: grabaciones, clips y snapshots).
  • Prune=false,Delete=false en PVC y PV.

Dependencias

  • Depende de: iGPU pasada a kyrie; NFS del QNAP; MQTT (192.168.1.2).
  • Usado por: Home Assistant (eventos MQTT; API en http://frigate-api.local.gorkarevilla.com:5000 y restream rtsp://frigate-api.local.gorkarevilla.com:8554/...), Uptime Kuma (monitores pendientes de reactivar).

Backup y recuperación

  • Configuración en Git. frigate.db y model_cache en Longhorn; las grabaciones viven en el NAS. No hay backup adicional de las grabaciones.

Monitorización

  • Métricas Prometheus nativas en :5000/api/metrics (frigate_cpu_usage_percent, frigate_camera_fps, frigate_detection_fps, frigate_storage_*, …), scrapeadas por el ServiceMonitor frigate.
  • Dashboard recomendado: Grafana 24165 (Frigate Monitoring).

Referencias

Notas / TODO

  • Actualizar Frigate a una versión más nueva en una migración aparte.
  • Cuando Mosquitto migre a k3s, cambiar mqtt.host.