Table des matières
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 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 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=<MOT_DE_PASSE>
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 "<MOT_DE_PASSE>";
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/<nfs>/events # ln -s /mnt/<nfs>/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 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:
<VirtualHost *:80> ServerAdmin root@localhost ServerName zm.thierry-jaouen.local ServerAlias zm video DocumentRoot /var/www/zm <Directory /> Options FollowSymLinks AllowOverride None Order Deny,Allow Deny From All </Directory> <Directory /var/www/zm> Options -Indexes FollowSymLinks -MultiViews AllowOverride None </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> <Location /> Order Deny,Allow Deny From All Allow From 127. 192.168. </Location> 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 </VirtualHost>
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 | <User>:<Password>@<Adresse_IP> |
Remote Host Port | 80 |
Remote Host Path | /cgi/jpg/image.cgi |
mjpg
Source:
Remote Host Name | <User>:<Password>@<Adresse_IP> |
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