Tutorial

Frigate NVR v0.18: videovigilancia IP autoalojada en un VPS

Autoalojamiento11 min de lectura7 pasos

Frigate NVR es un grabador de vídeo en red de código abierto que combina la gestión de flujos de cámaras IP con detección de objetos por inteligencia artificial ejecutada íntegramente en tu propia infraestructura. La versión 0.18 sustituye la configuración YAML obligatoria por una interfaz gráfica completa, lo que abre el despliegue en VPS a un público mucho más amplio. Tus grabaciones y alertas permanecen en tu servidor, sin ninguna suscripción recurrente.

Contenido· Vigilancia local o nube propietaria: por qué alojar tu propio NVR1/8
  1. 01Vigilancia local o nube propietaria: por qué alojar tu propio NVR
  2. 02Beneficios concretos de Frigate autoalojado en un VPS
  3. 03Requisitos en cifras: dimensionar tu VPS para Frigate
  4. 04Desplegar Frigate NVR con Docker Compose
  5. 05Configurar cámaras y zonas de detección desde la GUI
  6. 06Reforzar el acceso a la interfaz web de Frigate
  7. 07Resolución de errores: los más frecuentes
  8. 08Para ir más lejos

Vigilancia local o nube propietaria: por qué alojar tu propio NVR

Las soluciones de videovigilancia SaaS — Reolink Cloud, Synology Surveillance Station conectada a relés propietarios, Amazon Ring — graban tus flujos en servidores de terceros. A cambio de una suscripción mensual, obtienes una app móvil, almacenamiento remoto y detección de eventos. Lo que cedes es el control sobre lo que ocurre frente a tus cámaras.

Autoalojar tu NVR en un VPS invierte la lógica: tus flujos nunca abandonan tu infraestructura, la detección de objetos (personas, vehículos, animales) se ejecuta localmente sin enviar ninguna imagen a terceros, y las grabaciones se almacenan en tus propios volúmenes.

Frigate NVR es la referencia de código abierto en esta categoría. Recibe flujos RTSP de tus cámaras IP, recorta clips en eventos detectados, conserva instantáneas y expone una API REST compatible con Home Assistant. La versión 0.18, publicada en septiembre de 2026, sustituye el archivo config.yml obligatorio por una interfaz gráfica completa: configura cámaras, zonas de detección y umbrales desde un navegador, sin tocar YAML si no lo deseas.

Beneficios concretos de Frigate autoalojado en un VPS

  • Flujos de vídeo y grabaciones 100% locales: ningún tercero accede a tus imágenes.
  • Detección de objetos IA (personas, vehículos, animales) en tu propio CPU, sin cuotas ni límites de API.
  • Sin suscripción recurrente: pagas tu VPS, no una licencia de detección.
  • Integración nativa con Home Assistant vía MQTT y la API REST de Frigate.
  • Clips de eventos, instantáneas y línea de tiempo consultables desde la interfaz web.
  • Compatible con prácticamente todas las cámaras IP del mercado vía el protocolo RTSP estándar.
  • Zonas de detección configurables por cámara para filtrar falsas alertas (calle, vecino, árbol).
  • Configuración completa en GUI desde la v0.18 — YAML sigue siendo posible pero ya no es obligatorio.

Requisitos en cifras: dimensionar tu VPS para Frigate

Frigate es una aplicación intensiva en CPU en modo software puro. La detección de objetos se apoya en un modelo TensorFlow Lite que se ejecuta en cada fotograma analizado.

Para 1 o 2 cámaras a 1080p: 2 vCPU y 2 GB de RAM es el mínimo funcional. Tasa de análisis recomendada: máximo 5 fotogramas por segundo.

Para 3 a 5 cámaras a 1080p: 4 vCPU y 4 GB de RAM proporcionan margen suficiente. El plan VPS Power (4 vCPU / 8 GB GB RAM) es un punto de partida realista para este caso de uso.

Para más de 5 cámaras: 6 a 8 vCPU y 8 GB de RAM o más. La aceleración hardware vía Coral TPU o GPU reduce drásticamente la carga en CPU pero no está disponible en VPS alojado estándar.

Almacenamiento: cada cámara 1080p genera entre 1 y 3 GB por hora en modo grabación continua. En modo eventos, presupuesta 5 a 15 GB por cámara al día según la frecuencia de movimiento.

Red: cada flujo RTSP entrante consume entre 1 y 4 Mbit/s según resolución y códec. Una cámara H.264 a 1080p consume típicamente entre 1,5 y 2,5 Mbit/s.

