Instalacja i konfiguracja Zoneminder kompletnego rozwiązania do systemu monitoringu z kamer

Przygotowanie maszyny wirtualnej Proxmox

Podstawą ZoneMinder jest maszyna wirtualna z zainstalowanym systemem Ubuntu 22.04 z 4 vCPU / 8 GB RAM / 2 x 16 GB HDD. Konfiguracja jest skrojona pod 4 kamery Hikvision i ciągły zapis z kodowaniem do H.264 przez ZoneMinder. Pierwszy dysk jest zamontowany jako / (EXT4) a drugi jako  /var (EXT4) i przeznaczony głównie na logi oraz swapa. W trakcie instalacji ustawiono statyczny adres ip maszyny oraz wybrano instalację z dodatkowego oprogramowania tylko serwer SSH.

Instalacja Ubuntu 22.04 w maszynie wirtualnej Proxmox VE

Proces instalacji Ubuntu 22.04 w maszynie wirtualnej Proxmox VE został opisany na stronie Instalacja Ubuntu 22.04 w maszynie wirtualnej Proxmox VE – IT Admin (vblog.ovh)

Wstępna konfiguracja systemu Ubuntu

Proces przygotowania systemu Ubuntu do pracy pomiędzy zakończeniem pracy instalatora Ubuntu a instalacją właściwego oprogramowania np. ZoneMinder opisany jest na stronie Konfiguracja i konserwacja systemu Linux Ubuntu – IT Admin (vblog.ovh)

Instalacja ZoneMinder z konsoli systemu Ubuntu 22.04

# instalujemy LAMP-a
sudo apt install apache2 mysql-server php
sudo systemctl enable --now apache2 mysql
sudo systemctl status apache2 mysql --no-pager -l

# instalujemy ZoneMinder
sudo add-apt-repository ppa:iconnor/zoneminder-1.36
sudo apt update && sudo apt upgrade
sudo apt install zoneminder

# nadajemy odpowiednie uprawnienia
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/

#  włączamy odpowiednie moduły apache
sudo a2enmod cgi rewrite expires headers

# włączamy konfigurację zoneminder dla apache (/etc/apache2/conf-available/zoneminder.conf)
sudo a2enconf zoneminder

# poprawiamy konfigurację PHP 8.1
sudo nano /etc/php/*/apache2/php.ini
date.timezone = Europe/Warsaw

Przygotowujemy konfigurację MySQL dodając na końcu pliku /etc/mysql/my.cnf:  sql_mode = NO_ENGINE_SUBSTITUTION

sudo nano /etc/mysql/my.cnf

[mysqld]
user            = mysql
# pid-file      = /var/run/mysqld/mysqld.pid
# socket        = /var/run/mysqld/mysqld.sock
# port          = 3306
# datadir       = /var/lib/mysql
bind-address            = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1
key_buffer_size         = 16M
myisam-recover-options  = BACKUP
log_error = /var/log/mysql/error.log
max_binlog_size   = 100M
sql_mode = NO_ENGINE_SUBSTITUTION

Restartujemy usługi mysql, apache oraz włączamy i uruchamiamy usługę zoneminder

systemctl restart mysql
sudo systemctl reload apache2
sudo systemctl enable zoneminder && sudo systemctl start zoneminder

Logujemy się do interfejsu www ZoneMinder http://adres_ip/zm/, login: admin, hasło: admin

Konfiguracja ZoneMinder w webowym GUI

Moja obecna konfiguracja ZoneMinder jest przedstawiona na zrzutach ekranu i można porównać ją z domyślna konfiguracją ZoneMinder u siebie. Ustawiona jest pod ciągłe nagrywanie w plikach mp4 jak najdłuższego czasowo okna.

 

Przykładowe ustawienia kamery Hikvision DS-2CD1043G0-I w ZoneMinder

 

Ustawienia strumienia kamery Hikvision DS-2CD1043G0-I

Włączenie trybu Internet Explorer w Edge

Jeśli nie możemy wejść na stronę konfiguracji kamery Hikvision z poziomu Chrome / Firefox / Edge to należy w przeglądarce Edge wpisać w pasku adresu edge://settings/defaultbrowser i dodać stronę kamery do pozycji Strony trybu Internet Explorer.

Automatyczne usuwanie starszych nagrań

Wchodzimy w menu Filters i dodajemy nowy filtr z odpowiednimi opcjami jak poniżej. Więcej informacji o filtrach zoneminder można znaleźć na tej stronie https://wiki.zoneminder.com/Filters oraz https://zoneminder.readthedocs.io/en/stable/userguide/filterevents.html

Uruchomienie filtra zoneminder w celach testowych z linii komend

sudo zmfilter.pl --filter=3

06/17/2023 07:11:30.866986 zmfilter[18365].INF [main:181] [Scanning for events using filter '3']
06/17/2023 07:11:30.868336 zmfilter[18365].WAR [main:276] [No filter found for SELECT * FROM `Filters` WHERE `Name` = ? AND( `AutoArchive` = 1
    or `AutoUnarchive` = 1
    or `AutoVideo` = 1
    or `AutoUpload` = 1
    or `AutoEmail` = 1
    or `AutoMessage` = 1
    or `AutoExecute` = 1
    or `AutoDelete` = 1
    or `UpdateDiskSpace` = 1
    or `AutoMove` = 1
    or `AutoCopy` = 1
    ) ORDER BY `Name` with values(3)]