DVR on RaspBerry with ZoneMinder

Altro progetto, sviluppato e funzionante nel mio garage.
Stavolta il RaspBerry utilizzato è il pi 3, ultimo e più performante in casa raspberry ed ho deciso di dedicarlo alla video sorveglianza installando Zoneminder. Per chi non lo sapesse, Zoneminder dice wiki è:

ZoneMinder è un software open source utilizzato nell’ambito della videosorveglianza, sviluppato per Linux. è rilasciato sotto licenza GNU General Public License (GPL).

Andiamo a configurarlo, sul nostro rasp dopo aver installato come sempre la nostra distro stretch-lite.
Eseguiamo questi comandi:
sudo apt-get update
sudo apt-get upgrade
sudo apt install -y build-essential openssh-server apache2 mysql-server mysql-client bison flex php php7.0-curl php7.0-cli php7.0-mysql php-pear php7.0-gd curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev libasound2-dev libogg-dev libapache2-mod-php7.0 sendmail ffmpeg vlc vlc-data zoneminder
sudo rm -rf /etc/mysql/my.cnf
sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/my.cnf
Modifichiamo il file di configurazione di mariadb con:
sudo nano /etc/mysql/my.cnf
ed aggiungiamo:
sql_mode = NO_ENGINE_SUBSTITUTION
come riportato in basso:
user = mysql
sql_mode = NO_ENGINE_SUBSTITUTION
pid-file = /var/run/mysqld/mysqld.pid
mettiamo il tutto al sicuro, avviando lo script di autoconfigurazione di mysql:
sudo mysql_secure_installation
riavviamo il servizio del nostro db:
sudo service mariadb restart
sudo systemctl status mariadb.service
adesso effettuiamo le operazioni per la creazione dei database attinenti e i permessi del nostro zoneminder:
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
sudo chmod 740 /etc/zm/zm.conf
sudo chown root:www-data /etc/zm/zm.conf
sudo adduser www-data video
sudo a2enmod cgi
sudo a2enconf zoneminder
sudo a2enmod rewrite
sudo systemctl restart apache2
sudo chown -R www-data:www-data /usr/share/zoneminder/
sudo systemctl enable zoneminder
sudo service zoneminder start

Configuriamo il sudo nano /etc/sysctl.confe togliamo il cancelletto a:

net.ipv4.ip_forward=1

e successivamente cambiamo la policy di forward in ACCEPT da:

sudo nano /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

modifichiamo adesso il l’ /etc/init.d/zoneminder:
sudo nano /etc/init.d/zoneminder
ed aggiungiamo…. sleep 15 nella riga mostrata.
start() {
sleep 15
echo -n “Starting $prog: ”
Adesso diciamo al nostro config che siamo su Europe/Rome e modifichiamo il php.ini:
sudo nano /etc/php/7.0/apache2/php.ini
date.timezone = Europe/Rome
riavviamo il servizio:
sudo systemctl restart apache2
Installiamo cambzola (necessario se si utilizza I.E.):
cd /usr/src && wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
sudo tar -xzvf cambozola-latest.tar.gz
sudo cp cambozola-0.935/dist/cambozola.jar /usr/share/zoneminder
sudo service zoneminder restart

 

zoneminder sarà attivo e raggiungibile all’indirizzo https://localhost/zm
 
Se dovessimo avere questo errore (Unable to authenticate user) nel LOG una volta aggiunta la CAM, dobbiamo intervenire su AUTHY_RELAY in impostazione di ZM e spuntare su none.
(purtroppo, almeno alla versione che scrivo questo articolo, non è stato risolto il bug).

Per utilizzare un ssd esterno come storage, bisogna configurare /etc/fstab per il montaggio automatico:
sudo systemctl stop zoneminder
sudo mkdir -p /ssd/zoneminder/events/
sudo rm -rf /var/cache/zoneminder/events/
sudo nano /etc/fstab
ed aggiungere le righe in basso:
/dev/sdX1(sta per il vostro nome dell’hd collegato) /ssd ext4 defaults 0 2
/ssd/zoneminder/images /var/cache/zoneminder/images none defaults,bind 0 2
/ssd/zoneminder/events /var/cache/zoneminder/events none defaults,bind 0 2
eccoci al termine, per poter scrivere sul nuovo storage servono i permessi:
sudo chown -R www-data:www-data /ssd/zoneminder/
riavviamo il tutto con sudo reboot
Abbiamo installato il nostro servizio, zoneminder sul raspberry, aggiungendo le telecamere adesso tramite l’interfaccia web sarà un gioco da ragazzi impostare e registrare come un DVR normalissimo.
Al prossimo articolo!