Best Practices


System Design

  1. Avoid using WiFi. 802.11 WiFi. It is not reliable. You still have to run a power cable to the camera. Use a powerline adapter if there is some reason you have chosen not to run a data cable to the camera.
  2. 5 frames per second is plenty for all general surveillance. You are not trying to record a Hollywood movie. At 5 fps you will not miss an important event, even if the object is moving quickly. Try it. Recording at a high frame wastes disk space in the best case. In the worst case, the extra resources required to run at that frame rate are the root cause of your cameras, or entire system, dropping out every now and then.
  3. Do not use WiFi! 802.11 WiFi devices share the total bandwidth of the WiFi network and use carrier sense collision avoidance, to avoid transmitting data at the exact same instant in time. This drastically affects performance when compared to modern, switched Ethernet. 
  4. Dedicate an entire disk, partition, or network volume to the recording of events. See the System Tuning section below for details.

Camera Configuration

  1. For modern ip cameras, the source type most likely to work best is ffmpeg. Only use another source type if there is some kind of problem using ffmpeg. The libvlc source type was introduced to give you options, for example, in case of the infamous ffmpeg smearing issue. The Remote source type was originally designed for, now old, mjpeg cameras. The Remote source type is least likely to work correctly with modern h264 ip cameras and should be avoided. Additionally, this source type is no longer being maintained. It may go away in the future since it is mostly redundant, even when it does work correctly.

Camera Positioning/Field of View 

  1. Keep light sources out of the camera's field of view. Light sources wash out the image.
  2. Avoid aiming indoor cameras directly at an exterior door or window. These act like a light source and will wash out the image. Instead, mount the camera just above the door or window.

Motion Detection

  1. If using motion detection, you must tune your motion detection zones. If you are using outdoor cameras, do not rely on the motion detection presets. First, read the documentation describing how to set up motion zones. Then enable blob detection, and configure the zone to be (much) more sensitive than it needs to be.

First Run/System Tuning

  1. Some Linux distros, including all Redhat based distros, ship with the firewall enabled. Consequently, if you intend to access the ZoneMinder web portal from a remote machine, you have to either disable the firewall service or preferably poke holes in it. Also note that the default firewall service is different for different distros. CentOS 6 uses iptables, but CentOS 7 and Fedora distros use firewalld. Consult the documentation for the firewall service in use on your distros for further details.
  2. By design, surveillance recording software will fill up your disk. Consequently, production systems should dedicate an entire partition or drive to nothing but ZoneMinder's event folder.
  3. Once the disk reaches 95% full, one must verify the default purge filter is working sufficiently. Keep an eye on the disk over a period of a couple weeks. If it is working correctly, the disk should bounce +- 2% of the threshold. If it gets higher than that, risking a disk full condition, then you should increase the limit from 100 matches to something larger. A good time to test this is during a storm if you have outdoor cameras, as many events will be generated. If it drops lower than 2% below the threshold, then you may be deleting too many events at one time. With today's modern, large drives this is less likely to be the case.
  4. Tune the mysql database engine using mysqltuner. Insert link for instructions.