dlandon / zoneminder.machine.learning

Zoneminder Docker
GNU General Public License v2.0
320 stars 144 forks source link

Zoneminder Docker (Deprecated)

(Current version: 1.36)

This container will no longer be maintained or updated. The current ZM Event Server is being phased out at the end of 2021 and this container will not be updated when a new ZM Event Server is released.

About

This is an easy to run dockerized image of ZoneMinder along with the the ZM Event Notification Server and its machine learning subsystem.

The configuration settings that are needed for this implementation of Zoneminder are pre-applied and do not need to be changed on the first run of Zoneminder.

This version will now upgrade Zoneminder from previous versions.

You can donate here.

Support

There is minimal support for this docker container at this time.

Go to the Zoneminder Forum here for support.

Installation

Install the docker container by going to a command line and enter the command:

docker pull dlandon/zoneminder.machine.learning

This will pull the zoneminder docker image. Once it is installed you are ready to run the docker container.

Before you run the image, feel free to read the configuration section below to customize various settings.

To run Zoneminder:

docker run -d --name="Zoneminder" \
--net="bridge" \
--privileged="false" \
--shm-size="8G" \
-p 8443:443/tcp \
-p 9000:9000/tcp \
-e TZ="America/New_York" \
-e PUID="99" \
-e PGID="100" \
-e MULTI_PORT_START="0" \
-e MULTI_PORT_END="0" \
-v "/mnt/Zoneminder":"/config":rw \
-v "/mnt/Zoneminder/data":"/var/cache/zoneminder":rw \
dlandon/zoneminder.machine.learning

For http:// access use: -p 8080:80/tcp

Shared Memory

Set shared memory to half of your installed memory.

Subsequent runs

You can start/stop/restart the container anytime. You don't need to run the command above every time. If you have already created the container once (by the docker run command above), you can simply do a docker stop Zoneminder to stop it and a docker start Zoneminder to start it any time (or do a docker restart Zoneminder).

Customization

User Script

You can enable a custom user script that will run every time the container is started.

Put your script in the /mnt/Zoneminder/ folder and name it userscript.sh. The script will be executed each time the container is started before Zoneminder is started. Be sure to chmod +x userscript.sh so the script is executable. Set ADVANCED_SCRIPT="1" environment variable to enable your script.

Adding Nvidia GPU support to the Zoneminder.

You will have to install support for your graphics card. If you are using Unraid, install the Nvidia plugin and follow these instructions. On other systems install the Nvidia docker, see here.

After you confirm the graphics card is seen by the Zoneminder docker container, you can then compile opencv with GPU support. Be sure your container can see the graphics card. Read the opencv.sh script for instructions on how to download the packages needed for compiling opencv. You will need to get a developer account for some of the packages because of licensing. Get into the docker command line by docker exec -it Zoneminder /bin/bash and do this once you have the packages:

cd /config/opencv
./opencv.sh

This will compile the opencv with GPU support. It takes a LONG time. You should then have GPU support.

You will have to install the CuDNN runtime yourself based on your particular setup.

Post install configuration and caveats

Usage

To access the Zoneminder GUI, browse to: https://<your host ip>:8443/zm or http://<your host ip>:8080/zm if -p 8080:80/tcp is specified.

The zmNinja Event Notification Server is accessed at port 9000. Security with a self signed certificate is enabled. You may have to install the certificate on iOS devices for the event notification to work properly.

Troubleshooting when the container fails

If you have a situation where the container fails to start, you can set NO_START_ZM="1" as an environment variable - this will spin up the container but will not automatically start the MySql and Zoneminder processes. This way, you can get into a command line in the container (docker exec -it Zoneminder /bin/bash) and troubleshoot your issue by using the following commands to start MySql and Zoneminder and fix any errors/problems with them starting.

service mysql start
service zoneminder start