15 de noviembre de 2010

Acceder a equipos con IP públicas dinámicas usando DNS Dinámico


NOTA: En México, sólo el ISP Telmex (que yo sepa) ofrece direcciones IP públicas dinámicas a sus usuarios por default. Los demás ISP, en su mayoría cableras (Megacable, Cablevisión, etc), proporcionan por default direcciones IPs privadas no pudiéndose hacer lo que a continuación se explica.

En ocasiones necesitamos acceder desde Internet a nuestro equipo en casa. Aunque podemos hacerlo usando la dirección IP pública que nos brinda nuestro ISP, ésta al ser dinámica puede cambiar en cualquier momento dejándonos incomunicados. Hay una solución a esto y se llama DNS Dinámico.

DynDNS.com permite asociar una dirección IP dinámica a uno o varios subdominios de una gran lista de nombres de dominios disponibles, entre ellos dyndns.org. Pudiendo acceder desde Internet a nuestro servidor casero usando el subdominio minombre.dyndns.org. Para ello, se requiere instalar un cliente DynDNS en nuestro servidor que se encargue de informar y actualizar la configuración en DynDNS.com cuando la IP pública cambie.

Primeramente hay que registrarse en DynDNS.com. Una vez registrado, recibiremos un correo de confirmación, nos logueamos y dirigimos a "My Account", luego en "My services", en "Host Services" se elige "Add Hostname" y se sigue el asistente.

Después hay que configurar el router de Telmex redirigiendo los puertos o servicios deseados a nuestro servidor. Esto se hace desde la "Configuración del bloqueo de intrusos", se elige el equipo al que se desea redirigir el puerto y se agrega el servicio deseado (Web, SSH, etc). Si no viene el servicio en la lista, se puede agregar uno personalizado dando clic en "Agregar una nueva aplicación definida por el usuario".

Luego, en nuestro servidor, hay que instalar ddclient que es un cliente de DynDNS:
# aptitude install ddclient

Durante la instalación nos preguntará el proveedor del Servicio DNS Dinámico, eligiendo www.dyndns.com, colocando el usuario y la contraseña de DynDNS. Luego se responde que Si a la pregunta sobre si deseamos que se obtenga la dirección IP mediante checkip.dyndns.com. Luego se elige la opción De una lista como el Métodos de selección para nombres actualizados.

Si durante el proceso marca algún error producto de algún error en contraseña o usuario de DynDNS, puede ejecutarse el siguiente comando para reconfigurar ddclient.
# dpkg-reconfigure ddclient

También puede configurarse manualmente mediante el archivo /etc/ddclient.conf:
protocol=dyndns2
use=web, web=checkip.dyndns.com, web-skip='IP Address'
server=members.dyndns.org
login=usuariodeDynDNS
password='passwd'


Si se modifica manualmente hay que reiniciar el servicio Web y el servicio ddclient:
/etc/init.d/apache2
/etc/init.d/ddclient


El archivo /etc/default/ddclient también tiene opciones de configuración:
run_ipup="false"
run_daemon="true"
daemon_interval="1800"


Otra opción de DNS Dinámico es usar No-IP.com y el cliente noip2 que está en los repositorios de debian.

14 de noviembre de 2010

Usar Gmail para enviar correos mediante exim


En el siguiente articulo se explicará como usar una cuenta de correo de Gmail en un servidor para enviar correos al exterior (cualquier dirección de correo) y a los usuarios del sistema. La ventaja es que no se requiere comprar un dominio ni configurar el servicio de correo como MTA. Para ello se usará exim4.

Primeramente, se instala exim4:
# aptitude install exim4 exim4-config mailx

Para configurar exim adecuadamente se ejecuta la siguiente orden:
# dpkg-reconfigure exim4-config

Se inicia un asistente de configuración, en el que se preguntarán algunos datos,respondiendo lo siguiente:
Tipo de configuración general del correo: El correo se envía mediante un «smarthost»; se recibe a través de SMTP o fetchmail
Nombre del sistema de correo: localhost
Direcciones IP en las que recibir conexiones SMTP entrantes: 127.0.0.1
Otros destinos para los que se acepta el correo: Se deja en blanco
Máquinas para las cuales reenviar correo: Se deja en blanco
Dirección IP o nombre de equipo para el «smarthost» saliente: smtp.gmail.com::587
¿Desea ocultar el nombre de correo local en los mensajes salientes?: No
¿Limitar el número de consultas de DNS (marcación bajo demanda)?: No
Mecanismo de entrega para el correo local: formato mbox en «/var/mail»
¿Dividir la configuración en pequeños ficheros?: No

