Le pedimos a Gemini la inteligencia artificial de Google que nos explique cómo instalar y configurar zoneminder en linux
Explicanos detalladamente cómo instalar y configurar zoneminder en linux¡Claro! ZoneMinder es una robusta y completa solución de videovigilancia de código abierto para Linux. Permite monitorear cámaras IP, cámaras USB, cámaras analógicas (con hardware adicional) y ofrece grabación continua, detección de movimiento, alarmas, y una interfaz web para el control y visualización.
La instalación y configuración de ZoneMinder en Linux implica varios componentes: el servidor de base de datos (MariaDB/MySQL), el servidor web (Apache), PHP y el propio ZoneMinder.
Esta guía se centrará en las distribuciones más comunes de Linux (Ubuntu/Debian y CentOS/RHEL/Fedora).
Consideraciones Previas:
Hardware: Un servidor dedicado o una máquina potente. La cantidad de RAM, CPU y espacio en disco dependerá del número de cámaras, la resolución, los FPS y el método de grabación (continuo vs. detección de movimiento).
Almacenamiento: Asegúrate de tener suficiente espacio en disco para almacenar las grabaciones de video.
Dirección IP : Es altamente recomendable que tu servidor ZoneMinder tenga una dirección IP estática en tu red.
Privilegios: Necesitarás privilegios de sudo para la instalación y configuración.
Paso 1: Actualizar el Sistema e Instalar Dependencias Básicas
Es crucial tener el sistema actualizado antes de instalar nuevos paquetes.
Para Ubuntu/Debian:
Bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential curl wget git
Para CentOS/RHEL/Fedora:
Bash
sudo dnf update -y
sudo dnf install -y @development-tools curl wget git
Paso 2: Instalar y Configurar el Servidor de Base de Datos (MariaDB/MySQL)
ZoneMinder necesita una base de datos para almacenar su configuración, eventos y otros datos. MariaDB es un reemplazo popular de MySQL.
Para Ubuntu/Debian:
Bash
sudo apt install -y mariadb-server mariadb-client
Para CentOS/RHEL/Fedora:
Bash
sudo dnf install -y mariadb-server mariadb
sudo systemctl enable --now mariadb # Habilitar e iniciar el servicio
Configurar la Seguridad de la Base de Datos
Después de la instalación, es vital asegurar tu servidor de base de datos.
Bash
sudo mysql_secure_installation
Sigue las indicaciones:
Si te pide una contraseña de root actual, presiona Enter (ya que no hay una por defecto).
Set root password? [Y/n]: Escribe Y y establece una contraseña fuerte para el usuario root de la base de datos.
Remove anonymous users? [Y/n]: Escribe Y.
Disallow root login remotely? [Y/n]: Escribe Y (muy recomendable por seguridad).
Remove test database and access to it? [Y/n]: Escribe Y.
Reload privilege tables now? [Y/n]: Escribe Y.
Crear la Base de Datos y el Usuario para ZoneMinder
Ahora crea la base de datos zm y un usuario zmuser con permisos para acceder a ella. ¡Cambia 'zmpass' por una contraseña fuerte y única!
Bash
sudo mysql -u root -p
Ingresa la contraseña de root de la base de datos que acabas de establecer. Luego, ejecuta los siguientes comandos SQL:
SQL
CREATE DATABASE zm;
CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';
GRANT ALL PRIVILEGES ON zm.* TO 'zmuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Paso 3: Instalar y Configurar el Servidor Web (Apache) y PHP
ZoneMinder proporciona una interfaz web para su gestión. Apache es el servidor web recomendado.
Para Ubuntu/Debian:
Bash
sudo apt install -y apache2 php libapache2-mod-php php-mysql php-gd php-curl php-json php-mbstring php-xml php-zip php-common php-cli ffmpeg
Habilita los módulos de Apache necesarios:
Bash
sudo a2enmod cgi rewrite expires
sudo systemctl restart apache2
Para CentOS/RHEL/Fedora:
Bash
sudo dnf install -y httpd php php-mysqlnd php-gd php-curl php-json php-mbstring php-xml php-zip ffmpeg
sudo systemctl enable --now httpd # Habilitar e iniciar el servicio
Configurar PHP
Ajusta la configuración de PHP para ZoneMinder, aumentando los límites de memoria y carga de archivos, y configurando la zona horaria.
Edita php.ini:
Ubuntu/Debian: sudo nano /etc/php/<versión_php>
CentOS/RHEL/Fedora: sudo nano /etc/php.ini
Modifica las siguientes líneas:
memory_limit = 256M (o más, dependiendo de tus necesidades)
upload_max_filesize = 128M
post_max_size = 128M
date.timezone = America/Sao_Paulo (o tu zona horaria. Busca una lista en la documentación de PHP si no estás seguro).
Guarda los cambios y reinicia Apache
Ubuntu/Debian: sudo systemctl restart apache2
CentOS/RHEL/Fedora: sudo systemctl restart httpd
Paso 4: Instalar ZoneMinder
Para Ubuntu/Debian (Recomendado usar el PPA para versiones más recientes):
Bash
sudo add-apt-repository ppa:iconnor/zoneminder-release
sudo apt update
sudo apt install -y zoneminder
Durante la instalación, es posible que se te pregunte si quieres configurar la base de datos de ZoneMinder. Si ya la creaste manualmente en el Paso 2, selecciona No o No configurar automáticamente. Si seleccionas Sí, asegúrate de proporcionar las credenciales correctas que creaste (usuario zmuser, contraseña zmpass).
Para CentOS/RHEL/Fedora:
ZoneMinder suele estar en los repositorios estándar o en EPEL (Extra Packages for Enterprise Linux).
Bash
# Si aún no tienes EPEL
sudo dnf install -y epel-release
sudo dnf install -y zoneminder
Paso 5: Configuración Post-Instalación de ZoneMinder
Después de instalar el paquete de ZoneMinder, quedan algunos pasos cruciales para que funcione correctamente.
Configurar la Base de Datos de ZoneMinder
El paquete de ZoneMinder debe poblar la base de datos zm con sus tablas y datos iniciales. Si no lo hizo automáticamente durante la instalación (o si omitiste la configuración automática), necesitas hacerlo manualmente:
Bash
# Asegúrate de que el script de actualización de ZM se ejecute
sudo zmupdate.pl -f
# O, si zmupdate.pl falla o la base de datos está vacía, importa el esquema manualmente:
sudo mysql -u zmuser -p zm < /usr/share/zoneminder/db/zm_create.sql
Ingresa la contraseña para zmuser cuando se te solicite.
Configurar ZoneMinder para Usar tu Base de Datos
Edita el archivo de configuración principal de ZoneMinder para que apunte a la base de datos que creaste.
Bash
sudo nano /etc/zm/zm.conf
Asegúrate de que estas líneas coincidan con tu configuración de base de datos (zmuser, zmpass y zm son ejemplos, usa los tuyos):
ZM_DB_HOST=localhost
ZM_DB_NAME=zm
ZM_DB_USER=zmuser
ZM_DB_PASS=zmpass
Guarda y cierra el archivo.
Configurar Permisos:
El usuario del servidor web (www-data en Ubuntu/Debian, apache en CentOS/RHEL) necesita permisos para acceder a los dispositivos de video y a los directorios de ZoneMinder.
Añadir usuario web al grupo video:
Ubuntu/Debian:
Bash
sudo usermod -aG video www-data
CentOS/RHEL/Fedora:
Bash
sudo usermod -aG video apache
Configurar permisos para el directorio de ZM: La mayoría de los paquetes lo configuran correctamente, pero verifica que el usuario del servidor web tenga permisos para el directorio web de ZoneMinder y el directorio de eventos/imágenes.
Ubuntu/Debian:
Bash
sudo chown -R www-data:www-data /usr/share/zoneminder/www
sudo chown -R www-data:www-data /var/cache/zoneminder/events
sudo chown -R www-data:www-data /var/cache/zoneminder/images
sudo chmod 740 /etc/zm/zm.conf
sudo chown root:www-data /etc/zm/zm.conf
CentOS/RHEL/Fedora:
Bash
sudo chown -R apache:apache /usr/share/zoneminder/www
sudo chown -R apache:apache /var/cache/zoneminder/events
sudo chown -R apache:apache /var/cache/zoneminder/images
sudo chmod 740 /etc/zm/zm.conf
sudo chown root:apache /etc/zm/zm.conf
Contexto SELinux (Solo CentOS/RHEL/Fedora): Si tienes SELinux en modo enforcing, puede bloquear ZoneMinder. Para fines de prueba, puedes ponerlo en modo permissive temporalmente o configurar las reglas de SELinux correctamente.
Bash
# Modo permisivo temporal (no persistente al reiniciar)
sudo setenforce 0
# Para que sea persistente (edita el archivo y reinicia):
sudo nano /etc/selinux/config # Cambia SELINUX=enforcing a SELINUX=permissive
Para una configuración persistente y segura, se recomienda instalar las políticas de SELinux para ZoneMinder si están disponibles en tu distro, o aprender a crear tus propias reglas.
Configurar Apache para ZoneMinder
El paquete de ZoneMinder suele incluir un archivo de configuración de Apache.
Ubuntu/Debian:
El paquete ya habilita la configuración de ZoneMinder para Apache. Puedes verificarlo:
Bash
ls -l /etc/apache2/conf-enabled/zoneminder.conf
Si no existe, el archivo está en /etc/apache2/conf-available/zoneminder.conf y puedes habilitarlo con:
Bash
sudo a2enconf zoneminder
CentOS/RHEL/Fedora:
El archivo de configuración de Apache de ZoneMinder suele estar en /etc/httpd/conf.d/zoneminder.conf. Abre este archivo para verificar su contenido y asegúrate de que el Alias para /zm apunte al directorio web correcto de ZoneMinder (/usr/share/zoneminder/www).
Reinicia Apache
Ubuntu/Debian: sudo systemctl restart apache2
CentOS/RHEL/Fedora: sudo systemctl restart httpd
Iniciar el Servicio ZoneMinder:
Bash
sudo systemctl start zoneminder
sudo systemctl enable zoneminder # Para que inicie con el sistema
Paso 6: Primer Acceso a la Interfaz Web y Configuración Básica
Acceder a la Interfaz Web:
Abre tu navegador web y ve a:
http://your_server_ip/zm o http://localhost/zm (si estás en el mismo servidor).
Deberías ver la consola de ZoneMinder.
Primer Login y Creación de Usuario Administrador (Importante):
En las versiones más recientes de ZoneMinder (generalmente 1.36+), el primer acceso te guiará para crear un usuario administrador. Sigue las instrucciones.
En versiones anteriores, el usuario y la contraseña por defecto suelen estar vacíos. Simplemente haz clic en "Login" sin introducir nada.
Inmediatamente después de iniciar sesión, crea un usuario administrador con una contraseña fuerte y elimina el usuario por defecto o las credenciales vacías.
Ve a Options (Opciones) -> Users (Usuarios).
Haz clic en "Add New User" (Añadir Nuevo Usuario).
Establece un Username, una Password fuerte, y selecciona Administrator en el rol. Guarda.
Cierra sesión y vuelve a iniciarla con tu nuevo usuario administrador.
Configurar la Zona Horaria del Sistema:
Es crucial para que las grabaciones tengan la marca de tiempo correcta.
En la interfaz web de ZoneMinder, ve a Options (Opciones) -> System (Sistema).
Busca la opción TIMEZONE y selecciona tu zona horaria correcta (ej., America/Sao_Paulo).
Haz clic en "Save" (Guardar) en la parte inferior.
Ajustar Opciones de Almacenamiento (Opcional pero recomendado):
Ve a Options (Opciones) -> Storage (Almacenamiento).
Aquí verás la ubicación por defecto de tus eventos (/var/cache/zoneminder/events). Asegúrate de que esta partición tenga suficiente espacio en disco.
Puedes añadir nuevas áreas de almacenamiento si tienes discos dedicados o particiones más grandes.
Paso 7: Añadir tu Primera Cámara (Monitor)
En la Consola de ZoneMinder:
Haz clic en el botón Add New Monitor (Añadir Nuevo Monitor) en la parte superior.
Configuración del Monitor:
General:
Name: Un nombre descriptivo para tu cámara (ej., "Cámara Puerta Principal").
Source Type: Selecciona el tipo de cámara.
Ffmpeg: Para la mayoría de las cámaras IP (RTSP, HTTP, RTMP).
Local: Para cámaras USB conectadas directamente al servidor.
Libvlc: Alternativa a Ffmpeg.
Remote: Para cámaras IP más antiguas (HTTP, JPEG).
cURL: Para capturar imágenes fijas vía HTTP.
V4L: Para cámaras analógicas con una tarjeta de captura.
Source (Fuente - Si elegiste Ffmpeg para IP Cam):
Source Path: Aquí va la URL de la transmisión de tu cámara IP. Ejemplos comunes:
rtsp://usuario:contraseña@IP_CAMARA:puerto/ruta_stream (ej., rtsp://admin:123456@192.168.1.100:554/stream1)
http://usuario:contraseña@IP_CAMARA:puerto/cgi-bin/stream.cgi
Consulta la documentación de tu cámara para la URL RTSP o HTTP correcta.
Remote Method: RTSP/HTTP (o HTTP si el stream es HTTP).
Shared Memory: Déjalo en 0.
Capture Width (Ancho de Captura) y Capture Height (Alto de Captura): Deben coincidir con la resolución del stream de tu cámara (ej., 1920x1080, 1280x720). Colours: 24 bit colour o 32 bit colour para la mayoría de las cámaras modernas.
General (Función del Monitor):
Function: Define cómo ZoneMinder procesará este monitor.
Modect: Detección de Movimiento (Recomendado para la mayoría de usos). Graba solo cuando se detecta movimiento.
Monitor: Solo para visualización en vivo, no graba.
Record: Graba continuamente.
Nodect: Visualización en vivo, pero los eventos se registran por otras entradas (ej., un detector de alarma externo).
Max FPS (Max. Fotogramas por Segundo): La velocidad de fotogramas deseada. No debe superar la que la cámara puede entregar.
Motion (Movimiento - Si elegiste Modect):
Aquí puedes ajustar la sensibilidad de la detección de movimiento.
Puedes definir "zonas" para ignorar áreas o enfocar la detección.
Guarda el monitor.
Verificar el Monitor:
Después de guardar, el monitor debería aparecer en la Consola. Debería mostrar un estado Running.
Haz clic en la imagen en vivo del monitor para ver la transmisión en tiempo real.
Solución de Problemas Frecuentes (Rápido)
Interfaz web no carga o da error:
Apache no está corriendo.
Error en la configuración de Apache para ZoneMinder (/etc/apache2/conf-enabled/zoneminder.conf o /etc/httpd/conf.d/zoneminder.conf).
Errores de sintaxis en php.ini.
Problemas de permisos para el directorio web de ZoneMinder.
No se ve la transmisión de la cámara (zmc o zmu muertos):
URL de la cámara incorrecta: Verifica la Source Path (URL RTSP/HTTP), usuario y contraseña de la cámara.
Resolución incorrecta: Capture Width/Height no coincide con la cámara.
Firewall: El firewall del servidor ZoneMinder está bloqueando la conexión saliente a la cámara IP.
Cámara no accesible: La cámara está apagada o no tiene conexión de red.
FFmpeg/Libvlc: Problemas con la instalación de los codecs o versiones incompatibles.
Logs del monitor: Haz clic en el nombre del monitor en la consola ZM y revisa sus logs específicos para ver el error exacto.
Detección de movimiento no funciona o es errática
Sensibilidad: Ajusta la sensibilidad de detección en la sección "Motion" del monitor.
Zonas: Define zonas de detección específicas o ignora áreas con mucho ruido (árboles, banderas).
Iluminación: Cambios drásticos de luz pueden activar falsos positivos.
No hay grabaciones o los eventos están incompletos
Espacio en Disco: El disco está lleno (df -h).
Permisos: El usuario del servidor web (www-data/apache) no tiene permisos de escritura en el directorio de eventos (/var/cache/zoneminder/events).
Función del monitor: Asegúrate de que el monitor esté configurado en Modect o Record.
Rendimiento lento:
Recursos del Servidor: CPU o RAM insuficientes para el número de cámaras y la carga de trabajo.
Cámaras: Demasiados FPS o resoluciones muy altas. Intenta reducir la calidad de los streams.
Almacenamiento: El disco duro es lento.
Recuerda que la comunidad de ZoneMinder es activa y su documentación oficial (zoneminder.com/documentation) es una excelente fuente de información para configuraciones avanzadas y solución de problemas específicos. ¡Mucha suerte con tu sistema de videovigilancia !