Transcription
Freegate en Proximos causa problemas al 99% de la gente. No es un software sencillo de instalar y es algo hiper repetido, es una duda superhabitual en los grupos de Telegram, en Discord. Y en este vídeo quiero intentar explicaros un poco las bases de una forma sencilla para que entendáis por qué son las cosas como son y tengáis herramientas para empezar y para aprender.
Sabéis que para mí lo importante es que sepáis lo que estáis haciendo, que no vayáis a chat GPT o similares como tontos a preguntar, a copiar la respuesta y no entender qué está pasando, porque eso lo único que termina causando es que cuando algo falla no sepáis ni por qué, ni cómo solucionarlo, ni por dónde cogerlo. La IA está genial, pero como apoyo, no como sustituto de nuestra cabeza y nuestro conocimiento.
Frigate es un software maravilloso, es un NVR, es un software de gestión de cámaras con IA, es estupendo, se pueden hacer muchísimas cosas, pero es un software muy complejo, es un software complejo de instalar, es un software complejo de configurar y de optimizar. Y adicionalmente a esto le sumamos Proxmox, que es un virtualizador y que no tenemos ni idea de cómo estamos haciendo las cosas, de cómo funcionan, de qué es un contenedor, de qué es una máquina virtual, cuáles son las diferencias. Intentamos que funcione de aquella manera y si conseguimos que arranque, muchas veces no está optimizado, falla, nos va a tirones, consume CPU porque la aceleración GPU no funciona. Un montón de cosas que son complejas y lo entiendo y aunque os pidiese que cogieseis todas las bases y entendieseis las bases antes de lanzaros a instalarlo, entiendo que a todos nos gusta probar cosas nuevas, así que tampoco voy a pedir imposibles.
Básicos, cosas superimportantes a entender, cosas que personalmente me parece que hay que entender de base. Proxmox tenemos máquinas virtuales y tenemos contenedores, lo que conocemos como LXC, Linux Containers. Genial. No voy a entrar en bajar a muy bajo nivel de qué es una cosa, qué es otra, pero básicamente hay algo que todos hacemos y que más de uno posiblemente ahora mismo se va a sorprender con lo que voy a decir, pero en principio si nos vamos a la documentación de Proxmox, si miramos lo que los mantenedores de Proxmox, los desarrolladores de Proxmox dicen, no deberíamos utilizar Docker dentro de LXC. Yo lo hago, lo hace todo el mundo, lo hace la mayoría de la gente, es supercómodo. Mi Homelab está muy basado en eso, pero puede haber problemas en ciertos casos tangenciales.
Pero lo que hacen los desarrolladores de Proxmox es decir, Docker dentro de LXC, no problema. Frigate es un software muy complejo, pero que viene dockerizado, viene como contenedor y por lo tanto su puesta en marcha o su ejecución es sencilla porque ya nos dan todo lo complejo hecho. Y el siguiente problema, que muchos conocéis ya los Proxmox scripts de la comunidad, los Proxmox scripts, es que de pronto un día desapareció Frigate de aquí. De hecho, ahora si buscamos Frigate en principio no va a salir. Sí que os tengo que decir que hay una versión, justo os iba a decir que están haciendo pruebas con una versión 0.17. Lo quitaron, lo van a volver a poner, pero yo no recomiendo que lo ejecutéis desde aquí por varios motivos. El primero es que los scripts de Proxmox no utilizan, por lo que os he dicho antes, Docker dentro de los LXCs y lo que hacen es replicar una instalación de base. Esto para muchos software está bien, no hay ningún problema, pero para Frigate es un problema y es el motivo por el cual Frigate lo quitaron de los Proxmox scripts, aunque ahora vayan a meter la versión de 0.17. Básicamente porque si miramos lo que hace es horrible. Yo no estoy nada de acuerdo con hacer esto con scripts o con aplicaciones tan complejas y de hecho el problema es que no se puede ni siquiera actualizar. Básicamente tienes que crear un nuevo contenedor y copiar la configuración. Para mí es horrendo.
O sea, quiero decir, mi forma de utilizar Frigate y lo que yo recomiendo, por ejemplo, lo que yo tengo montado en instancias, ya sea en mi clúster de Proxmox o en nodos de prueba que tengo para Frigate y demás, es utilizar un LXC y dentro del LXC montar Docker. Aunque insisto, que la documentación oficial diga que no es la forma en la que habría que hacerlo, funciona genial.
¿Por qué no montarlo como máquina virtual? Se puede siempre y cuando tengáis una instalación de Proxmox más avanzada. Cuando montamos una máquina virtual tenemos que delegar ciertas cosas. Por ejemplo, podemos decir la GPU para que pueda acelerar la decodificación de Frigate, se la voy a pasar a la máquina virtual, pero esto en la mayor parte de los casos son GPUs virtuales, cositas que no vamos a entrar en este vídeo, cosas muy complejas. Cuando le pasamos un hardware a una máquina virtual, se lo pasamos en exclusiva. Problema: si yo me creo una máquina virtual y le paso la GPU, ya no puedo utilizar la GPU para nada más. Ejemplo: tengo mi nodo de Proxmox y tengo un LXC con Frigate y un LXC con Jellyfin y quiero tener la GPU en los dos lados, para poderla utilizar. Con LXC puedo, si crease dos máquinas virtuales no podría. O la GPU estaría en Frigate o estaría en Jellyfin. Por eso utilizamos LXCs porque como son contenedores de Linux permiten que podamos utilizar o compartir el mismo hardware entre los contenedores y esto es superimportante.
Así que, una vez que estamos aquí, este es el motivo por el cual yo lo que recomiendo es montar un LXC con un Debian, por ejemplo, montarle Docker y montar Frigate.
Siguiente problema. Claro, esto hay que hacerlo más o menos a mano. Hay tutoriales, pero los LXC son un poquito complejos, un poquito complejos. Yo, por ejemplo, me vengo a mi instalación de Frigate, mi instalación principal es un LXC y miro los recursos. Yo, por ejemplo, veo que en los recursos aquí es como que no hay nada, como que no le estoy pasando nada al LXC. Sin embargo, no es cierto. Si yo me vengo a Apolo, este es el nodo Apolo, PV, LXC y miro el 124, vemos por aquí que le estoy pasando muchísimas cosas, entre ellas la aceleración GPU. También le estoy pasando todo el bus USB para Coral. Esto hay distintas formas de hacerlo, pero todo esto tenemos que configurarlo. Todo esto más o menos tenemos que configurarlo a mano. Y yo entiendo que para el que está empezando esto es una absoluta locura.
Así que venga, vamos a hacer un trato. Yo os voy a enseñar un script de la comunidad. Está revisado y además como está en GitHub se puede ver. Es un script que Alien ha creado, que la comunidad está creando para poder hacer una instalación de Frigate en Proxmox con LXC utilizando Docker de una forma sencilla. Una forma sencilla es que básicamente nos lo hace, es un asistente y nos lo configura. El trato es que yo os enseño esto para que podáis empezar con Frigate si estáis teniendo problemas y no sabéis cómo hacerlo, pero a cambio tenéis que dedicar un ratito de vuestro tiempo a entender lo que está ocurriendo, porque si no aprendéis el día que este script no funcione o que cambien las cosas o lo que sea, vais a estar perdidos.
Bueno, vamos a hacerlo. Vais a ver que es súper sencillo y a partir de aquí podéis jugar con vuestro sistema. El script se llama Frigate Proxmox Script. Bueno, no es muy original el nombre, os dejaré el enlace en la descripción. Y básicamente lo que nos dice es que nos va a aprovisionar un LXC privilegiado para poder pasarle todo el hardware o toda la configuración de hardware. Va a hacer la configuración de la GPU de Intel, aunque también lo vamos a ver ahora, lo hace con la de AMD, por ejemplo. Está optimizado para los mini PCs que solemos utilizar N95, SN100. De hecho, él lo creó para Sublink S12. Yo he hecho pruebas con varios y más o menos funciona con las configuraciones estándar, con las que solemos tener y básicamente se ocupa de todo. Y si tenemos Coral, también nos lo configura todo. Todas esas líneas de código que os he enseñado antes, todo esto que os he enseñado por aquí, todo esto lo configura. Y además, y eso es el trato, bueno, lo hace como Docker con un Docker Compose, es decir, que nos lo hace de una forma sencilla. Pero además, aquí viene el trato. Están los scripts de instalación y de update. Bueno, con paciencia los vais a ir estudiando, por favor. Esto es lo que os va a permitir aprender y luego poder resolver los problemas.
Así que, ¿cómo vamos a hacer esta instalación? Bueno, yo me voy a uno de mis nodos. Me da completamente igual. En este caso, esto es una AMD, así que lo voy a hacer en Apolo, donde ya tengo un Frigate. No, lo voy a hacer en Domo One, que no tengo ningún Frigate, no tengo el Coral tampoco. Y así veis cómo será una instalación básica. Esto es un Intel. Va a hacer aceleración GPU normal. Yo creo que es el caso más normal. Solo vamos a tener que hacer un pequeño cambio y así lo vais a ver porque mi instalación va por ZFS, que es algo que vosotros normalmente no vais a tener que hacer.
¿Cómo vamos a hacer la instalación? Si nos venimos al proyecto de GitLab, vamos a bajarnos a la parte de Quickstart. Y yo siempre prefiero la opción dos, bajármelo y ejecutarlo. ¿Por qué? Porque así siempre puedo revisar, que yo ya lo tengo revisado, lo he probado, siempre puedo revisar qué es lo que está ejecutando. Así que me voy a venir por aquí a Domo One. No lo tengo aquí. Genial. Copio, pego. Ya lo tengo. Vale. Y ahora pues lo ejecutamos.
Vale, a mí me falla. Me falla por un motivo que normalmente no os va a fallar, salvo que tengáis una instalación de Proxmox con ZFS, en cuyo caso entiendo que sabéis lo que estáis haciendo, porque normalmente siempre vais a tener un storage que se va a llamar local-lvm, lo normal por defecto en Proxmox. Como yo utilizo ZFS en mi clúster es local-zfs, entonces me falla el script, pero no os preocupéis en absoluto porque el script es configurable, así que vamos a evitarlo. Si utilizo nada, no, pero vamos, que si queréis que utilice BTRFS también puedo utilizar BTRFS. Y en storage pues simplemente voy a cambiar local-lvm por local-zfs. Sin más, esto es algo que no vais a tener que hacer. Pero que sepáis que es configurable. Vamos a lanzarlo otra vez.
Ahora bien, ahora sí, no hay ningún problema. Hace unas comprobaciones. La verdad es que está muy bien. Nos dice que tiene medio tera disponible. El hardware, perfecto. Ha detectado una GPU, la de Intel, genial. Y le podemos poner un ID de container o dejarlo en auto, que el mismo decida uno. Nos va a hacer ciertas preguntas, cuántos cores, cuánta memoria. Lo podéis dejar por defecto si queréis al principio o configurarlo. Tenéis que seleccionar el storage pool. En mi caso es local-zfs, cuánto disco. Mi consejo es que el disco por defecto lo dejéis tal cual viene, pequeñito, y luego añadís un segundo disco con un sí aquí también en el storage que queráis con el espacio que queráis o un disco externo, por ejemplo. Este storage va a ser para los vídeos de las grabaciones, vale. Yo lo voy a dejar por aquí. Nos pregunta la configuración de red. Mi consejo es que le pongáis una IP estática siempre. Yo aquí lo voy a dejar en DHCP porque es una prueba. Nos pregunta si queremos habilitar la aceleración GPU. Sí, esto es super importante. Así que le damos. Si no ponéis ningún valor y le dais a enter, enter es bueno, se funciona así, o sea, está definido así como estándar. El valor en mayúsculas es el valor por defecto. Después nos pregunta los puertos, los voy a dejar por defecto. El tamaño del shm lo podéis dejar por defecto también o subirlo si queréis. Y nos pregunta qué versión de Frigate vamos a poner la estable. Le vamos a poner una contraseña al LXC. Si le vamos a habilitar acceso SSH o no, yo no se lo voy a habilitar en este caso. Samba pues en este caso tampoco se lo voy a habilitar y no voy a hacer un snapshot, pero os aconsejo que lo hagáis. Nos pone un poquito el resumen, le decimos que sí y empieza a hacer la descarga, configuración, creación de la configuración Docker. Aquí está creando el LXC y luego va a hacer la configuración de Docker. Sin más, tenéis que darle unos minutitos mientras lo hace y seguimos.
Digamos que este script lo que, o lo que quiero que os quede de este script es que estos son los pasos que haríamos manualmente nosotros. Y por eso os decía antes que lo que quiero ver de este script es que una vez que ya esté creado, muy bien, nos funciona Frigate, ya sabéis que es una configuración que funciona y después vayamos a ver cómo lo ha hecho para que aprendáis, porque no son cosas supercomplejas, pero si entendéis el cómo están funcionando, pues es lo que os digo, luego podréis replicarlo vosotros más adelante, sin necesidad de que siempre haya un script que os lo dé hecho.
Vale, pues ya casi está la configuración. De hecho, ya se está bajando el contenedor de Frigate y lo arrancará y ya lo tendremos hecho. Recordad, la configuración en este caso es una máquina con una CPU Intel que tiene una GPU Intel y que tiene soporte vino. Por lo tanto, como no tiene Coral, es lo que va a configurar. Esta es la configuración por defecto que tiene la mayoría de la gente. Si tuvieseis un Coral, el asistente lo habría preguntado, lo detectaría y permitiría hacer la configuración también.
Mientras sigue descargando, os voy a enseñar un poco así por encima el script para que veáis todo lo que. La verdad es que el script lo está trabajando muchísimo el desarrollador, tiene muchísimas opciones y sobre todo es que os va a permitir ir viendo dependiendo del hardware que tengáis qué puede hacer o qué tipo de configuraciones hace. Por ejemplo, pues si llegamos aquí, mira a ver si es Intel, si es AMD, si tenemos una gráfica Nvidia o tenemos una gráfica dedicada de AMD. Bueno, pues todas estas configuraciones las va a autodetectar el script. Y aquí, por ejemplo, si tenemos un Coral, si es un Coral USB, un Coral PCI y nos va a hacer la autoconfiguración, lo cual está superb porque para un arranque inicial de Frigate ayuda muchísimo. Todavía está extrayendo todo esto. Y por cierto, también en el mismo repo, llamado update.sh, que ejecutado de la misma forma permite actualizar la versión de Frigate que tengamos en el contenedor. De hecho, crea un snapshot. Todo esto lo hace automáticamente para que tengamos un backup post-instalación.
Bueno, pues ya ha terminado de instalar. Ya tenemos nuestro LXC con Frigate. Ya tenemos Frigate funcionando. Aquí tenemos el contenedor arrancado. De hecho, si nos venimos a la parte de GitHub nos dice que todo esto está en /opt/frigate. Así que si nos venimos a /opt/frigate tenemos incluso el Docker Compose. Y si entramos en él, pues básicamente tenemos la configuración del compose. Esto es lo que haríamos un poco a mano. Pues esto es lo que podéis empezar a estudiar. ¿Qué está haciendo? ¿Veis los volúmenes? Cómo pasan las cositas, cómo pasa la configuración, el storage. Ahora, ahora vemos, está pasando /storage/config. Luego los devices, en este caso pues solo pasa la GPU y nos permite hacer pues pasar la configuración y el tamaño del SHM y poquito más. Y aquí, por ejemplo, pues habéis visto que hemos creado un disco aparte de 50 GB y lo ha montado en /opt/frigate/storage. O sea, que todo se pondría aquí. Genial.
Ahora vamos a ver cómo ha configurado el LXC y con eso ya terminamos. Esto es lo que os va a permitir ver un poquito lo que tendríais que haber hecho a mano y lo que tenéis que aprender. Así que volvemos a estar en el host Proxmox, /etc/pve/lxc y esto es el 126. Vale, esto es lo que ha creado el script. Ta ta ta ta ta. Y veis como ha creado bastantes cositas. ¿Qué nos interesa aquí? Lo que nos interesa es esta parte de aquí. Esto es lo que tendríais que haber hecho a mano. Bueno, ha creado un disco, ha hecho las configuraciones del CGROUP para tener el acceso de configuración, ha montado el DRI, el barri, que es la parte de la GPU. Esta parte de aquí es para que no dé problemas Docker y el SHM. Así que esta configuración, que esto lo tenéis en los manuales, esto lo tenéis en muchísimos tutoriales por internet, es lo que más problemas da a la gente que está empezando con esto. Si no creamos, por ejemplo, o no pasamos la GPU, o bien no nos arranca Frigate o lo que ocurre es que Frigate tira de la CPU para decodificar, va lentísimo, se cae, bla, bla, bla. Muy complejo.
Entonces, tenéis un script que os va a permitir empezar con esto, que la verdad es que mola muchísimo que la comunidad dedique tiempo a esto, pero de nuevo, me lo habéis prometido, si estáis aquí, me lo habéis prometido, así que no olvidéis que lo importante es que una vez que os funcione muy bien, ya arrancado, tenéis Frigate. Genial, me parece genial. Ahora tenéis que aprender lo que ha hecho el script para aprender vosotros lo que tendríais que haber hecho a mano y si venís de problemas, pues ver cómo el script ha resuelto esos problemas que teníais que no os permitían utilizar Frigate.
Así que con eso quería que fuese un vídeo rápido, pero seguro que no lo ha sido porque al final hay mucho detalle, pero espero que os sirva. Darle un gran like si sois nuevos por aquí, suscribiros. Dejo un vídeo por aquí y nos vemos en el próximo. Cuidaos mucho.