Debian 10 Buster with Zoneminder 1.36.x from ZM Repo
Debian 10 Buster with Zoneminder 1.32.3 from the Debian Multimedia Repository
Install Debian Buster. I used the net install CD and installed only SSH server and standard system utilities from tasksel.
You will need to install LAMP. One good guide to do this can be found here:
https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-on-debian-10
Install Zoneminder
Add the Deb Multimedia repository. (instructions at: https://deb-multimedia.org/)
Edit sources.list
sudo nano /etc/apt/sources.list
Add to the end of the file:
deb http://www.deb-multimedia.org buster main non-free
Ctrl+o Enter to save
Ctrl+x to exit
After you have added the necessary line in /etc/apt/sources.list the first package to install is deb-multimedia-keyring.
wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
sudo dpkg -i deb-multimedia-keyring_2016.8.1_all.deb
sudo apt update
Install Zoneminder
sudo apt install zoneminder vlc-plugin-base
Create Zoneminder database in MySQL (Note: this also creates the default Zoneminder user and permissions in MySQL)
sudo mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
sudo mysql -uroot -p -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
sudo mysqladmin -uroot -p reload
Set permissions
sudo chmod 740 /etc/zm/zm.conf
sudo chown root:www-data /etc/zm/zm.conf
sudo chown -R www-data:www-data /usr/share/zoneminder/
sudo chown -R www-data:www-data /var/cache/zoneminder/
Enable Zoneminder service to start at boot
sudo systemctl enable zoneminder.service
Add www-data to the sudo group (to enable use of local video devices)
sudo adduser www-data video
Start Zoneminder
sudo systemctl start zoneminder.service
Check to see that Zoneminder is running
sudo systemctl status zoneminder.service
Enable CGI and Zoneminder configuration in Apache.
sudo a2enmod cgi
sudo a2enmod rewrite
sudo a2enconf zoneminder
Add timezone to PHP
sudo nano /etc/php/7.3/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 = America/New_York
Ctrl+o Enter to save
CTRL+x to exit
Note: 18JUL19 - A fix for the below has been submitted to deb-multimedia and may not be required. Good idea to check zoneminder.conf, though.
To get the API working you need to Edit zoneminder.conf. Here is an example of wht your file should look like:
https://github.com/ZoneMinder/zoneminder/blob/master/distros/ubuntu1604/conf/apache2/zoneminder.conf
First make a copy of zoneminder.conf
sudo cp /etc/apache2/conf-enabled/zoneminder.conf /etc/apache2/conf-enabled/zoneminder.sav
Next, edit the file
sudo nano /etc/apache2/conf-enabled/zoneminder.conf
At the end of the file add these three entries:
<Directory /usr/share/zoneminder/www/api> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] RewriteBase /zm/api </Directory>
<Directory /usr/share/zoneminder/www/api/app> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] RewriteBase /zm/api </Directory>
<Directory /usr/share/zoneminder/www/api/app/webroot> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] RewriteBase /zm/api </Directory>
Ctrl+o Enter to save
CTRL+x to exit
Restart Apache
sudo service apache2 restart
All done! Navigate to http://serverip/zm