ZoneMinder video camera security and surveillance: Difference between revisions

From Alpine Linux
(Additional lighttpd configurations needed for latest version of zoneminder)
No edit summary
Line 2: Line 2:


ZoneMinder is found in the community repositories, please enable it by following the instructions [[Repositories#Enabling_the_community_repository|here]]
ZoneMinder is found in the community repositories, please enable it by following the instructions [[Repositories#Enabling_the_community_repository|here]]
==Base Install==


First, add the needed packages to our system
First, add the needed packages to our system


  apk add zoneminder mariadb mysql-client lighttpd php8-fpm php8-pdo php8-pdo_mysql
  apk add zoneminder mariadb mysql-client lighttpd php8-fpm php8-pdo php8-pdo_mysql
===Database===


Initialize [https://www.mysql.com/ MySQL] database
Initialize [https://www.mysql.com/ MySQL] database
Line 29: Line 33:


  mysql> grant ALL on zm.* to zmuser@localhost;
  mysql> grant ALL on zm.* to zmuser@localhost;
===Web Server===


We are running <code>lighttpd</code>, so let's run <code>php-fpm</code> as lighttpd user/group
We are running <code>lighttpd</code>, so let's run <code>php-fpm</code> as lighttpd user/group
Line 90: Line 96:
   
   
  # }}}
  # }}}
In order for video streaming to work in 1.36, you'll need the following config
added to /etc/lighttpd/lighttpd.conf:
server.stream-response-body = 1


Edit lighttpd cgi config and add old style cgi support by adding to cgi.assign
Edit lighttpd cgi config and add old style cgi support by adding to cgi.assign
Line 110: Line 121:


  /etc/init.d/lighttpd start
  /etc/init.d/lighttpd start
===Zoneminder===


Set the MySQL hostname, username, password.
Set the MySQL hostname, username, password.
Line 148: Line 161:
  chown lighttpd.lighttpd /etc/zm/zm.conf
  chown lighttpd.lighttpd /etc/zm/zm.conf


Zoneminder will create a cache in <code>/var/cache/zoneminder</code> which isn't created by default. Create this directory and allow lighttpd access to it:
Zoneminder will create a cache in <code>/var/cache/zoneminder</code> which isn't created by default. Create this directory and allow lighttpd access to it. Note that if you are using a diskless install, you must lbu add /var/cache/zoneminder.


  mkdir /var/cache/zoneminder
  mkdir /var/cache/zoneminder
Line 163: Line 176:


Profit!
Profit!
===Conclusion===


To access ZoneMinder, browse to <nowiki>http://yourserver/zm/</nowiki>
To access ZoneMinder, browse to <nowiki>http://yourserver/zm/</nowiki>

Revision as of 17:46, 4 November 2022

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

Base Install

First, add the needed packages to our system

apk add zoneminder mariadb mysql-client lighttpd php8-fpm php8-pdo php8-pdo_mysql

Database

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;

Web Server

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"

# }}}

In order for video streaming to work in 1.36, you'll need the following config added to /etc/lighttpd/lighttpd.conf:

server.stream-response-body = 1


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

Zoneminder

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. Note that if you are using a diskless install, you must lbu add /var/cache/zoneminder.

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!

Conclusion

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