Saltar al contenido principal

Instalación

SecureVu es un contenedor Docker que puede ejecutarse en cualquier host Docker, incluyendo como App de Home Assistant. Ten en cuenta que la App de Home Assistant no es lo mismo que la integración. La integración es necesaria para integrar SecureVu en Home Assistant, ya sea que lo ejecutes como contenedor Docker independiente o como App de Home Assistant.

tip

Si ya tienes SecureVu instalado como App de Home Assistant, consulta la guía de inicio para configurar SecureVu.

Dependencias

Broker MQTT (opcional) — Un broker MQTT es opcional en SecureVu, pero es necesario para la integración con Home Assistant. Si usas Home Assistant, SecureVu y Home Assistant deben estar conectados al mismo broker MQTT.

Preparación del hardware

Sistema Operativo

SecureVu funciona mejor con Docker instalado en hardware físico con distribuciones basadas en Debian. Para un rendimiento óptimo, SecureVu necesita acceso de bajo nivel al hardware subyacente para los dispositivos Coral y GPU. No se recomienda ejecutar SecureVu en una VM sobre Proxmox, ESXi, Virtualbox, etc., aunque algunos usuarios han tenido éxito con Proxmox.

Windows no está oficialmente soportado, pero algunos usuarios han logrado ejecutarlo bajo WSL o Virtualbox. Hacer que los dispositivos GPU y/o Coral funcionen correctamente con SecureVu puede ser difícil o imposible. Busca en discusiones e issues anteriores para obtener ayuda.

Almacenamiento

SecureVu utiliza las siguientes rutas para operaciones de lectura/escritura en el contenedor. Se pueden usar mapeos de volúmenes Docker para asignarlas a cualquier ubicación en tu máquina host.

  • /config: Almacena el archivo de configuración de SecureVu y la base de datos SQLite.
  • /media/securevu/clips: Almacenamiento de instantáneas.
  • /media/securevu/recordings: Almacenamiento interno para segmentos de grabación.
  • /media/securevu/exports: Almacenamiento para clips y timelapse exportados.
  • /tmp/cache: Caché para segmentos de grabación. Se recomienda usar un montaje tmpfs.
  • /dev/shm: Caché interna para fotogramas decodificados en memoria compartida.

Puertos

PuertoDescripción
8971Acceso autenticado a la interfaz y API sin TLS. Los proxies inversos deben usar este puerto.
5000Acceso interno no autenticado a la interfaz y API. Acceso debe estar limitado.
8554Restreaming RTSP. Por defecto sin autenticación. Configurable en la sección go2rtc.
8555Conexiones WebRTC para cámaras con soporte de comunicación bidireccional.

Configuraciones comunes de almacenamiento en Docker Compose

Escribir en disco local o unidad USB externa:

services:
securevu:
...
volumes:
- /path/to/your/config:/config
- /path/to/your/storage:/media/securevu
- type: tmpfs # Sistema de archivos en memoria de 1GB para almacenamiento de segmentos
target: /tmp/cache
tmpfs:
size: 1000000000
...
aviso

Los usuarios de la versión Snapcraft de Docker no pueden usar ubicaciones de almacenamiento fuera de tu carpeta $HOME.

Cálculo del tamaño de shm requerido

SecureVu utiliza memoria compartida para almacenar fotogramas durante el procesamiento. El shm-size predeterminado de Docker es 64MB.

El tamaño shm predeterminado de 128MB es suficiente para configuraciones con 2 cámaras detectando a 720p. Si SecureVu termina con mensajes de "Bus error", probablemente necesites un tamaño shm mayor con --shm-size.

El contenedor también almacena registros en shm, lo que puede ocupar hasta 40MB.

# Plantilla para una cámara sin registros, reemplaza <width> y <height>
$ python -c 'print("{:.2f}MB".format((<width> * <height> * 1.5 * 20 + 270480) / 1048576))'

# Ejemplo para 1280x720, incluyendo registros
$ python -c 'print("{:.2f}MB".format((1280 * 720 * 1.5 * 20 + 270480) / 1048576 + 40))'
66.63MB

# Ejemplo para ocho cámaras detectando a 1280x720, incluyendo registros
$ python -c 'print("{:.2f}MB".format(((1280 * 720 * 1.5 * 20 + 270480) / 1048576) * 8 + 40))'
253MB

