ITA - ZoneMinder
October 2020 (575 Words, 4 Minutes)
Introduzione
ZoneMinder è un software gratuito e open-source sviluppato per implementare un sistema di monitoraggio a circuito chiuso che funzioni su Linux e FreeBSD, rilasciato sotto i temrini della GNU General Public License (GPL).
ZoneMinder fornisce agli utenti un’interfaccia web, i quali possono controllante camere standard (via a capture card, USB, FireWire etc.) o IP-based ( conpatibile con lo standard ONVIF ).
Questo software prevede tre modalità d’uso:
- monitoring (senza registrare)
- attivare la registrazione dopo aver rilevato un movimento
- registrazione permanente
NB: la guida di installazione che segue è applicabile a un sistema arch based
Installazione
Prerequisiti
Prima di incominciare è importante disporre sulla propria installazione di un AUR helper, e aver letto preparato un server LAMP come descritto qui
Installazione
Installazione dei pacchetti
Di solito io sono più propenso a installare manulamente i software presenti su AUR perchè di solito permette di mantenere una maggiore consapevolezza di cosa stai installando e dove.
Dopo aver dato una lettura alla quantità di dipendendeze del pacchetto di zoneminder presente su aur… ho deciso di usare un helper:
yay install zoneminder
pacman -S php-apcu-bc
Il sistema inizierà a installare le dipendenze dai repo ufficiali e a scaricare e compilare quelle da aur, vi consiglio di andare a prendervi un caffè perchè a meno che non lo stiate facendo su una macchina molto ben equipaggiata richiederà un po’ di tempo.
Configurazione di PHP
Il pacche di zone minder dovrebbe creare il file /etc/php/conf.d/zoneminder.ini
, controllare che esista, se non esistesse abilitare le seguenti estensioni:
extension=ftp
extension=gd
extension=gettext
extension=pdo_mysql
extension=sockets
extension=zip
poi aprire il file /etc/php/conf.d/apcu.ini
e decommentare il modulo:
[stethewwolf@fenrir ~]$ more /etc/php/conf.d/apcu.ini
;extension=apcu.so
; install php-apcu-bc and enable apc.so for APC compatibility
extension=apc.so
Configurazione di apache
Moduli del server
Modificare il file /etc/httpd/conf/httpd.conf
e assicurarsi che le seguenti linee siano decommentate:
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
LoadModule rewrite_module modules/mod_rewrite.so
VirtualHost
Il file proposto dal manutentore del pacchetto ha due caratteristiche che non mi piacciono :
- espone l’interfaccia tramite location,cioè un url del tipo
http://ip/zoneminder
- usa il servizio
php-fpm.service
per interpretare il codice php.
Invece quello che voglio io è :
- raggiungere il sito trmite
http://zm.localdomain.local
- non preoccuparmi delle questioni di sicurezza legate o architetturali legate ad apche che interpreta il php, questo sito rimarrà in esecuzione su una rete privata.
Quindi ho modificato il file /etc/httpd/sites-available/zoneminder.conf
fornito dal manutentore del pacchetto nel seguente modo :
<VirtualHost *:80>
ServerName zm.localdomain.local
ServerAdmin stefano-prina@outlook.it
DocumentRoot /usr/share/webapps/zoneminder/www
ScriptAlias /cgi-bin /usr/share/webapps/zoneminder/cgi-bin
<Directory /usr/share/webapps/zoneminder/cgi-bin>
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
Alias /cache /var/lib/zoneminder/cache
<Directory /var/lib/zoneminder/cache>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /usr/share/webapps/zoneminder/www>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
DirectoryIndex index.php
</Directory>
<Directory /usr/share/webapps/zoneminder/www/api>
RewriteEngine On
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
RewriteBase /api
</Directory>
<Directory /usr/share/webapps/zoneminder/www/api/app>
RewriteEngine On
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
RewriteBase /api
</Directory>
<Directory /usr/share/webapps/zoneminder/www/api/app/webroot>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteBase /api
</Directory>
</VirtualHost>
successivamente creo il link per abilitare il sito
ln -s /etc/httpd/sites-available/zoneminder.conf /etc/httpd/sites-enabled/
prima di riavviare il server controllo che la configurazione sia corretta: apachectl configtest
, se non appaiono errori si esegue : systemctl restart httpd
Configurazione del database
Editare il file /etc/my.cnf.d/server.cnf
nella sezione [mysqld]
inserire la seguente linea:
sql_mode = NO_ENGINE_SUBSTITUTION
dopo di questo è necessario riavviare il server : systemctl restart mariadb
a questo punto è necessario creare il database e l’utente:
$ mysql -u root -p
CREATE DATABASE zm;
CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';
GRANT ALL ON zm.* TO 'zmuser'@'localhost';
exit
come ultimo passo si riportano i dati sul file di configurazione /etc/zm.conf
:
ZM_DB_HOST=localhost
ZM_DB_NAME=zm
ZM_DB_USER=zmuser
ZM_DB_PASS=zmpass
Abilitare il servizio di sistema
A questo punto siamo pronti per avviare zoneminder :
systemctl enable --now zoneminder
Configurazione
Configurazione delle camere
Tratterò la configurazione delle camere in articoli successivi magari inserendo anche delle recensioni sulle camere, in generale fare riferimento a questa guida
Riferimenti
- https://en.wikipedia.org/wiki/ZoneMinder
- https://wiki.zoneminder.com/Arch_Linux
- https://wiki.archlinux.org/index.php/ZoneMinder
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk