====== ZoneMinder ======
===== Presentation =====
Lien: http://www.zoneminder.com/
*Debian Lenny
*i386
*Release 1.24.2
| :!: je n'arrive pas a compiler pour un environnement 64 bit ! (amd64) \\ Peut etre en usant de "--with-libarch=lib64" ca serait mieux ? |
===== Installation =====
==== debian packages ====
On va compiler, ce qui necessite certains outils.
# aptitude install mysql-server-5.0
Definir un mot de passe **''root''** ...
# aptitude install php5 php5-mysql
# aptitude install apache2 libapache2-mod-auth-mysql
Attention, ne pas faire: aptitude install ffmpeg car on va compiler **''ffmpeg''** pour qu'il soit plus mieux.
Pour les compilations à venir:
# aptitude install build-essential
# aptitude install libmysqlclient15-dev libgnutls-dev libjpeg62-dev
# aptitude install libarchive-zip-perl libdate-manip-perl
# aptitude install liblwpx-paranoidagent-perl
# aptitude install libphp-serialization-perl
Ainsi que :
# aptitude install libpcre3-dev libbz2-dev
Seulement si on ne souhaite pas compiler "ffmpeg" (et tout particulierement **''--with-ffmpeg=/usr/local''** ) :
# aptitude install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev
==== ffmpeg ====
Il faut utiliser une version **optimisé** de FFMPEG. Sinon, ca rame parce qu'on utilise pas les capacités des processeurs modernes!
# aptitude install subversion
$ mkdir ffmpeg && cd ffmpeg
$ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
| :!: Si la version est **trop récente** (et surtout si la compilation avec ZM ne passe pas), preferer cette version:\\ http://www.ffmpeg.org/releases/ffmpeg-0.5.1.tar.gz que je garde au chaud {{:ffmpeg-0.5.1.tar.gz|ici}} |
$ cd ffmpeg
$ ./configure --prefix=/usr/local
ou:
$ ./configure --prefix=/usr/local --cpu=i686 --enable-swscale --enable-gpl
$ make
# make install
==== Compilation ====
=== dependances ===
configure: error: zm requires Sys::Mmap for mapped memory
Solution:
# perl -MCPAN -e shell
install Sys::Mmap
=== compilation ===
Recuperer les sources, par exemple:
$ mkdir tmp && cd tmp
$ wget http://www2.zoneminder.com/downloads/ZoneMinder-1.24.2.tar.gz
Je garde cette version de ZoneMinder au chaud {{:ZoneMinder-1.24.2.tar.gz|ici}}.
Decompresser:
$ tar xvzf ZoneMinder-1.24.2.tar.gz
Compiler:
$ cd ZoneMinder-1.24.2
$ ./configure --prefix=/usr/local \
--with-webdir=/var/www/zm \
--with-cgidir=/usr/lib/cgi-bin \
--with-webuser=www-data \
--with-webgroup=www-data \
--with-ffmpeg=/usr/local \
--enable-mmap=yes \
--disable-debug \
--disable-crashtrace
Ou plutôt (parce que ca ne fonctionnait toujours pas...hummm)
./configure --prefix=/usr/local \
--with-libarch=lib \
--with-mysql=/usr \
--with-webdir=/var/www/zm \
--with-cgidir=/usr/lib/cgi-bin \
--with-webuser=www-data \
--with-webgroup=www-data \
--with-ffmpeg=/usr/local \
--enable-mmap=yes \
--disable-debug \
--disable-crashtrace \
ZM_DB_HOST=localhost \
ZM_DB_NAME=zm \
ZM_DB_USER=zmuser \
ZM_DB_PASS=zmpass \
CFLAGS="-march=i686 -O2" \
CXXFLAGS="-march=i686 -O2"
Où :
| **''/var/www/zm''** | l'emplacement du serveur |
| **''--with-ffmpeg=/usr/local''** | parce qu'on a compilé notre version |
| **''ZM_DB_PASS''** | VOTRE mot de passe |
| **''CFLAGS="-march=i686 -O2"''** | Option de compilation |
Ensuite:
$ make
Et a ma grande surprise, ca compile ... alors que je m'attendais a "patcher" ! http://www.zoneminder.com/forums/viewtopic.php?p=60971
==== Install ====
# make install
===== Configuration =====
==== zm.conf ====
Aprés chaque **''make install''** , un fichier de conf appararait là: (sauf option contraire)
/usr/local/etc/zm.conf
| :!: le sauvegarder **avant** de faire un nouvel **''make install''** |
L'editer, au moins pour choisir un mot de passe:
...
# ZoneMinder database hostname or ip address
ZM_DB_HOST=localhost
# ZoneMinder database name
ZM_DB_NAME=zm
# ZoneMinder database user
ZM_DB_USER=zmuser
# ZoneMinder database password
ZM_DB_PASS=
==== database ====
A partir du repertoire où on a compilé les sources de ZoneMinder, on créé la base et ses tables comme cela:
$ mysql -u root -p < db/zm_create.sql
Créer le user ("zmuser" par exemple) qui sera autorisé a accéder a cette base:
$ mysql -u root -p
mysql> grant all on zm.* to zmuser@"localhost" identified by "";
==== events ====
Il peut y avoir **beaucoup** d'images a sauvegarder.
Il est encore temps d'utiliser un "filer" ou un "nas" en réseau:
Verifier que le répertoire **''/var/www/zm/events''** est vide.
Le faire pointer sur le partage **''nfs''** .
# cd /var/www/zm
# mv events events-old
# mkdir /mnt//events
# ln -s /mnt//events .
(pour exemple)
==== script pour init.d ====
Modifier le fichier ./scripts/zm pour qu'il fonctionne sous lenny. Par exemple:
# cp ./scripts/zm /etc/init.d/.
Técharger le script {{:zm.zip|ici}} .
Et puis:
$ unzip zm.zip
$ su
# chmod a+x zm
# chown root: zm
# mv zm /etc/init.d/.
Créer repertoire:
# mkdir /var/lock/subsys
Test 1:
# /etc/init.d/zm
Test 2:
# /etc/init.d/zm status
ZoneMinder is stopped
Test 3:
# /etc/init.d/zm start
Starting ZoneMinder: Success
Test 4:
/etc/init.d/zm status
ZoneMinder is running
Le répertoire **''/tmp''** se peuple des logs de "zm"...
Et enfin:
# update-rc.d zm defaults
==== sysctl.conf ====
Lien: http://www.zoneminder.com/forums/viewtopic.php?t=9692
ZoneMinder a besoin de partager beaucoup de mémoire...
Pour eviter des messages d'erreurs comme ça dans **''/var/log/syslog''** :
... zm zmc_m1[2032]: ERR [Got unexpected memory map file size 9217192, expected 36865192]
Dans sysctl.conf :
# TJ --------------
# pour zm. Source:
#kernel.shmmax = 256000000
kernel.shmmax = 25600000
###kernel.shmall = 62500
Et puis, aprés sauvegarde.
# sysctl -p
Redemarrer ZoneMinder: Les erreurs disparaissent...
==== Apache ====
=== virtualhost ===
"zm" est le seul service sous Apache...
Aprés avoir désactiver le site par defaut:
# a2dissite 000-default
Voici la conf de mon zm:
ServerAdmin root@localhost
ServerName zm.thierry-jaouen.local
ServerAlias zm video
DocumentRoot /var/www/zm
Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny From All
Options -Indexes FollowSymLinks -MultiViews
AllowOverride None
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Order Deny,Allow
Deny From All
Allow From 127. 192.168.
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Activée par :
# a2ensite 110-zoneminder
# apache2ctl graceful
==== Service ====
Il n'y a pas de mot de passe demandé par defaut.
Dans: Options > System
OPT_USE_AUTH enable (cocher)
Ensuite, le compte par défaut pour administrer:
login: admin
password: admin
A changer trés vite bien sûr.
===== TV-IP422 =====
de chez Trendnet...
Pas simple avec ZoneMinder.
==== jpg ====
| :!: A eviter, car lent |
Source:
| Remote Host Name | :@ |
| Remote Host Port | 80 |
| Remote Host Path | /cgi/jpg/image.cgi |
==== mjpg ====
Source:
| Remote Host Name | :@ |
| Remote Host Port | 80 |
| Remote Host Path | /cgi/mjpg/mjpg.cgi |
Et non pas **''/mjpeg.cgi''** => MIME pourri ne fonctionnant pas avec ZM.
==== mp4 ====
ca marche ?
==== PTZ ====
Une camera a la même caractéristique, et voici quelques fonctions interessantes possibles: http://www.zoneminder.com/forums/viewtopic.php?t=12238
**''SkyIPCam7xx''** comme module pour controler la caméra.
Lien: http://www.zoneminder.com/forums/viewtopic.php?t=12271
# cd /usr/local/share/perl/5.10.0/ZoneMinder/Control
# wget http://www.praecogito.com/~brudy/setsnest/zoneminder/SkyIPCam7xx.pm
Etc...
| :!: Sauf erreur: il n'y a que le compte **''admin''** qui peut l'utiliser ? |
===== Bugs =====
... zm zmwatch[1714]: ERR [Can't open memory map file '/dev/shm/.zm.mmap.1': Too many open files in system]
$ cat /proc/sys/fs/file-max
20925
$cat /proc/sys/fs/file-nr
20934 0 20925
Oups?
Un lien pour aider: http://www.netadmintools.com/art295.html