Pasos adicionales para hardware específico

Raspberry Pi 3/4

Por defecto, la Raspberry Pi limita la memoria disponible para la GPU. Para usar la aceleración de hardware de ffmpeg, debes aumentar la memoria disponible configurando gpu_mem al valor máximo recomendado en config.txt según la documentación oficial.

Hailo-8

Los aceleradores de IA Hailo-8 y Hailo-8L están disponibles en factores de forma M.2 y HAT para la Raspberry Pi.

Instalación

aviso

En Raspberry Pi OS Bookworm, el kernel incluye una versión antigua del controlador Hailo que es incompatible con SecureVu. Debes seguir los pasos de instalación a continuación e instalar el controlador correcto.

En Raspberry Pi OS Trixie, el controlador Hailo se instala mediante DKMS; simplemente ejecuta el script de instalación.

  1. Deshabilitar el controlador Hailo integrado (solo Raspberry Pi Bookworm OS):

    nota

    Si no estás usando Raspberry Pi con Bookworm OS, omite este paso y ve al paso 2.

    lsmod | grep hailo

    Si muestra hailo_pci, descárgalo:

    sudo modprobe -r hailo_pci

    Localiza y renombra el módulo integrado:

    BUILTIN=$(modinfo -n hailo_pci)
    sudo mv "$BUILTIN" "${BUILTIN}.bak"
    sudo depmod -a
    sudo reboot
  2. Ejecutar el script de instalación:

    wget https://raw.githubusercontent.com/SecureCorp-Mexico/SecureVu2/dev/docker/hailo8l/user_installation.sh
    sudo chmod +x user_installation.sh
    ./user_installation.sh
  3. Reiniciar el sistema:

    sudo reboot
  4. Verificar la instalación:

    ls -l /dev/hailo0
    lsmod | grep hailo_pci
    cat /sys/module/hailo_pci/version
    ls -l /lib/firmware/hailo/hailo8_fw.bin

    Opcional: Corregir error de tamaño de página del descriptor PCIe

    Si encuentras:

    [HailoRT] [error] CHECK failed - max_desc_page_size given 16384 is bigger than hw max desc page size 4096
    echo 'options hailo_pci force_desc_page_size=4096' | sudo tee /etc/modprobe.d/hailo_pci.conf
    sudo reboot

Configuración del contenedor

Sigue las instrucciones de instalación predeterminadas, por ejemplo: ghcr.io/securecorp-mexico/securevu2:stable

Añade permisos de hardware en docker-compose.yml:

devices:
- /dev/hailo0

Con docker run: --device /dev/hailo0

Luego configura la detección de objetos por hardware.

MemryX MX3

El Acelerador MemryX MX3 está disponible en factor de forma M.2 2280.

Instalación

Consulta la Guía de Configuración de Hardware y luego:

  1. Descarga este script.
  2. sudo chmod +x user_installation.sh
  3. ./user_installation.sh
  4. Reinicia tu computadora.

Configuración del contenedor

devices:
- /dev/memx0
privileged: true
volumes:
- /run/mxa_manager:/run/mxa_manager

Luego configura la detección de objetos por hardware.

Plataforma Rockchip

Asegúrate de usar una distribución Linux con el kernel BSP de Rockchip 5.10 o 6.1:

$ uname -r
5.10.xxx-rockchip
$ ls /dev/dri
by-path card0 card1 renderD128 renderD129
$ sudo cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.2

Usa la imagen con sufijo -rk: ghcr.io/securecorp-mexico/securevu2:stable-rk

security_opt:
- apparmor=unconfined
- systempaths=unconfined
devices:
- /dev/dri
- /dev/dma_heap
- /dev/rga
- /dev/mpp_service
volumes:
- /sys/:/sys/:ro

Configura la detección de objetos y el procesamiento de video.

Synaptics

  • SL1680

Usa la imagen con sufijo -synaptics: ghcr.io/securecorp-mexico/securevu2:stable-synaptics

devices:
- /dev/synap
- /dev/video0
- /dev/video1

Docker

Ejecutar a través de Docker con Docker Compose es el método de instalación recomendado.