La información proporcionada en el asistente se almacena en "/etc/exim4/update-exim4.conf.conf" y en "/var/lib/exim4/config.autogenerated".

Luego hay que configurar la cuenta de usuario de gmail que se usará para el envío de correos. se edita el archivo /etc/exim4/passwd.client y se agregan las siguientes lineas modificando el nombre de usuario y el password de la cuenta de Gmail que se desea usar:
gmail-smtp.l.google.com:NombreDeCuenta@gmail.com:Password
*.google.com:NombreDeCuenta@gmail.com:Password
smtp.gmail.com:NombreDeCuenta@gmail.com:Password


Hay que verificar que el archivo /etc/exim4/passwd.client pertenezca al usuario root y grupo Debian-exim y que sólo pueda ser leido por ellos (por default, así está). En caso contrario hay que ejecutar:
# chown root:Debian-exim /etc/exim4/passwd.client
# chmod 640 /etc/exim4/passwd.client


Reiniciar el servicio de correo para que se apliquen los cambios:
# /etc/init.d/exim4 restart

Para ver o monitorizar el funcionamiento de exim (pudiendo apreciar cuando se envían mails o problemas posibles problemas), se ejecuta:
# tail -f /var/log/exim4/mainlog

Para probar que funciona se puede enviar un mail desde la consola
echo 'Contenido del mail de Pruebas' | mail usuarioDestinatario@unDominio.com -s "Asunto del correo"

También se puede enviar un correo que indique el espacio en disco duro disponible:
df -h | mail usuarioDestinatario@unDominio.com -s "Espacio en el disco"

En los correos enviados aparecerá como FROM el nombre del usuario del sistema que envío dicho correo. Es decir, si se envía un mail con el usuario root, el campo FROM del mensaje de correo dirá: root (NombreDeCuenta@gmail.com)

Hasta el momento se puede enviar correos a cualquier cuenta de correo externa (Gmail.com, hotmail.com, cualquierDominio.com, etc) y a los usuarios locales. Los usuarios locales podrán recibir sus mensajes de manera normal usando el comando mail, mutt o cualquier cliente de correo.

Para que los correos de los usuarios locales del Sistema se envíen a una cuenta de correo externa hay que editar el archivo /etc/aliases y crear un alias a los usuarios locales que se deseen enviar a una cuenta externa. Quedando algo similar a:
root: usuarioDelSistema
usuarioDelSistema: CualquierCuentaDeUsuario@gmail.com


Lo anterior indica que los correos que se envíen a usuarioDelSistema los recibirá CualquierCuentaDeUsuario@gmail.com.

Se reinicia el servicio de correo para que se apliquen los cambios:
# /etc/init.d/exim4 restart

En algunas páginas mencionan que se debe modificar el archivo "/etc/email-addresses", pero no es necesario.

FUENTE:
http://wiki.debian.org/GmailAndExim4
http://mail.google.com/support/bin/answer.py?answer=78799

13 de noviembre de 2010

Espacio en disco duro reservado para root


Los sistemas de archivos ext3 y ext4 por default reservan el 5% del espacio en disco de la partición para el usuario root reduciendo el espacio en disco que se puede utilizar. Esto es muy útil en las particiones raiz (/), /var y /root pues si en algún momento la partición se llena, gracias a ese espacio que se reserva el usuario root puede acceder al sistema liberar espacio y solucionar el inconveniente. Sin embargo, las particiones cuyo destino sea almacenar datos (como /home) no tiene mucho sentido desperdiciar ese %5 de espacio. Si sólo se tiene una sola partición para todo el sistema es recomendable dejar dicho espacio de reserva.

El comando tune2fs sirve para visualizar y modificar el espacio reservado para root.

Con el siguiente comando se puede ver la información detallada sobre el espacio asignado para los procesos que se ejecuten como root:
# tune2fs -l /dev/sda1

Mostrará varios datos, entre ellos:
Block count: 48584560
Reserved block count: 2429228


Como se puede ver el %5 de la partición esta reservado. También mostrará la fecha en que se creó dicho sistema de archivos (Filesystem created)

Con el siguiente comando se modifica a %1 el porcentaje de espacio reservado para root de una partición ext3/ext4:
# tune2fs -m 1 /dev/sda1

Si no se desea asignar un porcentaje de espacio reservado al formatear una partición con Ext3/Ext4 se puede ejecutar el siguiente comando:
# mkfs.ext3 -m 0 /dev/sda1

También se puede modificar el tiempo en que debe es analizado automáticamente el sistema de archivos (Por default cada 30 montajes o 180 días, lo que suceda primero) para prevenir fallos. Con el siguiente comando se modifica a 50 montajes máximos:
# tune2fs -c 50 /dev/sda1

