ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.
Go to file
Andrew Bauer a03f3f39b5 Update README.md
Better http link formatting
2015-05-14 10:06:16 -05:00
cmake Add Sendfile checks for cmake 2015-03-31 23:07:19 -04:00
db hide USE_DEEP_STORAGE 2015-04-12 12:20:20 -05:00
distros Update zoneminder.el7.spec 2015-05-07 18:13:33 -05:00
doc-pak Migrate svn to git 2013-03-17 00:45:21 +01:00
docs bump verion to 1.28.1 in master 2015-02-18 18:24:26 -06:00
m4 move the macro for AC_SENDFILE into the m4 directory 2015-03-27 15:15:55 -04:00
misc Use tmpfiles.d to manage tmpdir and sockdir 2015-03-31 20:30:27 -05:00
onvif Allow user to override perl installation. Replace old perl cmake vars with new. 2015-04-10 12:09:01 -05:00
scripts support the old use of just putting the password in the control field 2015-05-13 08:23:16 -04:00
src Merge pull request #825 from rwg0/688-fix-fast-forward 2015-05-09 19:39:23 -05:00
umutils Migrate svn to git 2013-03-17 00:45:21 +01:00
utils Move script to /utils 2014-11-15 12:48:01 -06:00
web Fix use of DEFINED. It takes a string not a constant. When COOKIE is not set or has changed, set it 2015-05-11 16:22:14 -04:00
.gitignore Ignore Makefile.old 2015-03-15 16:46:48 +01:00
.travis.yml remove lines I used for debugging. 2015-04-01 12:53:06 -04:00
AUTHORS Updated AUTHORS to reflect recent changes to the project 2013-09-09 10:06:36 -04:00
BUGS Point to the GitHub issues page for the list of current bugs 2013-09-09 09:45:29 -04:00
CMakeLists.txt Merge pull request #775 from ZoneMinder/freebsd_fixes 2015-04-17 15:21:42 -05:00
COPYING Migrate svn to git 2013-03-17 00:45:21 +01:00
ChangeLog Pointed the ChangeLog to the commits url 2013-09-05 11:32:48 -04:00
Dockerfile Removed line adding Universe repo as already in images 2014-10-11 17:29:46 +11:00
INSTALL Merge pull request #792 from knnniggett/perl 2015-04-15 11:07:14 -04:00
LICENSE Copied COPYING to LICENSE 2013-04-12 19:11:17 -04:00
Makefile.am have to include the m4 dir apparently 2015-03-31 23:20:39 -04:00
NEWS Migrate svn to git 2013-03-17 00:45:21 +01:00
README.md Update README.md 2015-05-14 10:06:16 -05:00
TODO update link to README to be README.md 2013-09-06 14:35:08 -04:00
acinclude.m4 put this back so we can get on with life 2013-09-10 08:52:59 -04:00
bootstrap.sh old versions ignore other efforts to include our own m4 directory, so spceify it on the command line 2015-04-01 12:19:27 -04:00
cmakecacheimport.sh Remove importing of binary directory in cmakecacheimport.sh 2013-11-15 10:44:31 +02:00
configure.ac Merge pull request #775 from ZoneMinder/freebsd_fixes 2015-04-17 15:21:42 -05:00
connect Merge branch '478-onvif-support' of https://github.com/altaroca/ZoneMinder into altaroca-478-onvif-support 2015-02-18 18:53:47 -06:00
description-pak Doing my best to manually remove nextime's plugin architecture while keeping his other changes. 2013-08-13 09:43:23 -04:00
version Update version 2015-02-27 19:43:56 -06:00
zm.conf.in Add the ability to specify the zm configdir at build time. 2014-11-11 09:15:15 -06:00
zmconfgen.pl.in Migrate svn to git 2013-03-17 00:45:21 +01:00
zmlinkcontent.sh.in Modified zmlinkconent.sh.in to chown and chmod content folder. Fixes #463 2014-07-09 00:59:38 +10:00
zoneminder-config.cmake cmake - update v4l header file check 2015-04-03 18:21:28 -05:00

README.md

ZoneMinder

Build Status Bountysource

All documentation for ZoneMinder is now online at http://www.zoneminder.com/wiki/index.php/Documentation

Overview

ZoneMinder is an integrated set of applications which provide a complete surveillance solution allowing capture, analysis, recording and monitoring of any CCTV or security cameras attached to a Linux based machine. It is designed to run on distributions which support the Video For Linux (V4L) interface and has been tested with video cameras attached to BTTV cards, various USB cameras and also supports most IP network cameras.

Installation Methods

Building from Source is Discouraged