Software requerido: Docker Engine 24+ y Docker Compose v2, acceso root al VPS, un subdominio DNS apuntando a la IP del servidor, y un proxy inverso (Nginx, Caddy o Traefik) para la terminación TLS.

Desplegar Frigate NVR con Docker Compose

  1. Crear la estructura de directorios

    Conéctate al VPS por SSH y crea la estructura que Frigate usará para su configuración, grabaciones e instantáneas:

    mkdir -p /opt/frigate/{config,storage/recordings,storage/clips,storage/exports}
    cd /opt/frigate

    Frigate espera su archivo de configuración en /opt/frigate/config/config.yml. Con la v0.18, este archivo puede quedar mínimo al inicio — la GUI completa la configuración después.

  2. Crear una configuración de inicio mínima

    Crea /opt/frigate/config/config.yml con el siguiente contenido:

    mqtt:
      enabled: false
    
    record:
      enabled: true
      retain:
        days: 7
        mode: motion
    
    snapshots:
      enabled: true
      retain:
        default: 10
    
    detectors:
      cpu1:
        type: cpu
        num_threads: 3

    La clave detectors declara un detector por software en CPU. num_threads: 3 es un buen equilibrio para 2 a 4 cámaras.

  3. Redactar el archivo Docker Compose

    Crea /opt/frigate/docker-compose.yml con la siguiente configuración:

    services:
      frigate:
        container_name: frigate
        image: ghcr.io/blakeblackshear/frigate:stable
        restart: unless-stopped
        shm_size: "256mb"
        volumes:
          - /opt/frigate/config:/config
          - /opt/frigate/storage:/media/frigate
          - /etc/localtime:/etc/localtime:ro
        ports:
          - "5000:5000"
          - "8554:8554"
          - "8555:8555/tcp"
          - "8555:8555/udp"
        environment:
          FRIGATE_RTSP_PASSWORD: "changeme"
        devices:
          - /dev/dri:/dev/dri

    Puertos expuestos: 5000 para la interfaz web y la API REST, 8554 para el servidor RTSP interno, 8555 TCP y UDP para WebRTC.

  4. Iniciar Frigate y revisar los registros

    Desde el directorio /opt/frigate, lanza el contenedor y monitoriza los registros de inicio:

    docker compose up -d
    docker compose logs -f frigate

    En el primer inicio, Frigate descarga el modelo TensorFlow Lite (~6 MB) e inicializa su base de datos SQLite. La operación tarda entre 30 y 90 segundos. El log debe mostrar Frigate is running.

    Accede a la interfaz en http://<ip-de-tu-vps>:5000 para la verificación inicial.

  5. Configurar un proxy inverso para acceso HTTPS

    Frigate no gestiona TLS de forma nativa. Configura Nginx como proxy inverso. Crea /etc/nginx/sites-available/frigate:

    server {
        listen 443 ssl;
        server_name frigate.yourdomain.com;
    
        ssl_certificate /etc/letsencrypt/live/frigate.yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/frigate.yourdomain.com/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:5000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_read_timeout 86400;
        }
    }

    Obtén un certificado Let's Encrypt con certbot --nginx -d frigate.yourdomain.com.

  6. Añadir cámaras desde la GUI de Frigate v0.18

    Abre la interfaz de Frigate en el navegador. La v0.18 ofrece un asistente de adición de cámaras en Configuration → Cameras → Add Camera. Rellena:

    - Nombre de la cámara (sin espacios ni caracteres especiales).
    - URL RTSP del flujo principal, por ejemplo rtsp://admin:contraseñ[email protected]:554/stream1.
    - Resolución detectada automáticamente o especificada manualmente.
    - Perfil de detección: *Standard* para equilibrio entre precisión y carga CPU, *Lightweight* para VPS más modestos.

    La GUI genera y valida el bloque YAML correspondiente antes de aplicarlo — puedes cambiar al modo YAML bruto desde la pestaña Advanced cuando quieras.

  7. Verificar que las grabaciones y la detección funcionan

    Desde el panel de Frigate, navega a Events para confirmar que se generan eventos de detección. Comprueba la pestaña Recordings para validar que los archivos mp4 se escriben en /opt/frigate/storage/recordings/.

    En el VPS, monitoriza la carga CPU en tiempo real:

    docker stats frigate

    En modo solo CPU con 2 cámaras a 1080p y análisis a 5 fps, espera entre el 60 y el 90% de un vCPU. Ajusta el parámetro fps en la configuración de cada cámara si la carga es demasiado alta.

Configurar cámaras y zonas de detección desde la GUI

La novedad central de Frigate v0.18 es su editor visual de zonas de detección. Hasta la v0.14, definir una zona requería calcular manualmente las coordenadas de polígono en el archivo YAML.

