ZoneMinder video camera security and surveillance
ZoneMinder usually runs with Apache, but in this short how-to we use Lighttpd.
ZoneMinder is found in the community repositories, please enable it by following the instructions here
First, add the needed packages to our system
apk add zoneminder mariadb mysql-client lighttpd php8-fpm php8-pdo php8-pdo_mysql
Initialize MySQL database
/etc/init.d/mariadb setup
Start the database
/etc/init.d/mariadb start
Set root password for MySQL as instructed by MySQL setup
/usr/bin/mysqladmin -u root password 'your_secure_root_mysql_password'
You can log into MySQL as current root user with
mysql
Create a ZoneMinder MySQL database and user
mysql> create database zm;
mysql> CREATE USER zmuser@localhost IDENTIFIED BY 'your_zm_password_as_set_in_config';
mysql> grant ALL on zm.* to zmuser@localhost;
We are running lighttpd
, so let's run php-fpm
as lighttpd user/group
vi /etc/php8/php-fpm.conf
Add this section to the bottom of the file:
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ;user = nobody ;group = nobody user = lighttpd group = lighttpd
Enable the php cgi fpm config in lighttpd.conf
vi /etc/lighttpd/lighttpd.conf
Go down to the server modules section and uncomment mod_alias
, which is needed for the cgi-bin. It should look like:
# {{{ modules # At the very least, mod_access and mod_accesslog should be enabled. # All other modules should only be loaded if necessary. # NOTE: the order of modules is important. server.modules = ( # "mod_rewrite", # "mod_redirect", "mod_alias", "mod_access", # "mod_cml", # "mod_trigger_b4_dl", # "mod_auth", # "mod_status", # "mod_setenv", # "mod_proxy", # "mod_simple_vhost", # "mod_evhost", # "mod_userdir", # "mod_deflate", # "mod_ssi", # "mod_usertrack", # "mod_expire", # "mod_secdownload", # "mod_rrdtool", # "mod_webdav", "mod_accesslog" ) # }}}
Go down to the includes section, it should look like:
# {{{ includes include "mime-types.conf" # uncomment for cgi support include "mod_cgi.conf" # uncomment for php/fastcgi support # include "mod_fastcgi.conf" # uncomment for php/fastcgi fpm support include "mod_fastcgi_fpm.conf" # }}}
Edit lighttpd cgi config and add old style cgi support by adding to cgi.assign
vi /etc/lighttpd/mod_cgi.conf
which should look like
cgi.assign = ( "" => "", ".pl" => "/usr/bin/perl", ".cgi" => "/usr/bin/perl" )
Start php-fpm
/etc/init.d/php-fpm8 start
Start lighttpd
/etc/init.d/lighttpd start
Set the MySQL hostname, username, password.
Change the ZoneMinder user (ZM_WEB_USER
) and group (ZM_WEB_GROUP
) to lighttpd
And set ZM_SERVER_HOST
to your ZoneMinder hostname/ipaddress
vi /etc/zm/zm.conf
Which should look like:
# Username and group that web daemon (httpd/apache) runs as ZM_WEB_USER=lighttpd ZM_WEB_GROUP=lighttpd ZM_PATH_DATA=/usr/share/zoneminder
# ZoneMinder database type: so far only mysql is supported ZM_DB_TYPE=mysql # ZoneMinder database hostname or ip address ZM_DB_HOST=localhost # ZoneMinder database name ZM_DB_NAME=zm # ZoneMinder database user ZM_DB_USER=zmuser # ZoneMinder database password ZM_DB_PASS=your_zm_password_as_set_in_config # Host of this machine ZM_SERVER_HOST=yourserver
Change ownership of zm.conf
to lighttpd
chown lighttpd.lighttpd /etc/zm/zm.conf
Zoneminder will create a cache in /var/cache/zoneminder
which isn't created by default. Create this directory and allow lighttpd access to it:
mkdir /var/cache/zoneminder chown lighttpd.lighttpd /var/cache/zoneminder
Initialize the ZoneMinder database
/etc/init.d/zoneminder setup
Start ZoneMinder
/etc/init.d/zoneminder start
Profit!
To access ZoneMinder, browse to http://yourserver/zm/
To make it start automatically on boot:
rc-update add lighttpd default rc-update add mariadb default rc-update add php-fpm8 default rc-update add zoneminder default
Added notes to work with Nginx
Later to add some notes about running via nginx
Related Links
- https://wiki.alpinelinux.org/wiki/Raspberry_Pi_3_-_Browser_Client - Kiosk to watch Streams