En esta entrada exploraremos la instalación, configuración e implementación de ZoneMinder el software libre líder en el mercado de seguridad y vídeo vigilancia el cual permite capturar, analizar, grabar y monitorizar cualquier cámara CCTV o IP. La misma ofrece una interfaz web mediante la cual se realizan todas las funciones y operaciones soportadas. Su frontend fue escrito en PHP para la interfaz web y su backend esta escrito en Perl.
Zoneminder cuenta con funcionalidades como: Gestión de Eventos, Detección Avanzada de Movimiento, Alarmas y Gestión de Zonas.
ZoneMinder funciona gracias a las bondades del software libre, funciona en entornos basados en Linux, usa los servicios web de preferencia Apache y como gestor de base de datos MySQL aunque perfectamente puede funcionar con MariaDB. A su vez ZoneMinder es un servicio que se encarga de la gestión y operación sobre las cámaras conectadas a la solución, por lo cual de igual forma que Apache y MySQL es un demonio que puede ser iniciado, detenido y reiniciado cuando haga falta.
Instalar y Configurar ZoneMinder en Debian 8 Jessie
Añadiremos los repositorios de Debian Backports para poder contar con la versión mas reciente de ZoneMinder a disposición de Instalar.
Agregaremos en:
/etc/apt/sources.list
el repositorio:
deb http://ftp.debian.org/debian/ jessie-backports main
Actualizaremos nuestra lista de repositorios:
#aptitude update
#aptitude install apache2 php5 mysql-server php-pear php5-mysql php5-gd
En este punto la instalación nos solicitara colocar una contraseña para el usuario root del MySQL.
Instalación de ZoneMinder en Debian:
#aptitude install zoneminder
Actualmente instalara la versión 1.29 de ZoneMinder la cual es la versión estable mas reciente.
Importaremos la estructura inicial de base de datos MySQL de ZoneMinder
#mysql -u root -p < /usr/share/zoneminder/db/zm_create.sql
Solicitara ingresar la contraseña de ROOT del MySQL que colocamos previamente
Creamos y asignamos permisos al usuario zmuser de MySQL
#mysql -u root -p -e «grant select,insert,update,delete,create on zm.* to ‘zmuser’@localhost identified by ‘zmpass’;»
Solicitara ingresar la contraseña de ROOT del MySQL
Estableceremos los permisos correctos al archivo de configuración del ZoneMinder
#chmod 740 /etc/zm/zm.conf
#chown root:www-data /etc/zm/zm.conf
#chown -R www-data:www-data /usr/share/zoneminder/
En caso de requerir acceso a dispositivos locales de vídeo agregar el usuario www-data al grupo de video (util si se quiere monitorear la webcam de una laptop o otros dispositivos conectados directamente al equipo)
#adduser www-data video
Habilitamos e iniciamos el servicio de ZoneMinder:
#systemctl enable zoneminder.service
#systemctl start zoneminder.service
Validamos que el status del servicio ZoneMinder este activo:
#systemctl status zoneminder.service
● zoneminder.service – ZoneMinder CCTV recording and surveillance system
Loaded: loaded (/lib/systemd/system/zoneminder.service; enabled)
Active: active (running) since jue 2016-03-03 10:33:06 VET; 55s ago
Process: 11434 ExecStart=/usr/bin/zmpkg.pl start (code=exited, status=0/SUCCESS)
Main PID: 11472 (zmdc.pl)
CGroup: /system.slice/zoneminder.service
‣ 11472 /usr/bin/perl -wT /usr/bin/zmdc.pl startup
Habilitamos el modulo CGI y REWRITE así como la configuración de ZoneMinder para el Apache.
#a2enmod cgi
#a2enmod rewrite
#a2enconf zoneminder
Habilitamos el API de zoneminder agregando lo siguiente al final del archivo:
/etc/apache2/conf-enabled/zoneminder.conf
<Directory /usr/share/zoneminder/www/api>
AllowOverride All
</Directory>
Este punto es útil sobre todo si quisiera luego usar el cliente multiplataforma (iOS, Android, Windows Desktop, Mac Desktop, Linux Desktop) de Zoneminder zmNinja.
Reiniciamos el servicio de Apache
#service apache2 restart
A este punto ya tenemos ZoneMinder instalado y ejecutándose. Se puede evidenciar accediendo al url: localhost/zm o el ip donde fue realizada la instalación 192.168.1.50/zm por ejemplo
Si les sale el siguiente error:
ZoneMinder is not installed properly: php’s date.timezone is not set to a valid timezone
Agregaremos en el archivo /etc/php5/apache2/php.ini
date.timezone = America/Caracas
Ó la zona horaria que corresponda a tu país.
Reiniciamos el servicio de Apache nuevamente para que tome los cambios aplicados.
#service apache2 restart
A este punto debemos poder visualizar la interfaz web de ZoneMinder
Configuración de ZoneMinder en Debian 8 Jessie
Cambozola es un plugin de Java que decodifica strems JPEG streams. Esto es necesario si quisiera visualizar ó monitorear ZoneMinder en el navegador Internet Explorer.
Para instalar Camboza realizaremos los siguientes pasos:
#cd /usr/src && wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
#tar -xzvf cambozola-latest.tar.gz
#cp cambozola-0.936/dist/cambozola.jar /usr/share/zoneminder/www
Configurar la gestión de usuarios:
Ubicar en la interfaz web en las opciones de configuración la opción System y habilitar la autenticación de usuarios:
OPT_USE_AUTH Authenticate user logins to ZoneMinder
Colocamos una cadena de texto la cual sera la llave secreta sobre la cual se generaran en lo sucesivo las contraseñas de los usuarios:
AUTH_HASH_SECRET: Secret for encoding hashed authentication information
Puede usar una cadena de texto al estilo: 3l-h4sh-d3-z0n3m1nd3r
En esta misma interfaz cambiamos el idioma y seleccionamos es_es.
Guardamos los cambios.
Nos dirigimos a la pestaña de usuarios (users) y realizamos el cambio de clave del usuario admin de zoneminder y agregamos usuarios iniciales.
Por defecto el usuario de autenticación es admin y su clave es admin
PD: Donde dice monitores restringidos seleccionar aquellos monitores o cámaras a las cuales tendrá acceso dicho usuario.
Reiniciamos el servicio de ZoneMinder:
systemctl restart zoneminder.service
Cambiar la apariencia o theme ir a Opciones → Visualizar → ZM_CSS → Flat
Agregar Monitores (Cámaras) a Zoneminder
Pulsaremos en el botón Añadir nuevo monitor con lo se abrirá una ventana web donde se colocaran los parámetros de acceso y configuración a las cámaras que deseamos.
La configuración óptima para las cámaras Bosh Dinion NBC-455-P es la siguiente:
Cambiar el IP según sea el caso de la cámara a conectar al ZoneMinder. service e infoseg son el usuario y clave por defecto de este modelo de cámara ip.
Archivos y Rutas de Zoneminder
Entre otros valores destacamos que se encuentran los parámetros usados para la cadena de conexión de la base de datos en el archivo de configuración principal:
/etc/zm/zm.conf
#whereis zoneminder
zoneminder: /usr/lib/zoneminder /usr/share/zoneminder /usr/share/man/man1/zoneminder.1.gz
# ls -la /usr/share/zoneminder/www/
total 120
drwxr-xr-x 12 www-data www-data 4096 ago 10 00:25 .
drwxr-xr-x 4 www-data www-data 4096 ago 10 00:09 ..
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 ajax
drwxr-xr-x 4 www-data www-data 4096 ago 10 00:09 api
-rw-r–r– 1 root root 65492 ago 10 00:25 cambozola.jar
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 css
lrwxrwxrwx 1 www-data www-data 28 feb 20 22:09 events -> /var/cache/zoneminder/events
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 graphics
lrwxrwxrwx 1 www-data www-data 28 feb 20 22:09 images -> /var/cache/zoneminder/images
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 includes
-rw-r–r– 1 www-data www-data 6435 feb 3 2016 index.php
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 js
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 lang
drwxr-xr-x 5 www-data www-data 4096 ago 10 00:09 skins
lrwxrwxrwx 1 www-data www-data 26 feb 20 22:09 temp -> /var/cache/zoneminder/temp
drwxr-xr-x 3 www-data www-data 4096 ago 10 00:09 tools
drwxr-xr-x 2 www-data www-data 4096 ago 10 00:09 views
Los eventos (imagenes capturadas por las camaras) se almacenan en: /var/cache/zoneminder/events
Base de Datos de ZoneMinder
La base de datos de ZoneMinder usa MySQL como gestor de base de datos y esta constituida por 18 tablas.
Para acceder a mysql:
#mysql -u root -p
Solicitara ingresar la contraseña de ROOT del MySQL
luego para usar nuestra base de datos:
mysql>use zm;
Con lo cual ya estaremos dentro de la base de datos mysql de nuestro ZoneMinder.
Diagrama Entidad Relación de la Base de Datos de ZoneMinder
La tabla Logs tiende a almacenar una gran cantidad de datos lo cual incrementa considerablemente el peso (size) de la base de datos. Se podrá verificar el tamaño de cada tabla de la base de datos zm con la siguiente sentencia:
mysql> SELECT TABLE_NAME, table_rows, data_length, index_length, round(((data_length + index_length) / 1024 / 1024),2) ‘Size in MB’ FROM information_schema.TABLES WHERE table_schema = ‘zm’;
De ser necesario se podrá eliminar registros en dicha tabla o realizar un truncate sobre la misma. En las opciones de registro de las opciones de ZoneMinder en su interfaz web se pueden ajustar los niveles de registro (logs) a almacenar.
Referencias:
http://zoneminder.readthedocs.io/en/stable/installationguide/debian.html#easy-way-debian-jessie
mysql -u root -p -e “grant select,insert,update,delete,create on zm.* to ‘zmuser’@localhost identified by ‘zmpass’;”
Introduzco esto y me tira error :
bash: ”: no se encontró la orden
Perdonad mi ignorancia algo tendre mal pero me tira esto.
Hola me parece que no se te están copiando las comillas dobles correctamente…
Saludos
Intenté usar Zoneminder y no funcionó bien. El rendimiento carecía en gran medida con las cámaras h.264. shinobicctv es una alternativa a zoneminder y parece funcionar mucho mejor. Donde zoneminder estaba usando 90% shinobi usa 10%. Aunque creo que Zoneminder es mejor con cámaras de tipo jpeg y mjpeg.
Hola no conocía shinobicctv https://shinobi.video/ luce muy bien saludos
Hola,
La verdad es que que ya me volví loco, pero conseguí que me saliera el zoneminder en el navegador. Ahora me falta configurar bien la cámara.
Mi pega es, como siempre, los sobre entendidos en la explicación, pero que como yo no los sé me quedo en la duda.
A la hora de poner en la ficha origen el Nombre del host remoto;
¿Es la ip en donde yo estoy viendo la consola de zoneminder (en mi caso el local host)?
¿Es la ip de la red interna (la que me pone al principio cuando ejecuto ifconfig)
¿Es otra cosa?
La contraseña y usuario:
¿Se refiere a los que he configurado en la consola de zoneminder u otra cosa?
Gracias por aclararme si puedes.
Hola buenas tal vez sea una tonteria pero no doy con ello,tengo 8 camaras conectadas y cuando le doy a montage solo aparecen 6 ,de vez een cuando van cambiando las 6 que salen pero nunca mas de seis ….tengo mal alguna configuracion en las opciones y no lo veo?
Sin embargo si que en montagge review se ven todas ,tengo debian 10 yy zoneminder 1.32.10 alguna idea?
Si hay una configuración la cual no recuerdo, si la tienes la comentas porfa.