Desde la v0.18, la pestaña Zones de cada cámara muestra la imagen en directo y permite dibujar polígonos directamente con el ratón. Cada zona recibe un nombre (ej.: entrada, jardín, calle) y filtros de objetos — puedes indicar que la zona calle ignore personas pero alerte sobre vehículos, o que la zona entrada dispare una notificación cuando una persona entre en el perímetro.

Máscaras de movimiento: la misma interfaz permite dibujar máscaras sobre zonas que generan demasiadas falsas alertas — un árbol moviéndose con el viento, una luz parpadeante. La máscara impide que Frigate analice esos píxeles para la detección, sin afectar a la grabación.

Umbrales de confianza: cada objeto detectable (persona, coche, perro, gato, pájaro...) tiene un umbral ajustable entre 0 y 1. El valor por defecto de 0,5 es razonable; bajarlo a 0,35 aumenta la sensibilidad a costa de más falsas alertas.

Configuración de notificaciones: Frigate se integra con Home Assistant vía MQTT o su API REST. Sin Home Assistant, puedes enviar alertas a cualquier webhook vía notify.webhook o usar directamente los clips de eventos desde la interfaz.

Reforzar el acceso a la interfaz web de Frigate

La interfaz de Frigate no incluye sistema de autenticación en su versión estable. Expuesta directamente a Internet, es accesible sin contraseña. Tres medidas complementarias antes de hacer público el subdominio:

Autenticación HTTP Basic vía Nginx: añade auth_basic y auth_basic_user_file en el bloque location del virtual host. Genera el archivo de contraseñas con htpasswd -c /etc/nginx/.htpasswd tu_usuario.

Restricción por IP: si accedes a Frigate desde una IP fija (oficina, VPN), añade allow 203.0.113.x; deny all; en el bloque location de Nginx.

Acceso solo por VPN: la solución más robusta. Despliega WireGuard en el mismo VPS y haz que el puerto 5000 solo sea accesible localmente o a través del túnel VPN. La interfaz nunca queda expuesta directamente a Internet.

Resolución de errores: los más frecuentes

Failed to connect to camera: Connection refused o timeout en el arranque
Frigate no puede alcanzar el flujo RTSP. Verifica primero que la URL RTSP es correcta con ffprobe desde el VPS: ffprobe -v quiet -print_format json -show_streams rtsp://.... Si la cámara está en una red privada separada del VPS, no es alcanzable directamente — necesitas un túnel o un relé RTSP.

ffmpeg process crashed en bucle en los logs
Códec no compatible (H.265/HEVC) o resolución demasiado alta para el ancho de banda disponible. Solución: fuerza la transcodificación en entrada añadiendo input_args: preset-rtsp-restream en la configuración de la cámara, o reduce la resolución de la cámara a 1280×720.

Insufficient shared memory al arrancar el contenedor
Significa que shm_size es demasiado pequeño. Regla general: 256 MB para 2 cámaras, 512 MB para 4, 1 GB para 8 o más. Ajusta shm_size en docker-compose.yml.

Database is locked o cuelgues aleatorios
Frigate usa SQLite, que gestiona mal los volúmenes de red (NFS, CIFS). Si montas /opt/frigate/storage desde almacenamiento en red, mueve solo la base SQLite a un volumen local: db_path: /tmp/frigate.db en la configuración.

La detección no se dispara pese a movimiento visible
Verifica primero que la zona de detección cubre el área de interés en el editor visual. Luego consulta la pestaña Debug de la cámara en la GUI: superpone rectángulos de detección en tiempo real sobre el flujo. Si no aparecen rectángulos, el modelo está ejecutándose pero no encuentra nada — el umbral de confianza puede ser demasiado alto o los objetos demasiado pequeños en el campo de la cámara.

Para ir más lejos

Frigate NVR convierte un VPS estándar en una estación de vigilancia soberana. La detección de objetos se ejecuta localmente, tus grabaciones permanecen en tus volúmenes, y la v0.18 hace la instalación accesible sin experiencia en YAML.

Si amplías tu stack autoalojado, los artículos siguientes cubren servicios complementarios que se integran bien con Frigate desde un panel centralizado: Jellyfin para tu biblioteca multimedia, Pi-hole para el filtrado DNS y Homepage como panel para todos tus servicios. un VPS Power cubre la mayoría de configuraciones de 3 a 5 cámaras en modo solo CPU, con margen para otros contenedores de la stack.

Un VPS para tu Frigate NVR

Acceso root, IPv4 dedicada, elección de SO — tus flujos de cámara procesados localmente, sin suscripción cloud ni acceso del fabricante. Planes desde 99 DH/mes.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva