Home

ITA - ZoneMinder

smarthome linux archlinux zoneminder

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:

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 :

Invece quello che voglio io è :

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