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.