Zoneminder(HOW TO)
About
ZoneMinder is intended for use in single or multi-camera video security applications, including commercial or home CCTV, theft prevention and child, family member or home monitoring and other domestic care scenarios such as nanny cam installations. It supports capture, analysis, recording, and monitoring of video data coming from one or more video or network cameras attached to a Linux system. ZoneMinder also support web and semi-automatic control of Pan/Tilt/Zoom cameras using a variety of protocols. It is suitable for use as a DIY home video security system and for commercial or professional video security and surveillance. It can also be integrated into a home automation system via X.10 or other protocols.
This how-to is for IP Camera's only.
Installation
Requirements
- Koozali SME Server 9.x 64-bit
- PHP 5.6 is required for a fully functional Zoneminder and its API's installation. Since Koozali SME Server 8.x and 9.x come with a lower version of PHP, one must install the PHP Software Collections first.
- Zoneminder is available from the Zoneminder repository. You need to configure the zmrepo as explained here.
Install Zoneminder from the zmrepo
yum install zoneminder --enablerepo=zmrepo
Zoneminder's configuration file is located at /etc/zm.conf. You need to change the Apache user in the zm.conf file from apache:apache to www:www, and double check the database credentials in the same file with the ones you have used.
MySQL database
Zoneminder works 'best' with InnodeDB enabled. As root issue:
db configuration setprop mysqld InnoDB enabled expand-template /etc/my.cnf sv t /service/mysqld
Zoneminder uses MySQL for the storage of picture data, so we need to create a new database. As root issue:
mysql create database zm; grant all privileges on zm.* to zmuser identified by 'zmpass'; flush privileges; exit
Then we populate the new database:
mysql zm < /usr/share/zoneminder/db/zm_create.sql
The above bold credentials should be replaced by your own information.
Create custom templates
mkdir -p /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/ cp /etc/httpd/conf.d/zoneminder.conf /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98zoneminder rm -f /etc/httpd/conf.d/zoneminder.conf sed -i "18i AddType application/x-httpd-php .php" /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98zoneminder sed -i "19i AuthBasicProvider external" /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98zoneminder sed --in-place '/DELETE/d' /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98zoneminder expand-template /etc/httpd/conf/httpd.conf service httpd-e-smith restart
Start Zoneminder at boot
config set zoneminder service status enabled ln -s /etc/rc.d/init.d/e-smith-service /etc/rc7.d/S98zoneminder
The mysqlinit (init-default-databases) process (which starts after the zoneminder service) will have MySQL restarted whilst Zoneminder is actively using it. The Zoneminder service will not start for due to this running process. To prevent Zoneminder to start too quickly we delay the Zoneminder service to start a bit later by adding a sleep command in the script /etc/rc.d/init.d/zoneminder.
sed -i '/^start()/{N;s/$/\nsleep 10/}' /etc/rc.d/init.d/zoneminder
You can now start Zoneminder manually:
service zoneminder start
And access the Zoneminder portal at http://yourserver.com/zm, and login as admin admin
Acces Zoneminder via sub domain
Instead of accessing the Zoneminder portal at http://myserver.com/zm, it is possible to change this to e.g. https://cctv.myserver.com. For this the easiest and comfortable way is to use the webapps-common contrib.
Install the webapps-common contrib according to the how-to. Then (as per example for https://cctv.myserver.com) issue the following as root:
db domains set cctv.myserver.com domain Description "CCTV" Content Primary \ Nameservers internet TemplatePath WebAppVirtualHost \ DocumentRoot /usr/share/zoneminder/www RequireSSL enabled signal-event domain-create cctv.myserver.com
Next you need to adjust the existing (from above) custom template (make a backup copy first):
sed --in-place '/Alias/d' /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98zoneminder
Followed by:
signal-event webapps-update
to activate all changes. Now you can reach your zoneminder portal at https://cctv.myserver.com
Uninstall
To uninstall Zoneminder and all it's dependencies, we will use the yum history to uninstall all dependencies that came with the initial installation, but are no longer required as we remove Zoneminder. Stop Zoneminder:
service zoneminder stop
First we need to check the yum transaction ID that installed Zoneminder. As root issue:
yum history package-info zoneminder
the result is all yum knows about the Zoneminder package. We are interested in the Transaction ID. Next we uninstall Zoneminder and all it's dependencies based on the number of the Transaction ID:
yum history undo Transaction ID number
and confirm the uninstallation of Zoneminder and all dependencies.
yum --setopt=tsflags=noscripts remove zoneminder
Then we need to remove the custom template, the symlink that we created to start Zoneminder at boot and the subdomain that we may have created:
rm -f /etc/e-smith/templates-custom/etc/httpd/conf/httpd.conf/98zoneminder rm -f /etc/rc7.d/S98zoneminder signal-event domain-delete cctv.myserver.com signal-event webapps-update
Now to cleanup everything you may want to perform the usual post-upgrade and reboot events. All that is left is the MySQL database zm and the logfiles. It's up to you what to do with them.
ZoneMinder clients
By default, ZoneMinder can be accessed via the webinterface. There are also 3rd party client applications available.
zmNinja, a beautiful fast and efficient client application (freely available on Github) DEMO
- Android - Play Store
- iOS - iTunes
- Mac/Windows/Linux Github