Historically, installing ZoneMinder onto your system required building from source code by issuing the traditional configure, make, make install commands. To get ZoneMinder to build, all of its dependencies had to be determined and installed beforehand. Init and logrotate scripts had to be manually copied into place following the build. Optional packages such as jscalendar and Cambozola had to be manually installed. Uninstalls could leave stale files around, which could cause problems during an upgrade. Speaking of upgrades, when it comes time to upgrade all these manual steps must be repeated again.

Better methods exist today that do much of this for you. The current development team, along with other volunteers, have taken great strides in providing the resources necessary to avoid building from source.

Install from a Package Repository

This is the recommended method to install ZoneMinder onto your system. ZoneMinder packages are maintained for the following distros:

If a repository that hosts ZoneMinder packages is not available for your distro, then you are encouraged to build your own package, rather than build from source. While each distro is different in ways that set it apart from all the others, they are often similar enough to allow you to adapt another distro's package building instructions to your own.

Building a ZoneMinder Package

Building ZoneMinder into a package is not any harder than building from source. As a matter of fact, if you have successfully built ZoneMinder from source in the past, then you may find these steps to be easier.

When building a package, it is best to do this work in a separate environment, dedicated to development purposes. This could be as simple as creating a virtual machine, using Docker, or using mock. All it takes is one “Oops” to regret doing this work on your production server.

Lastly, if you desire to build a development snapshot from the master branch, it is recommended you first build your package using an official release of ZoneMinder. This will help identify whether any problems you may encounter are caused by the build process or is a new issue in the master branch.

What follows are instructions for various distros to build ZoneMinder into a package.

Package Maintainters

Many of the ZoneMinder configration variable default values are not configurable at build time through autotools or cmake. A new tool called zmeditconfigdata.sh has been added to allow package maintainers to manipulate any variable stored in ConfigData.pm without patching the source.

For example, let's say I have created a new ZoneMinder package that contains the cambolzola javascript file. However, by default cambozola support is turned off. To fix that, add this to the pacakging script:

./utils/zmeditconfigdata.sh ZM_OPT_CAMBOZOLA yes

Note that zmeditconfigdata.sh is intended to be called, from the root build folder, prior to running cmake or configure.

Ubuntu

A fresh build based on master branch running Ubuntu 1204 LTS. Will likely work for other versions as well.

root@host:~# aptitude install -y apache2 mysql-server php5 php5-mysql build-essential libmysqlclient-dev libssl-dev libbz2-dev libpcre3-dev libdbi-perl libarchive-zip-perl libdate-manip-perl libdevice-serialport-perl libmime-perl libpcre3 libwww-perl libdbd-mysql-perl libsys-mmap-perl yasm automake autoconf libjpeg8-dev libjpeg8 apache2-mpm-prefork libapache2-mod-php5 php5-cli libphp-serialization-perl libgnutls-dev libjpeg8-dev libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libv4l-dev libtool ffmpeg libnetpbm10-dev libavdevice-dev libmime-lite-perl dh-autoreconf dpatch;

root@host:~# git clone https://github.com/ZoneMinder/ZoneMinder.git zoneminder;
root@host:~# cd zoneminder;
root@host:~# ln -s distros/ubuntu1204 debian;
root@host:~# dpkg-checkbuilddeps;
root@host:~# dpkg-buildpackage;

One level above you'll now find a deb package matching the architecture of the build host:

root@host:~# ls -1 ~/zoneminder*;
/root/zoneminder_1.26.4-1_amd64.changes
/root/zoneminder_1.26.4-1_amd64.deb
/root/zoneminder_1.26.4-1.dsc
/root/zoneminder_1.26.4-1.tar.gz

The dpkg command itself does not resolve dependencies. That's what high-level interfaces like aptitude and apt-get are normally for. Unfortunately, unlike RPM, there's no easy way to install a separate deb package not contained with any repository.

To overcome this "limitation" we'll use dpkg only to install the zoneminder package and apt-get to fetch all needed dependencies afterwards. Running dpkg-reconfigure in the end will ensure that the setup scripts e.g. for database provisioning were executed.

root@host:~# dpkg -i /root/zoneminder_1.26.4-1_amd64.deb; apt-get install -f;
root@host:~# dpkg-reconfigure zoneminder;

Alternatively you may also use gdebi to automatically resolve dependencies during installation:

root@host:~# aptitude install -y gdebi;
root@host:~# gdebi /root/zoneminder_1.26.4-1_amd64.deb;
sudo apt-get install apache2 mysql-server php5 php5-mysql build-essential libmysqlclient-dev libssl-dev libbz2-dev \
libpcre3-dev libdbi-perl libarchive-zip-perl libdate-manip-perl libdevice-serialport-perl libmime-perl libpcre3 \
libwww-perl libdbd-mysql-perl libsys-mmap-perl yasm automake autoconf libjpeg-turbo8-dev libjpeg-turbo8 \
apache2-mpm-prefork libapache2-mod-php5 php5-cli

