ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.

Isaac Connor 5255898900 Merge branch 'master' of 22 hours ago
.github e1f8278712 Update 3 months ago
cmake f5a29bb679 Revert "add recipes to detect libv4l2" 1 year ago
conf.d 4bca799d43 reorganize zm config files (#1937) 9 months ago
db 0a24f8550a Update path to zmtriggers.sql 1 day ago
distros 600b66e27c Update zoneminder.spec 1 day ago
doc-pak 33cbd89212 Migrate svn to git 5 years ago
docs 93263c40b4 Remove mention of el6 from readthedocs 2 days ago
icons e39a757c46 add an icon made from favicon.ico and a .desktop file to be install in /usr/share/applications/ 1 year ago
misc 3c225c9f1c Migrate Webcache out of webroot (#2083) 4 days ago
onvif e7fb0f649b move to ../scripts. This is in preparation for removing the onvif library from the Zoneminder source into it's own package. 2 months ago
scripts a68ed3a305 watchfeed => watch. Fixes #2086 22 hours ago
src 35dcedb2ad fix ftbs on el7 2 days ago
umutils 33cbd89212 Migrate svn to git 5 years ago
utils f13d174ea5 remove support for el6 from the buildsystem 2 days ago
web 662215d125 Merge ../ZoneMinder.connortechnology 2 days ago
.dockerignore d2e83d197d Improve Docker build; reduce image size & layer count 1 year ago
.eslintignore c7955cd1b6 Add eslint configuration files extending Google's rules 1 year ago
.eslintrc.js c7955cd1b6 Add eslint configuration files extending Google's rules 1 year ago
.gitignore c360e27b02 Merge branch 'master' of into storageareas 1 year ago
.gitmodules f6540aeba1 point git submodules to our own forks 5 days ago
.travis.yml f13d174ea5 remove support for el6 from the buildsystem 2 days ago
AUTHORS 64ec75b7a5 Updated AUTHORS to reflect recent changes to the project 4 years ago
BUGS 45c32951b7 Point to the GitHub issues page for the list of current bugs 4 years ago 0d549f1db3 spelling fixes 1 year ago
CMakeLists.txt 02f8493b39 rpm packaging - remove support for sysvinit aka el6 2 days ago 75e28a527f Create 2 years ago
COPYING 69c2cd697c update gpl 2 statement 1 year ago
ChangeLog a4c399a217 Pointed the ChangeLog to the commits url 4 years ago
INSTALL ecb7df0e8b Support SSL for mysql connections (#1965) 8 months ago
LICENSE 4d508d8be2 Copied COPYING to LICENSE 5 years ago
NEWS f63f0e2256 Added miscellaneous files. 15 years ago bdbe334576 Fix travis build status (#2077) 1 week ago
TODO b37606ed9a update link to README to be 4 years ago ecb7df0e8b Support SSL for mysql connections (#1965) 8 months ago a9ebcd6e8a set email address to send complaints to 10 months ago
description-pak 1888bec092 Doing my best to manually remove nextime's plugin architecture while keeping his other changes. 4 years ago
version bd5f4020ca bump version 4 days ago ecb7df0e8b Support SSL for mysql connections (#1965) 8 months ago 254fcbcef7 update gpl 2 mailing address in source files 1 year ago 6c5dd0d395 Update 3 months ago
zoneminder-config.cmake da5438a6ff detect hardware accel capabilities 8 months ago


Build Status Bountysource

All documentation for ZoneMinder is now online at


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.

Contacting the Development Team

Before creating an issue in our github forum, please read our posting rules:

Our Dockerfile has moved

Please file issues against the ZoneMinder Dockerfile here:

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.

Please visit our ReadtheDocs site for distro specific instructions.

Package Maintainers

Many of the ZoneMinder configration variable default values are not configurable at build time through autotools or cmake. A new tool called has been added to allow package maintainers to manipulate any variable stored in 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/ ZM_OPT_CAMBOZOLA yes

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


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.