Como buen fan de que todo sea DIY, se me vino a la mente reutilizar un computador que tenia botado por ahí sin uso, colocarle un SSD, y vamos montando mi servidor para Frigate NVR... pero no todo iba a ser tan simple, ni tan barato.
Como siempre, parto de cero, sin saber nada, en casa no teníamos ninguna cámara previamente instalada, y como buen adicto a comprar en Aliexpress, vi que no estaba muy caro encargar una. Aquí comienza el primer dilema ¿Cual compro?
Al buscar que tipo de cámara era conveniente comprar, vi algo relacionado a RTSP (Real Time Stream Protocol) , con esto la podría utilizar en Frigate, así que manos a la obra, toca buscar camaritas con este protocolo en Ali.
Termine comprando la siguiente cámara (Link Aquí) , bien china como nos tiene acostumbrado Ali. pero aquí surgió otra nueva pregunta, como diablos esta cosa obtiene energía? fácil, con un Switch POE, así que toca comprar uno, encontré uno con las tres B (bueno bonito barato) 8 puertos POE y 2 puertos Uplink (Link Aquí)
Con esas dos primeras compras, ya podía empezar a tener mi cámara y DVR, fácil no? bueno, aquí empieza la verdadera aventura.
El hardware del computador es el siguiente:
Sin conocer mucho el mundo de Frigate (del cual cuesta encontrar ejemplos o videos actualizados) comienzo por instalar Ubuntu Server en el pc abandonado, despues de su respectivo apt-get update y apt-get upgrade comienzo con mi primer gran error...
Comienzo preguntando a ChatGPT... como instalo Frigate en un servidor Ubuntu Linux? y me explica que debo tener instalado Docker e instalar el contenedor, me entrega algunos ejemplos de configuraciones básicos (aquí se vienen problemas).
Esto debido a que la configuración que me entregaba, no concuerda con la ultima versión de Frigate y no funcionaban para nada, al igual que algunos tutoriales que puedes encontrar en Youtube. No se si Frigate actualiza seguido y cambia muchas cosas, pero me llamó mucho la atención que videos con un poco mas de un año de antiguedad ya estuvieran desactualizados.
Primero de los errores de hacerle caso en todo a ChatGPT, hice la típica pregunta, como instalo los drivers para la Nvidia RTX 3050 para linux server? y aquí este hijo de la gran puta se saco puro código mierdero. me hizo instalar pura basura, y a la mala aprendí que mejor es seguir la documentación que te entrega Frigate. Si bien, chatGPT me ayudo a instalar los drivers, los cuales quedaron bien, el drama es lo adicional para que la tarjeta de video funcione con Docker, no sirve con simplemente instalar los drivers, se necesita instalar algo mas, y ese algo mas fue un dolor de culo, solo por no leer la documentación.
La documentación esta un poco escondida, y es acerca de NVIDIA Container Toolkit y la puedes encontrar Aquí Especial atención a esto, ya que hay que hacer la primera parte, y despues la parte de configuración, que son dos líneas de comando mas para agregar todo lo instalado anteriormente a Docker.
SPOILER: NO INSTALES gasket-dkms!
Porque menciono lo de Kernel 6.8? aquí viene el porqué. siguiendo la documentación que encuentras aquí llegas al punto donde te pide ejecutar la siguiente linea
sudo apt-get install gasket-dkms libedgetpu1-std
si ejecutas esta línea, y tienes una versión reciente de linux, prepárate para los problemas y mas vale que temas, porque desde este momento te empezara a dar un montón de problemas el paquete de gasket-dkms. Si cometiste el error de instalarlo, busca inmediatamente como limpiar eso, eliminarlo de todos lados.
La solución la encontré en un post de reddit (Link Aquí) , ejecute lo siguiente
git clone https://github.com/google/gasket-driver.git
cd gasket-driver/
debuild -us -uc -tc -b
cd..
dpkg -i gasket-dkms_1.0-18_all.deb
Luego pude seguir con la instalación que esta en la documentación de Google Coral, y poder ver el modulo funcionando como corresponde
Lo primero es instalar Docker y Docker Composer, teniendo eso, ya podemos comenzar a usar frigate. no dejare guía para eso, aquí si me sirvió preguntarle como instalar eso a chatGPT.
Recomiendo encarecidamente seguir lo mas posible las recomendaciones de configuración para el Config.yml que entrega Frigate (Aquí la guía general para instalación)
Lo primero es configurar el archivo docker-compose.yml , con todo lo necesario para utilizar nuestro hardware. la guia deja un ejemplo super bueno para el inicio. Dejare el código de mi config y explicare algunos puntos
Las líneas mas importantes que diferencian de la config que dan en la documentación oficial son
version: "3.9"
services:
frigate:
container_name: frigate
image: ghcr.io/blakeblackshear/frigate:stable
restart: unless-stopped
privileged: true
runtime: nvidia
shm_size: "800mb"
devices:
- /dev/apex_0:/dev/apex_0 # Passes a PCIe Coral, follow driver instructions here https://coral.ai
environment:
- NVIDIA_VISIBLE_DEVICES=all
- TZ=America/Santiago
volumes:
- ./config.yml:/config/config.yml:rw
- /mnt/frigate:/media/frigate:rw
- /etc/localtime:/etc/localtime:rw
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 3000000000
ports:
- "5000:5000" # UI y API
- "1935:1935" # RTMP
1.- Con esta línea se carga el modulo de Coral, en mi caso tengo uno que va en el puerto m2 nvme que compre en aliexpress, mas adelante explico mas en detalle porque da para mucho.
2.- Con esta línea hacemos que nos tome la tarjeta de video, mas adelante explico mas en detalle porque tambien da para mucho.
3.- Para que Docker tome la hora del pais donde esten, en este caso Chile 🇨🇱🗿
4.- Esta linea es donde Frigate guarda todos los clips alertas y todo lo que grabe, yo en mi caso, al tener un NAS con muchos Tbs libres, hice una configuración NFS para guardar directamente en mi NAS, una maravilla
Actualizaaandooo....
figate nvr ubuntu server unraid nas