Debian

A fresh build based on master branch running Debian 7 (wheezy):

root@host:~# aptitude install -y apache2 mysql-server php5 php5-mysql build-essential libmysqlclient-dev libssl-dev libbz2-dev libpcre3-dev libdbi-perl libarchive-zip-perl libdate-manip-perl libdevice-serialport-perl libmime-perl libpcre3 libwww-perl libdbd-mysql-perl libsys-mmap-perl yasm automake autoconf libjpeg8-dev libjpeg8 apache2-mpm-prefork libapache2-mod-php5 php5-cli libphp-serialization-perl libgnutls-dev libjpeg8-dev libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libv4l-dev libtool ffmpeg libnetpbm10-dev libavdevice-dev libmime-lite-perl dh-autoreconf dpatch;

root@host:~# git clone https://github.com/ZoneMinder/ZoneMinder.git zoneminder;
root@host:~# cd zoneminder;
root@host:~# ln -s distros/debian;
root@host:~# dpkg-checkbuilddeps;
root@host:~# dpkg-buildpackage;

One level above you'll now find a deb package matching the architecture of the build host:

root@host:~# ls -1 ~/zoneminder*;
/root/zoneminder_1.26.4-1_amd64.changes
/root/zoneminder_1.26.4-1_amd64.deb
/root/zoneminder_1.26.4-1.dsc
/root/zoneminder_1.26.4-1.tar.gz

The dpkg command itself does not resolve dependencies. That's what high-level interfaces like aptitude and apt-get are normally for. Unfortunately, unlike RPM, there's no easy way to install a separate deb package not contained with any repository.

To overcome this "limitation" we'll use dpkg only to install the zoneminder package and apt-get to fetch all needed dependencies afterwards. Running dpkg-reconfigure in the end will ensure that the setup scripts e.g. for database provisioning were executed.

root@host:~# dpkg -i /root/zoneminder_1.26.4-1_amd64.deb; apt-get install -f;
root@host:~# dpkg-reconfigure zoneminder;

Alternatively you may also use gdebi to automatically resolve dependencies during installation:

root@host:~# aptitude install -y gdebi;
root@host:~# gdebi /root/zoneminder_1.26.4-1_amd64.deb;

CentOS / RHEL

DEPRECIATED. The steps below are depreciated. I am in the middle of rewriting this entire section.

Additional repositories must be added before one can build zoneminder on CentOS or RHEL:

  1. Zmrepo ZoneMinder WiKi
  2. EPEL https://fedoraproject.org/wiki/EPEL
  3. RPMFusion: http://rpmfusion.org/

When adding third party repositories, it is highly recommended that the user also install and configure yum priorities as documented in the CentOS WiKi

Prioritize the repositories:

  1. Base
  2. EPEL
  3. RPMFusion
  4. Zmrepo

Once your repos are in order, install the following:

sudo yum install cmake bzip2-devel ffmpeg ffmpeg-devel gnutls-devel httpd libjpeg-turbo libjpeg-turbo-devel mysql-devel mysql-server pcre-devel \
perl-Archive-Tar perl-Archive-Zip perl-Convert-BinHex perl-Date-Manip perl-DBD-MySQL perl-DBI perl-Device-SerialPort perl-Email-Date-Format perl-IO-stringy \
perl-IO-Zlib perl-MailTools perl-MIME-Lite perl-MIME-tools perl-MIME-Types perl-Module-Load perl-Package-Constants perl-Sys-Mmap perl-Time-HiRes \
perl-TimeDate perl-YAML-Syck perl-X10 perl-URI-Encode php php-cli php-mysql x264 vlc-devel vlc-core \
libcurl libcurl-devel polkit-devel git

To build from the master branch:

git clone https://github.com/ZoneMinder/ZoneMinder.git
cd ZoneMinder
cmake .
make
sudo make install

IMPORTANT: Don't forget the trailing "." when calling cmake

Docker

Docker is a system to run applications inside isolated containers. ZoneMinder, and the ZM webserver, will run using the Dockerfile contained in this repository. However, there is still work needed to ensure that the main ZM features work properly and are documented.

Contribution Model and Development

Pull requests are very welcome! If you would like to contribute, please follow the following steps.

  1. Fork the repo
  2. Open an issue at our GitHub Issues Tracker. Describe the bug that you've found, or the feature which you're asking for. Jot down the issue number (e.g. 456)
  3. Create your feature branch (git checkout -b 456-my-new-feature)
  4. Commit your changes (git commit -am 'Added some feature') It is preferred that you 'commit early and often' instead of bunching all changes into a single commit.
  5. Push your branch to your fork on github (git push origin 456-my-new-feature)
  6. Create new Pull Request
  7. The team will then review, discuss and hopefully merge your changes.

Analytics