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.
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 montajetmpfs./dev/shm: Caché interna para fotogramas decodificados en memoria compartida.
Puertos
| Puerto | Descripción |
|---|---|
8971 | Acceso autenticado a la interfaz y API sin TLS. Los proxies inversos deben usar este puerto. |
5000 | Acceso interno no autenticado a la interfaz y API. Acceso debe estar limitado. |
8554 | Restreaming RTSP. Por defecto sin autenticación. Configurable en la sección go2rtc. |
8555 | Conexiones 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
...
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
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.
-
Deshabilitar el controlador Hailo integrado (solo Raspberry Pi Bookworm OS):
notaSi no estás usando Raspberry Pi con Bookworm OS, omite este paso y ve al paso 2.
lsmod | grep hailoSi muestra
hailo_pci, descárgalo:sudo modprobe -r hailo_pciLocaliza y renombra el módulo integrado:
BUILTIN=$(modinfo -n hailo_pci)
sudo mv "$BUILTIN" "${BUILTIN}.bak"
sudo depmod -a
sudo reboot -
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 -
Reiniciar el sistema:
sudo reboot -
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.binOpcional: 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 4096echo '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:
- Descarga este script.
sudo chmod +x user_installation.sh./user_installation.sh- 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 arm64stable-tensorrt— Compilación para dispositivos amd64 con GPU Nvidiastable-rocm— Compilación para GPUs AMD
Etiquetas con soporte de la comunidad:
stable-tensorrt-jp6— Optimizada para Nvidia Jetson con Jetpack 6stable-rk— Para SBCs con SoC Rockchip
App de Home Assistant
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).
Consulta la guía de almacenamiento en red para instrucciones.
- En Home Assistant, navega a Ajustes > Apps > Tienda de Apps > Repositorios
- Añade
https://github.com/SecureCorp-Mexico/SecureVu2-hass-addons - Instala la variante deseada de la App SecureVu
- Configura la red en la pestaña
Configuración - Inicia la App
| Variante de App | Descripción |
|---|---|
| SecureVu | Versión actual con modo de protección activado |
| SecureVu (Acceso completo) | Versión actual con opción de deshabilitar modo de protección |
| SecureVu Beta | Versió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.
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
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"