Con el parámetro -i se modifican los días máximo.

Particiones en GNU/Linux


GNU/Linux puede instalarse en una sola partición, sin embargo en ocasiones es recomendable usar particiones diferentes para determinados directorios. Por ejemplo puede separarse el area de intercambio (swap), /boot, /home, /mnt, /opt, /root, /tmp, /usr, /var, etc en particiones diferentes.

Si se desea particionar, el tamaño a asignar a cada partición varia dependiendo del uso que se le dará. A continuación se muestra las particiones más comunes en que se puede dividir un disco duro y el espacio recomendado para dichas particiones:
/ Depende del numero de particiones en que se particionará el disco duro y de la cantidad de aplicaciones que se instalaran. Para un servidor con /var y /home separadas con 10GB es más que suficiente, incluso con 5GB basta y sobra.
/boot 100MB
/home Depende del uso que se le dará al equipo. Si los usuarios almacenaran mucha información se recomienda un valor grande.
/var Depende del uso que se le dará al equipo. Si es para un server se recomienda un valor grande, de lo contrario unos 5 o 20GB es suficiente
/usr Depende de la cantidad de paquetes que se vayan a instalar, pues este directorio contiene todos los programas para usuarios (/usr/bin), bibliotecas (/usr/lib), documentación (/usr/share/doc), etc.

Para un equipo de escritorio no hay mucha utilidad crear muchas particiones. Con /, /home y la de intercambio es suficiente. Para un servidor es muy recomendable separar al menos /home, /var y /boot de /.

11 de noviembre de 2010

Modificar Zona horaria de un equipo


Introducción

Para Sinaloa, México el tiempo de la montaña o zona Pacífico es el huso horario oficial correspondiente en México al UTC -7, es decir, siete horas menos que en el tiempo universal coordinado o UTC, también conocido como horario GMT.

Durante el horario de verano, este huso horario cambia al de la Zona Centro (del UTC -7 al UTC -6).


Modificación de la zona horaria

Si por alguna razón durante el proceso de instalación se eligió una zona horaria errónea se puede corregir editando el archivo "/etc/timezone" que es donde se almacena la zona horaria. O lo más recomendable ejecutando la siguiente orden:
# dpkg-reconfigure tzdata

Si deseamos que la hora sea exacta, se puede sincronizar la hora con un servidor:
# ntpdate -s pool.ntp.org
o
# ntpdate-debian

9 de noviembre de 2010

Software para monitorizar y verificar estado de discos duros


Verificar estado del disco duro

Hay varias herramientas que permiten verificar el estado en que se encuentra un disco. Una de ellas es el comando smartctl. Smartctl se encuentra en el paquete smartmontools y está en los repositorios de Debian por lo que su instalación es sencilla:
# aptitude install smartmontools

Para una mejor lectura se puede ejecutar smartctl de la siguiente forma para revisar el estado de un disco duro (en este caso sda):
# smartctl -a /dev/sda | less

Mostrará información del disco duro como marca, modelo, No de Serie, etc. También mostrará estadísticas de uso y errores que se hayan presentado.

SMART overall-health self-assessment test result indica el estado del disco duro. Si dice PASSED significa que el disco duro está en buen estado.
Power_Cycle_Count indica el número de veces que ha arrancado el disco duro
Power_On_Half_Minutes indica el tiempo total que ha trabajado el disco duro
Reallocated_Sector_Ct indica los sectores dañados

Más información en su manual:
# man smartctl


Reparar sectores dañados

Si se encuentran algunos sectores dañados, se pueden reparar con el comando badblocks:
# badblocks -s -v -n -f /dev/sdb1

Los parámetros:
-s significa que nos muestra el proceso de escaneo del disco, mostrandonos los sectores ya checados.
-v modo verbose
-n nos pone en modo no destructivo, esto significa que si se recuperaran los sectores dañados la información en el disco duro no sera dañada o eliminada.
-f repara los sectores dañados.

Una alternativa a badblocks es HDD Regenerator que aunque no es Software libre funciona bien.

Monitorizar estado del disco duro

Hay otra herramienta llamada smart-notifier que manda un mensaje cuando el disco duro este propenso a fallar. Incluso cuando el disco duro cambia de temperatura y se calienta más de lo normal manda un mensaje en pantalla. Su instalación es sencilla como todos los paquetes en Debian:
# aptitude install smart-notifier

Una vez instalado, se ejecutará cuando se inicie sesión en el entorno gráfico. Para verificar que se ejecutará en Gnome hay que ir al menú Sistema, Preferencias, Sesiones. En la pestaña Programas al inicio se encontrará la lista de programas y entre ellas "Smart Notifier". En caso de que no se encuentre se agrega y en el comando se coloca "smart-notifier".

