Ubuntu Server 19.10 Zoneminder 1.33.x
Zoneminder 1.32 made it into the "official" Ubuntu 19.04 repositories. Unfortunately the MP4 recording and playback does not work with the shipped version as there are missing libraries (libmp4v2-2). So events can only be saved in jpeg-frames, video recordings do not happen. [State: 01 MAY 2019]
These instructions will show how to install Zoneminder 1.32-3 from the iconnor ppa with mp4 support to use video recordings.
N.B.: The version from iconnor ppa has an issue with the required dependencies for libx264 on Ubuntu 19.04, we have to correct this by manually repacking the deb-package.
You will need to install LAMP then secure MySQL before installing Zoneminder. see: https://help.ubuntu.com/community/ApacheMySQLPHP
Preparations
Install needed packages:
sudo apt-get install x264 x265 build-essential checkinstall gdebi
Secure MySQL or Mariadb:
mysql_secure_installation
Add entry into my.cnf:
nano /etc/mysql/my.cnf
Add the following to the end of the file:
[mysqld] sql_mode = NO_ENGINE_SUBSTITUTION
CTRL + o CTRL + x
Restart MySQL:
service mysql restart
Install the official repository for the current stable version 1.32:
sudo add-apt-repository ppa:iconnor/zoneminder-1.32
Now installing zoneminder by "sudo apt-get install zoneminder" will not work because of missing dependencies (as of 05/01/2019)
Installing libmp4v2-2
Download and compile libmp4v2-2:
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/mp4v2/mp4v2-2.0.0.tar.bz2 tar xf mp4v2-2.0.0.tar.bz2 cd mp4v2-2.0.0/ mkdir build/ && cd build/ ../configure CXXFLAGS='-fpermissive' CFLAGS='-fpermissive' make
Don't leave this folder.
Install libmp4v2-2 as debian package:
sudo checkinstall
Follow the instructions on the screen. Enter anything for the description (e.g. Libraries for Zoneminder MP4 support). On the table of values: change the entries as following:
- Name=libmp4v2-2
- Version=2.0
- Provides=libmp4v2-2
Repacking zoneminder deb-package and installation
We have to repack the zoneminder deb-package to fix the dependencies issue (libx264-155).
Download the current deb-package:
wget https://launchpad.net/~iconnor/+archive/ubuntu/zoneminder-1.32/+files/zoneminder_1.32.3-disco_amd64.deb
Extract the deb-package:
ar x zoneminder_1.32.3-disco_amd64.deb tar xf control.tar.xz
Rewrite the required dependencies:
nano control
search for "libx264-155" and move it after "libx264-152 | ".
Repack the deb-package:
tar c {post,pre}{inst,rm} md5sums control | gzip -c > control.tar.gz ar rcs zoneminder_1.32.3-disco_repacked_amd64.deb debian-binary control.tar.gz data.tar.xz
Install Zoneminder:
sudo gdebi zoneminder_1.32.3-disco_repacked_amd64.deb
Other missing dependencies will automaticely be installed.
Post-installation procedures
Create the Database:
The database is not created automatically. Create the database with:
mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
mysqladmin -uroot -p reload
Fix permissions:
chmod 740 /etc/zm/zm.conf chown root:www-data /etc/zm/zm.conf chown -R www-data:www-data /usr/share/zoneminder/
Enable Apache features:
sudo a2enmod cgi sudo a2enmod rewrite sudo a2enconf zoneminder sudo service apache2 restart
Add user www-data to group video, for accessing local cameras:
sudo adduser www-data video sudo usermod -a -G video www-data
Enable Zoneminder service:
systemctl enable zoneminder.service
Add timezone to PHP:
sudo nano /etc/php/7.2/apache2/php.ini
Search for [Date] (Ctrl + w then type Date and press Enter) and make changes as follows for your time zone
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = Europe/Luxembourg
CTRL +o Enter to save, then CTRL +x to exit
Finally, restart Apache and zoneminder
sudo service apache2 reload sudo service zoneminder restart
Zoneminder should work! Open Zoneminder in a web browser (http://server-ip/zm).
Install Zoneminder with MP4 support on Ubuntu 19.04 AMD64 with shell script
This will install Zoneminder by using a shell script with one basic command (how easy is that!).
You will need a Ubuntu 19.04 installed desktop or server. This script installs Apache2, Mariadb Server and PHP. If you want to use MySQL replace mariadb-server with mysql-server in the script.
Become root
sudo su
Create the install file
nano install-zm
Copy the following into the file
#!/bin/sh clear read -p "This script installs Apache2, Mariadb Server, PHP and Zoneminder 1.32.3 with MP4 support on Ubuntu 19.04 AMD64. Press Enter to continue or Ctrl + c to quit" nothing clear read -p "You must be logged in as root using sudo su before running this script... The script will stop and prompt for user action as required Press Enter to continue or Ctrl + c to quit" nothing clear apt -y install apache2 php mariadb-server php-mysql libapache2-mod-php7.2 x264 x265 gdebi clear read -p "Next secure MySQL server by entering requested information. Press enter to continue" nothing mysql_secure_installation clear read -p "Next we will download the libmp4v2 package and install it. Press enter to continue" nothing wget --no-check-certificate https://173.163.189.225/libmp4v2-2_2.0-1_amd64.deb -P /tmp/ apt -y install /tmp/libmp4v2-2_2.0-1_amd64.deb clear read -p "Next we will download the Zoneminder (patched) package and install it. Press enter to continue" nothing wget --no-check-certificate https://173.163.189.225/zoneminder_1.32.3-disco_repacked_amd64.deb -P /tmp/ awk '$0="date.timezone = "$0' /etc/timezone >> /etc/php/7.2/apache2/php.ini gdebi /tmp/zoneminder_1.32.3-disco_repacked_amd64.deb systemctl enable zoneminder service zoneminder start adduser www-data video a2enmod cgi a2enconf zoneminder a2enmod rewrite chmod 740 /etc/zm/zm.conf chown root:www-data /etc/zm/zm.conf chown -R www-data:www-data /usr/share/zoneminder/ service apache2 reload clear read -p "Open Zoneminder in a web browser (http://server-ip/zm). Press enter to continue" nothing clear
Save and close the file
CTRL+o CTRL+x
Set permissions
chmod 755 install-zm
Run the file
./install-zm
The script will prompt for user action several times. I have run this script installing Mariadb or MySQL with a functional system with either database server. I do, however, prefer Mariadb. I also recommend running mysqltuner after adding cameras and periodically to tune database settings as events are stored.
You do not need to add the Zoneminder PPA for this install but it may be needed in the future when Zoneminder is updated.