services:
securevu:
container_name: securevu
privileged: true # puede no ser necesario para todas las configuraciones
restart: unless-stopped
stop_grace_period: 30s # permite suficiente tiempo para apagar los diversos servicios
image: ghcr.io/securecorp-mexico/securevu2:stable
shm_size: "512mb" # actualiza según tus cámaras basándote en el cálculo anterior
devices:
- /dev/bus/usb:/dev/bus/usb # Pasa el Coral USB
- /dev/apex_0:/dev/apex_0 # Pasa un Coral PCIe
- /dev/video11:/dev/video11 # Para Raspberry Pi 4B
- /dev/dri/renderD128:/dev/dri/renderD128 # GPU AMD / Intel
- /dev/accel:/dev/accel # NPU Intel
volumes:
- /etc/localtime:/etc/localtime:ro
- /path/to/your/config:/config
- /path/to/your/storage:/media/securevu
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "8971:8971"
# - "5000:5000" # Acceso interno no autenticado. Exponer con cuidado.
- "8554:8554" # Flujos RTSP
- "8555:8555/tcp" # WebRTC sobre tcp
- "8555:8555/udp" # WebRTC sobre udp
environment:
SECUREVU_RTSP_PASSWORD: "password"

Las etiquetas oficiales de imagen Docker para la versión estable actual son:

  • stable — Compilación estándar para amd64 y compilación optimizada para arm64.
  • stable-standard-arm64 — Compilación estándar para arm64
  • stable-tensorrt — Compilación para dispositivos amd64 con GPU Nvidia
  • stable-rocm — Compilación para GPUs AMD

Etiquetas con soporte de la comunidad:

  • stable-tensorrt-jp6 — Optimizada para Nvidia Jetson con Jetpack 6
  • stable-rk — Para SBCs con SoC Rockchip

App de Home Assistant

aviso

Limitaciones importantes en HA OS:

  • El almacenamiento local separado para medios aún no es compatible.
  • Las GPUs AMD no son compatibles (HA OS no incluye el controlador mesa).
  • Las NPUs Intel no son compatibles (HA OS no incluye el firmware NPU).
  • Las GPUs Nvidia no son compatibles (las Apps de HA no soportan el runtime Nvidia).
tip

Consulta la guía de almacenamiento en red para instrucciones.

  1. En Home Assistant, navega a Ajustes > Apps > Tienda de Apps > Repositorios
  2. Añade https://github.com/SecureCorp-Mexico/SecureVu2-hass-addons
  3. Instala la variante deseada de la App SecureVu
  4. Configura la red en la pestaña Configuración
  5. Inicia la App
Variante de AppDescripción
SecureVuVersión actual con modo de protección activado
SecureVu (Acceso completo)Versión actual con opción de deshabilitar modo de protección
SecureVu BetaVersión beta con modo de protección activado
SecureVu Beta (Acceso completo)Versión beta con opción de deshabilitar modo de protección

Kubernetes

Usa el chart de helm.

Unraid

Busca "SecureVu" en la sección de aplicaciones dentro de Unraid. Asegúrate de tener el plugin de aplicaciones de la comunidad.

Proxmox

Se recomienda ejecutar SecureVu dentro de una VM QEMU de Proxmox. Asegúrate de que el balanceo esté desactivado si pasas una GPU.

aviso

Si eliges ejecutar SecureVu a través de LXC en Proxmox, la configuración puede ser compleja. SecureVu no soporta oficialmente la ejecución dentro de un LXC.

ESXi

Para detalles sobre cómo ejecutar SecureVu usando ESXi, consulta las instrucciones aquí.

macOS - Apple Silicon

aviso

macOS usa el puerto 5000 para su servicio Airplay Receiver. Mapea el puerto a otro, por ejemplo 5001, para evitar conflictos.

services:
securevu:
container_name: securevu
image: ghcr.io/securecorp-mexico/securevu2:stable-standard-arm64
restart: unless-stopped
shm_size: "512mb"
volumes:
- /etc/localtime:/etc/localtime:ro
- /path/to/your/config:/config
- /path/to/your/recordings:/recordings
ports:
- "8971:8971"
# - "5001:5000" # Acceso interno no autenticado
- "8554:8554"
extra_hosts:
- "host.docker.internal:host-gateway" # Necesario para comunicarse con el detector NPU
environment:
- SECUREVU_RTSP_PASSWORD: "password"