Ahora sólo hay que verificar que el demonio smartmontools se ejecute en el arranque del sistema (puede hacerse fácilmente con el comando rcconf).


19 de agosto de 2010

ZoneMinder: Instalación y configuración



Introducción

ZoneMinder es un conjunto de aplicaciones de video vigilancia que permiten grabar y monitorizar cámaras IP, CCTV y Webcam conectadas a un equipo con GNU/Linux con soporte Video For Linux (V4L). Está formado de varios componentes y scripts escritos en Perl y PHP (para la interfaz web). Requiere, principalmente, del servidor de base de datos MySQL, servidor Web apache y ffmpeg.


Instalación

ZoneMinder no se encuentra en los repositorios de lenny, pero si se encuentra en squeeze desde donde pueden instalarse.

Primeramente, se deben instalar los servicios necesarios y algunos otros paquetes para una mejor administración:
# aptitude install apt-listbugs apt-file gpm vim less rcconf openssh-server
# aptitude install apache2 libapache2-mod-php5 libapache2-mod-auth-mysql php5 php5-mysql mysql-server mysql-client


Luego se instala ffmpeg:
# aptitude install ffmpeg

A continuación se instala ZoneMinder:
# aptitude install zoneminder

Esto instalará ZoneMinder y todas sus dependencias y creará la base de datos zm en MySQL.

Configuración

Agregar el usuario www-data al grupo video:
# gpasswd -a www-data video

Agregar un alias en apache para poder acceder a ZoneMinder desde el servidor web y se reinicia o se recarga la configuración de apache para que los cambios tengan efecto:
# ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
# /etc/init.d/apache2 restart (o apache2ctl restart)


Se configuran los permisos adecuados a /usr/bin/zmfix para que pueda ser leído y ejecutado por todos los usuarios:
# chmod 4755 /usr/bin/zmfix
# zmfix -a


Se asigna a www-data como el propietario del directorio temporal de ZoneMinder:
# chown www-data.www-data /usr/share/zoneminder/temp

Editar el archivo "/etc/sysctl.conf" y agregar las siguientes lineas (para 128MB de memoria compartida)
kernel.shmall = 134217728
kernel.shmmax = 134217728


Se descarga, descomprime y se copia cambozola al directorio "/usr/share/zoneminder/" para ver el streeming de las cámaras:
$ wget http://www.charliemouse.com:8080/code/cambozola/cambozola-latest.tar.gz
$ tar -xvzf cambozola-latest.tar.gz
# cp cambozola-0.76/dist/cambozola.jar /usr/share/zoneminder/


Luego, se habilita el cliente de streaming cambozola desde las opciones de la consola de administración de ZoneMinder (Options / Images / OPT_CAMBOZOLA).

ZoneMinder usa por default un usuario y contraseña débil para las query con la base de datos. Por ello, se recomienda cambiar el usuario y contraseña que usa ZoneMinder. Esto se hace editando el archivo "/etc/zm/zm.conf" y modificando las directivas ZM_DB_USER y ZM_DB_PASS:
# nano /etc/zm/zm.conf
ZM_DB_USER=nuevouser
ZM_DB_PASS=nuevopasswd


Una vez modificado se crea el usuario con su password en MySQL:
$ mysql -uroot -p
GRANT all ON zm.* to nuevouser@localhost IDENTIFIED BY 'nuevopasswd';
exit;


Otra configuración que se puede modificar es la ruta donde se guardarán los eventos e imágenes (quizá otro disco duro) modificando el enlace simbólico para que apunte a la nueva ruta:

# rm /usr/share/zoneminder/events
# rm /usr/share/zoneminder/images
# rm /usr/share/zoneminder/temp

# mkdir /ruta/nueva/images
# mkdir /ruta/nueva/events
# mkdir /ruta/nueva/temp

# ln -s /ruta/nueva/images /usr/share/zoneminder/images
# ln -s /ruta/nueva/events /usr/share/zoneminder/events
# ln -s /ruta/nueva/temp /usr/share/zoneminder/temp
# chown www.data.www.data -R /ruta/nueva/


Si ya se han agregado monitores, antes de eliminar los enlaces simbólicos hay que parar el servicio de ZoneMinder. Una vez creados los enlaces simbólicos se mueve el contenido de los directorios "/var/cache/zoneminder/" a la nueva ruta y se arranca el servicio ZoneMinder.

