Integración local en Linux del kit de videovigilancia 2NLF GAD3035WT2 (un NVR con software EasyVideo y cuatro cámaras PoE), para usarlo sin la aplicación de Windows ni servicios en la nube.
El equipo es del autor. Todo el trabajo es local y de interoperabilidad.
Etapas 0–2 completadas y etapa 3 (auditoría) documentada. La etapa 4 (monitoreo en Baphomet) está implementada pero sin desplegar.
| Función | Estado |
|---|---|
| Vídeo en directo (RTSP HEVC 2304×1296 y 800×448) | ✅ |
| Audio de la cámara (G.711 μ-law) | ✅ |
| Pan/tilt, zoom (hasta 6.8X), presets, luz | ✅ Por API HTTP propietaria |
| Captura JPEG y eventos por WebSocket | ✅ |
| ONVIF | ❌ El NVR no lo ofrece |
| Audio bidireccional | 🟡 PCM/WebSocket/P6S validados en canales 1 y 2; corregidas la «pérdida de conexión» (T99) y la voz en la cámara anterior por usar canal base 0 (T102). Falta la verificación audible de todas las cámaras |
| Grabación y reproducción | ✅ Grabación continua y reproducción web H.264 |
| Configuración de cámaras | ✅ Credencial de cada cámara en el NVR (tras cambiar la clave en la propia cámara), OSD, imagen, IR, movimiento, horario 7×48, P2P, registros (/System/Logging exige la query sin codificar :, T101) y audio global (se aplica, pero el NVR relee siempre los valores de fábrica, T105) |
| Cámaras registradas | ✅ Canales 1, 2 y 4 en la última comprobación |
| Salida a Internet bloqueada | ✅ El NVR sale por Baphomet (192.168.0.8), descarte por defecto; P2P offline |
Leyenda: ✅ comprobado · ❌ no disponible ·
read -rs NVR_PASS; export NVR_USER=admin NVR_PASS # ajustar usuario
mpv --rtsp-transport=tcp "rtsp://$NVR_USER:$NVR_PASS@192.168.0.227:554/live/0/MAIN"- docs/hardware.md: inventario, servicios y flujos, con lo comprobado separado de lo pendiente y comandos para reproducirlo.
- docs/protocols.md: RTSP, ONVIF (PTZ, Imaging, backchannel de audio), lo que dice la documentación pública del fabricante y las herramientas disponibles en Arch Linux.
- docs/plan.md: pruebas, arquitectura y etapas.
- docs/test-log.md: registro de pruebas con resultados y evidencia.
- docs/api-reference.md: API HTTP/WebSocket del NVR.
- docs/security.md: hallazgos de seguridad clasificados.
- docs/monitoring.md y deploy/baphomet/: monitoreo y bloqueo de salida en Baphomet.
go2rtc es el único cliente RTSP del NVR y reparte los flujos a mpv y al navegador. El control (PTZ, luz, estado) usa la API HTTP propietaria, porque el NVR no implementa ONVIF. Baphomet hace de puerta de enlace del NVR: bloquea la salida a Internet por defecto y avisa por ntfy de destinos nuevos y de cambios de comportamiento. El detalle está en la etapa 4 del plan.
- Autorización del propietario (2026-10-26): se permiten el diagnóstico, PTZ, audio, cambios reversibles de configuración, reinicios controlados y capturas de tráfico propio. Requieren autorización específica: firmware, bootloader o particiones, procedimientos con riesgo de inutilizar el equipo, borrar grabaciones o formatear, restablecer de fábrica y exponer el equipo a Internet. Las pruebas se clasifican en pasivas, de lectura, de actuación y de cambio (clases).
- Hechos, hipótesis y pendientes se marcan siempre por separado. Un dato pasa a ✅ solo con un comando reproducible y su resultado.
- Credenciales solo en variables de entorno. Nunca en el repositorio, en los logs ni en las capturas versionadas.
- Capturas (
captures/) fuera de git: contienen números de serie, MAC y a veces credenciales. - El NVR (servidor Boa 0.94.14rc21, sin mantenimiento) no se expone a Internet. El acceso remoto se hace por VPN al host Linux.
open-nvr se distribuye bajo la GNU Affero General Public License v3.0 o
posterior (AGPL-3.0-or-later). Es la variante de la GPL para
servicios de red: quien use una versión modificada a través de la web tiene
derecho a su código fuente. Se elige porque la detección de personas usa
modelos YOLO de Ultralytics, que están bajo AGPL-3.0.