Skip to content
ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.
PHP Perl C++ JavaScript C TSQL Other
Branch: master
Clone or download
Isaac Connor
Latest commit 886a203 Aug 21, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Request browser name and version for web issues (part 2) Feb 10, 2019
cmake update ENDMACRO Dec 8, 2018
conf.d remove ZM_DIR_IMAGES (#2374) Dec 29, 2018
db Merge branch 'master' into filter_add_copy Aug 7, 2019
distros Add maxage 7 to logrotate config so that it will clear out all the zm… Aug 16, 2019
docs Fix token auth sessions (#2676) Aug 20, 2019
icons/16x16 add an icon made from favicon.ico and a .desktop file to be install i… Apr 26, 2017
misc add May 27, 2019
onvif spelling mistakes Nov 29, 2018
scripts Clean up ugly hack in CopyTo. Do not modify the object resulting in c… Aug 13, 2019
src Support hwaccel for non-passthrough case as well Aug 21, 2019
utils cosmic is unsupported, don't build for it by default Aug 1, 2019
web use isset to get rid of warnings when eid is not in REQUEST Aug 20, 2019
.dockerignore Improve Docker build; reduce image size & layer count Jun 2, 2016
.eslintignore More eslint fixes; eslint in php; add eslint to travis (#2419) Jan 19, 2019
.eslintrc.js More eslint fixes; eslint in php; add eslint to travis (#2419) Jan 19, 2019
.gitignore Merge branch 'master' of into storag… Nov 17, 2016
.gitmodules remove bcrypt & jwt-cpp as submodules, bring in statically under src Jun 23, 2019
.travis.yml eol f27 support May 3, 2019 spelling fixes Dec 29, 2016
CMakeLists.txt stop bcrypt files from installing with zm Jun 23, 2019 merge master Sep 24, 2015
COPYING update gpl 2 statement Dec 26, 2016
LICENSE Copied COPYING to LICENSE Apr 12, 2013 fix slack join link (#2535) Feb 20, 2019 Support SSL for mysql connections (#1965) Aug 14, 2017 set email address to send complaints to Jun 6, 2017
version bumpv ersion for copy to filtet code Aug 7, 2019 Support SSL for mysql connections (#1965) Aug 14, 2017 update gpl 2 mailing address in source files Dec 26, 2016 Update Jan 17, 2018
zoneminder-config.cmake working hwdecode Jun 24, 2019


Build Status Bountysource

Join Slack

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 configuration 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 cambozola javascript file. However, by default cambozola support is turned off. To fix that, add this to the packaging 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.


You can’t perform that action at this time.