IMPORTANTE: Cuando se actualiza ZoneMinder mediante el sistema de paquetes, se eliminarán los enlaces que se acaban de crear y se crearán los que vienen por default. Por lo que hay que repetir los pasos, pero ANTES hay que tener mucho CUIDADO en mover los eventos de "/ruta/nueva/events" fuera de dicha ruta porque de lo contrario se eliminarán todos los eventos cuando se inicie ZoneMinder.


Conceptos e Información interesante

- Un monitor es la configuración de una cámara ya sea para monitorizar o grabar imágenes. Una vez configurado, si se hace de manera correcta, se habilita y la cámara es accesible se mostrará de color verde, de lo contrario se mostrará de color rojo o anaranjado.
- La consola de ZoneMinder es la interfaz Web
- Un evento es el registro generado por una cámara cuando se graban imágenes.
- Por default, cada 10 minutos (puede modificarse) se genera un nuevo evento que contiene las imágenes de la grabación.
- Las imágenes de los eventos se guardan en la carpeta "events/"
- Los filtros sirven para mostrar determinados eventos en base a parámetros configurables (fecha, causa, porcentaje en disco, id del monitor, etc). Viene incluido un filtro por default llamado PurgeWhenFull que elimina de manera automática los eventos antiguos cuando el disco duro llega al porcentaje configurado.


Configuración de las Opciones (Options) desde la consola de ZoneMinder

Se accede a estas opciones desde el link "options" en la consola principal de ZoneMinder. Si se realizan varias modificaciones se recomienda reiniciar ZoneMinder para evitar inconsistencia o perdida de datos. Se recomienda modificar al menos las siguientes opciones:

+ En la pestaña "System":
- La opción LANG_DEFAULT permite modificar el idioma. Se cambia al idioma al español (es_ar). Gran parte no está traducido al español, para continuar traduciendo hay que editar el archivo "/usr/share/zoneminder/lang/es_ar.php".
- La opción OPT_USE_AUTH debe marcarse para permitir autenticación de usuarios. Al guardar pedirá usuario y contraseña que por defecto son admin/admin. También aparecerá una pestaña llamada "Users" desde la cual se puede modificar la clave del usuario admin y crear nuevos usuarios con los permisos deseados.

+ En la pestaña Paths (Enlaces) se pueden modificar las rutas donde se almacenaran imágenes, sonidos etc.
DIR_EVENTS dejar events
DIR_IMAGES dejar images
PATH_ZMS No estoy seguro, por ahí leí que se modificaba por "/cgi-bin/zms", pero no estoy seguro, pues por default es "/cgi-bin/nph-zms".
PATH_LOGS Ruta donde se guardaran los logs. Recomiendo cambiar por "/var/log/zm" (por default trae /tmp)

+ En la pestaña "Web"
WEB_RESIZE_CONSOLE Desmarcarlo

+ En la pestaña "Images"
OPT_CAMBOZOLA marcarlo
PATH_CAMBOZOLA cambozola.jar (donde fue guardado anteriormente)
STREAM_METHOD Dejar jpeg, aunque no se si haya diferencia si se cambia por "mpeg", pues cuando lo hice no note ninguna diferencia.
PATH_FFMPEG Dejar /usr/bin/ffmpeg


Creación de usuarios

+ En la pestaña "Users" (Usuarios). Para que aparezca esta pestaña debe marcarse la opción "OPT_USE_AUTH" desde la pestaña "System".
- Se modifica el password de admin dando clic en el nombre del usuario. Se recomienda no eliminar la cuenta admin al menos hasta que sea creada otra cuenta con todos los permisos.
- Se crean más cuentas de usuario. Pueden crearse usuarios con los permisos siguientes:
Lenguaje para esa cuenta de usuario en particular
Stream (permite ver video en vivo de las cámaras
Events (permite ver o modificar o eliminar eventos)
Control (permite controlar cámaras)
Monitors (permite ver y editar monitores)
System (determina si el usuario puede ver o modificar las configuraciones del sistema. Como la de usuarios o del sistema completo)
Ancho de banda
Restringir a determinados monitores


Configuración de monitores

Pueden configurarse varios monitores por cámara y cada monitor tiene su propia configuración. A continuación se explican las principales:
>> Pestaña General
+ Source Type: Indica el tipo de cámara. Si la cámara está conectada localmente por USB, hay que elegir "Local".
Function: Indica la manera en que actuará. La opciones son las siguientes.
Monitor.- Se usa para monitorizar una cámara sin que genere eventos (no graba nada)
Modect.- Detección de movimiento. Se analizan todas las imágenes y cuando se detecta movimiento se generan eventos.
Record.- Genera eventos de manera continua, grabando en todo momento haya o no detección de movimiento
Mocord.- Es la combinación de Modect y Record.
Nodect.- No detecta.

+ Enable: Se marca si se desea habilitar el monitor.
+ Linked Monitors: Permite seleccionar otros monitores. Puede usarse para forzar a todas las cámaras a grabar cuando en dicho monitor se detecte movimiento
+ Maximum FPS: Permite limitar el número máximo de fotos que se guardarán de dicha cámara aún cuando esta permita un FPS mayor. Esta opción permite aligerar la carga del servidor sobre todo cuando se tengan varias cámaras configuradas. ZoneMinder no puede modificar el stream mjpeg que le pasan las cámaras IP. Algunas cámaras IP permiten modificar dicho FPS directamente en su configuración. Para usar esta característica (FPS) debe usarse el método "jpeg" en lugar de "mjpeg" (En la consola de Zm: Options, Images, STREAM_METHOD).
+ Alarm Maximum FPS : Permite sobreescribir el "Maximum FPS" cuando algo ocurra (como detección de movimiento)

>> Pestaña Source
Las opciones variaran según el Tipo de Origen configurado en la pestaña General.

Para una cámara conectada localmente, las opciones serían:
En la pestaña General.- Source Type: Local. Function: Monitor o lo que desee
En la pestaña Source.- Device Path: /dev/video0 o el dispositivo según sea el caso. Capture Method: Video for Linux version 2. Device Format: PAL. Capture Palette: YUYV.

Puede ver la lista de Hardware soportado incluyendo cámaras IP con sus configuraciones especificas en esta página.

Para la cámara IP D-Link DCS-2102 (que no viene incluida en la lista y cuando quise agregarla no pude porque necesitaba loguearme y las veces que intente registrarme no pude hacerlo) la configuración es la siguiente para el protocolo RTSP:
Source Type: ffmpeg
Source Path: rtsp://usuario:password@IPCamara/play2.sdp

>> Pestaña Misc
+ Event Prefix: Prefijo del nombre de los eventos.
+ Section Length: longitud de los eventos en segundos. Es recomendable que el valor sea entre 300 y 900 segundos (5 y 15 min). Por default son 600 segundos (10 minutos)


Agregar o modificar zonas

Por cada monitor que se crea, se genera automáticamente una zona. Una zona sirve para indicar que zona (área) de la toma se utilizará para generar eventos. Se puede acceder o agregar zonas desde la consola principal de ZoneMinder en la columna "Zones".

+ Name: Etiqueta de la zona
+ Type:
Active: Es la que se usa más frecuentemente y es definida por default con los monitores recién creados. Indica que la zona accionará una alarma en cualquier evento que ocurra dentro de la zona (dentro de los puntos).
Inclusive: Este tipo de zona puede usarse para activar su alarma solo cuando otra zona activa ha activado su alarma. Por ejemplo, si se desea monitorizar un cuarto en el cual hay una puerta, puede usarse una zona "Active" que cubra el área de la puerta y otra zona "Inclusive" que cubra el resto del cuarto.
Exclusive: Las alarmas serán accionadas solamente en esta zona si no se han accionado ningunas alarmas ya en zonas activas.
Preclusive:
Inactive: Este tipo de zona es lo opuesto a la zona activa. En este tipo de zonas no se reportarán nunca las alarmas. Puede usarse para zonas que no se deseen supervisar.
+ Presets: contiene una lista predefinida de algunas configuraciones comunes de la zona.
+ Units: Detalla si los siguientes opciones de configuración serán en porcentaje o en pixeles. Es recomendable usar el porcentaje inicialmente hasta comprender.
+ Alarm Colour:
+ Alarm Check Method: AlarmPixels o FilteredPixels
+ Min/Maximum Pixel Threshold:
+ Filter Width/Height: Se recomienda un numero pequeño (3 o 5)
+ Zone Area:
+ Min/Maximum Alarmed Area: valor de porcentaje o de pixeles mínimos de cambios (que se deben igualar o superar) para que entre la alarma. El máximo no debe ser excedido o se cancela la alarma Un valor mínimo adecuado puede ser entre 10 o 30 si hay poca o mucha luz.
+ Min/Maximum Filtered Area:
+ Min/Maximum Blob Area
+ Min/Maximum Blobs


Ver monitores

Para ver lo que está ocurriendo en un monitor hay que dar clic en el nombre del monitor ubicado en la columna "Name" desde la consola de ZoneMinder. Se abrirá una ventana con el monitor y en la parte de abajo se listarán los últimos 10 eventos ocurridos en ese monitor.


Filtrado de eventos

- En la consola principal de ZoneMinder se muestran varias columnas en las cuales se muestran el total de eventos de los monitores filtrados por hora, día, semana y mes.
- En la consola principal hay un botón llamado "Filters" que al dar clic en él nos muestra una ventana en la cual podemos crear nuestros propios filtros o modificar los existentes. Por default viene un filtro que elimina los eventos sin archivar cuando el espacio en disco duro llegue al %85.
- Los filtros constan de una o más condiciones que de cumplirse se aplican las acciones configuradas (ejecutar un comando personalizado, archivar, crear un video y/o eliminar los eventos) a los eventos involucrados.
- Para crear un filtro basta con elegir una(s) condición(es), especificar un valor y elegir la(s) acción(es) a aplicar.
- Los filtros automatizados se ejecutan en Perl y se analizan por fecha, por ello es importante usar en los campos tipo fecha formatos compatibles con PHP y Perl. Un ejemplo valido en ambos métodos es usar '-3 day' o similar.
- Un tipo de filtro especial es "Disk Blocks" y "Disk Percent" que no están relacionados con los eventos pero si con la partición del disco duro donde están almacenados los eventos. Estos permiten especificar una cantidad de uso de disco duro en bloques o en porcentaje devuelto por el comando "df" (se refiere a cantidad de espacio del disco duro usado y no el libre).
- Para asegurarse de que se apliquen los cambios se recomienda reiniciar el servicio de ZoneMinder.

Ejemplo de un filtro que elimina eventos sin archivar que tengan más de 30 días de haber sido creados:
[ ] and [< less than> -30 day] (otra opción es la siguiente línea que cambia "day" por "days")
[ ] and [< less than> -30 days]
Limit to first 5 results only
Delete all matches

Antes de guardar o ejecutar un filtro es recomendable dar clic en el botón "Submit" para checar que eventos se ven afectados con el filtro para evitar cometer errores y eliminar eventos indeseados.


Ver eventos

Para acceder a los eventos se hace desde la consola principal de ZoneMinder dando clic en la columna que muestra el total de eventos del monitor deseado filtrado por hora, día, semana o mes. Se abrirá una ventana que lista los eventos de dicho monitor. En esta ventana hay un link llamado "Show Timeline" que abre una ventana nueva que muestra los eventos en una linea del tiempo en forma gráfica. Stills es útil si el stream no funciona o no está soportado o se desea acceder a una foto en particular.

Cuando se accede a un evento particular, en la ventana hay varias opciones que permiten cambiar de nombre al evento, eliminarlo, editarlo (comentar sobre el mismo), exportarlo (para ser descargado), archivarlo, acceder a los frames (fotos individuales), crear un video (en mpeg) del evento. También hay un link llamado "Stills" (fotos) que se diferencia de "Frames" en que muestra thumbnails de las imágenes individuales del evento y al darle clic se abre la imagen en su tamaño normal. En cambio Frames lista las fotos mostrando el tiempo en el que ocurrió.

Archivar un evento significa que será guardado y no se mostrará en los listados normales de eventos. Es útil para guardar eventos que son importantes o que se desean proteger para que no sean borrados con los filtros automáticos. Una vez que el evento es archivado no puede eliminarse o desarchivarse accidentalmente cuando se estén viendo los eventos no archivados.

La opción que genera videos usa el codificador ffmpeg y por default los videos tienen la misma duración que el evento: pero pueden ajustarse antes de generar el video. Una vez generado el video podrá verse directamente, descargarse al equipo local y eliminarse del servidor una vez que no se requiera. El proceso de generación del video MPEG puede tardar algunos minutos.


LOGS

Como ya se comentó, desde las opciones de consola de ZoneMinder en la opción PATH_LOGS se puede especificar la ruta donde se guardaran algunos logs. Sin embargo una gran cantidad de logs se guardan en el archivo "/var/log/messages", para separar los logs de Zoneminder hay que editar el archivo "/etc/sysctl.conf" y agregar al inicio del archivo las siguientes líneas:
# Save ZoneMinder messages to zm.log
local1.* /var/log/zm/zm.log


Esto guardará los logs de Zoneminder etiquetados con local1 en "/var/log/zm/zm.log". Sin embargo esto no garantiza que todos los mensajes de ZoneMinder vayan a zm.log pudiéndose escapar algo a "/var/log/messages".


Otra información interesante

Si apache se colgara después de cierto tiempo por la cantidad de conexiones que se levantan y se tuviera que reiniciar el servicio a cada rato, sería necesario modificar lo siguiente en el archivo "/usr/share/zoneminder/ajax/stream.php":
if ( $numSockets === false )
Por:
if ( $numSockets === false || $numSockets < 1 )


Configurar cámara D-Link DCS-2102

+ Protocolo: RTSP (por el puerto 554)
Source Type: ffmpeg
Source Path: rtsp://usuario:passwd@IP/play2.sdp

Si se tiene configurado un firewall en el equipo, hay que abrir los siguientes puertos para que funcione la cámara:
554 por tcp y udp
5000-5020 udp


FUENTE:

Documentación oficial de ZoneMinder

10 de junio de 2010

Debian con LXDE en Laptop Dell Latitude CPx


La Laptop Dell Latitude CPx cuenta con un procesador Intel Pentium III a 500MHz y 256MB de memoria RAM. En ella se instalará Debian testing (Squeeze en estos momentos) con LXDE. LXDE es un entorno de escritorio ligero, rápido, bonito y funcional. En mi caso, como yo tengo un netinstall de Debian Lenny, se instalará el sistema base con Lenny, luego se modificarán los repositorios para que apunten a squeeze y poder pasarnos a Debian testing.

Instalación

Sólo describiré de manera general el proceso de instalación de Debian sin entrar en detalles.

Se arranca con el CD, en el menú inicial se inicia la instalación de Debian con el instalador modo texto, se siguen las instrucciones y en el paso que pide seleccionar los programas a instalar (entorno de escritorio, servidor web, etc) se desmarcan todas las opciones para instalar solo el sistema base, pues no tiene caso instalar programas que después se actualizarán desde testing.

Una vez completada la instalación, se inicia sesión con root, se cambian los repositorios para que apunten a squeeze (cambiar lenny por squeeze):
# nano /etc/apt/sources.list

Agregar al final del archivo el repositorio de debian-multimedia:
#debian multimedia
deb http://www.debian-multimedia.org squeeze main non-free

Para evitar problemas de seguridad y que las descargas de paquetes de debian-multimedia sean seguras hay que realizar lo siguiente:
$ wget -c http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
$ su
# dpkg -i debian-multimedia-keyring_2008.10.16_all.deb

Se actualiza la lista de paquetes y se actualiza a squeeze:
# aptitude update
# aptitude upgrade


Una vez que termina la actualización de paquetes se tendrá instalada Debian Squeeze. Ahora se procede a instalar lxde:
# aptitude install lxde

Para que los usuarios puedan apagar, reiniciar, suspender, etc el equipo hay que agregar el usuario al grupo powerdev:
# gpasswd -a usuario powerdev

Se instala gdm para que se cargue el entorno de gráfico al arrancar el equipo:
# aptitude install gdm

Configuración de la tarjeta de sonido
Al verificar los dispositivos de la laptop, me doy cuenta que la tarjeta de sonido no esta configurada. Esta no está soportada por el kernel debido a problemas de licencia.

# lspci
00:08.0 Multimedia audio controller: ESS Technology ES1983S Maestro-3i PCI Audio Accelerator (rev 10)

Para configurar la tarjeta de sonido se siguen los pasos descritos en la siguiente página.

Instalación de programas ligeros

En este equipo no se deben instalar programas pesados porque de nada serviría instalar un entorno de escritorio ligero. Por ello se instalarán los siguiente programas:
Navegador web: epiphany-browser, kazehakase
Plugins para el navegador: sun-java6-bin, flashplugin-nonfree
Gestor de redes y herramientas wireless: wicd, wireless-tools, wpasupplicant
Codecs de audio y video: w32codecs
Mensajería instantanea: emesene, pidgin
Reproductor de sonido: audacious, lxmusic, grip
Reproductor de video: gxine (smplayer es otra opción, pero requiere las librerias QT)
Grabar CDs: brasero
Visor de imagenes: gpicview, gthumb
Visor pdf: evince
Editor de texto: leafpad
Compresor/descompresor: xarchiver (Soporta 7z, ARJ, bzip2, gzip, lzma, RAR, RPM, DEB, tar y ZIP)
Ofimatica: abiword, gnumeric
Navegador de archivos: pcmanfm
Otras herramientas: less, grep, gpm, vim, apt-listbugs, synaptic, module-assistant

# aptitude install epiphany-browser kazehakase sun-java6-bin flashplugin-nonfree wicd wireless-tools wpasupplicant w32codecs emesene pidgin audacious lxmusic gxine brasero gpicview gthumb evince leafpad xarchiver abiword gnumeric pcmanfm less grep gpm vim apt-listbugs synaptic module-assistant

Enlaces de Interes:
http://www.debian.org/distrib/netinst
http://www.debian.org/CD/netinst/
http://lxde.org/es/lxde
http://wiki.lxde.org/es/Debian
http://www.debian-multimedia.org/