В данной статье приводится прцесс установки пакета ZoneMinder — на сегодняшний день (по нашему мнению) лучшего бесплатного комплексного решения для камер видеонаблюдения с открытым исходным кодом для Linux и распространяемого с лицензией GPL.
Коммерческие «системы безопасности» часто разрабатываются как системы мониторинга, при этом мало внимания уделяется качеству записи. В такой системе поиск и экспорт соответствующего видео может быть сложной задачей и часто требует значительного вмешательства человека. ZoneMinder был разработан для обеспечения наилучшего качества записи, позволяя легко искать, фильтровать и экспортировать кадры с камер наблюдения.
ZoneMinder разработан на основе ряда независимых компонентов, которые функционируют только тогда, когда это необходимо, ограничивая любые потери ресурсов и максимально повышая эффективность вашей машины. К устаревшему ПК с процессором Pentium II может быть подключено несколько записывающих устройств, и он способен отслеживать одну камеру на устройство со скоростью до 25 кадров в секунду, что снижается примерно вдвое для каждой дополнительной камеры на том же устройстве. Дополнительные камеры на устройствах, которые не взаимодействуют с другими устройствами, могут поддерживать частоту кадров 25 в секунду. Мониторинг нескольких камер не будет перегружать ЦП, поскольку обработка кадров синхронизируется с захватом.
Начните с базовой установки Ubuntu 22.04. Вы можете использовать серверную или настольную установку. Не устанавливайте LAMP!!!
Установите компоненты Nginx, Mariadb и PHP:
$ sudo apt install nginx mariadb-server php-fpm php-mysql fcgiwrap
Подправим безопасность Mariadb:
$ sudo mysql_secure_installation
и перезагрузим сервер Mariadb:
$ sudo systemctl restart mysql
Правим файл php.ini (Если у вас версия PHP отличная от 8.1 — подправьте номер версии!)
$ sudo nano /etc/php/8.1/fpm/php.ini
Найдите (Ctrl+w) cgi.fix_pathinfo=1 и замените на
cgi.fix_pathinfo=0
Не забудьте удалить ; в начале строки!
Ctrl+o Enter для сохранения
CTRL+x для выхода
Перестартуем php-fpm
$ sudo systemctl restart php8.1-fpm
Добавим репозиторий ppa
ПРИМЕЧАНИЕ. Возможно, вам придется запустить: «apt install software-properties-common», если вы выполнили минимальную сетевую установку Ubuntu.
$ sudo add-apt-repository ppa:iconnor/zoneminder-1.35
На момент написания самая свежая стабильная версия — 1.35
Установим Zoneminder
$ sudo apt install zoneminder
Добавим пользователей
$ sudo adduser www-data video
Меняем ZM_PATH_ZMS в файле 01-system-paths.conf на /cgi-bin/nph-zms, удалив /zm/
$ sudo nano /etc/zm/conf.d/01-system-paths.conf
Включаем и запускаем Zoneminder
$ sudo systemctl enable zoneminder $ sudo service zoneminder start
Отредактируем конфигурацию Ngnix по умолчанию.
$ sudo nano /etc/nginx/sites-available/default
Найдите строку «index index.html index.htm index.nginx-debian.html;» и добавьте index.php
index index.php index.html index.htm index.nginx-debian.html;
В разделе «сервер» после listen [::] :80 default_Server; добавить
include /etc/nginx/zoneminder.conf;
Создадим конфигурационный файл Zoneminder — /etc/nginx/zoneminder.conf
$ sudo nano /etc/nginx/zoneminder.conf
Введите следующее в файл zoneminder.conf. Измените «php8.1-fpm.sock» на вашу версию PHP.
location /cgi-bin { auth_basic off; alias /usr/lib/zoneminder/cgi-bin; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param HTTP_PROXY ""; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /zm/cache { auth_basic off; alias /var/cache/zoneminder/cache; } location ~ /zm/api/(css|img|ico) { auth_basic off; rewrite ^/zm/api(.+)$ /api/app/webroot/$1 break; try_files $uri $uri/ =404; } location /zm { auth_basic off; alias /usr/share/zoneminder/www; try_files $uri $uri/ /index.php?$args =404; location /zm/api { auth_basic off; rewrite ^/zm/api(.+)$ /zm/api/app/webroot/index.php?p=$1 last; } location ~ .php$ { auth_basic off; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param HTTP_PROXY ""; fastcgi_index index.php; fastcgi_pass unix:/var/run/php/php8.8-fpm.sock; } }
Сохраняемся и перегружаем nginx
$ sudo service nginx restart
Создайте или отредактируйте fcgiwrap:
$ sudo nano /etc/default/fcgiwrap
и вставьте (количество дочерних элементов -c равно или больше количества камер)
DAEMON_OPTS=-c 20
Сохраняемся и перезагружаем сервис fcgiwrap
$ sudo systemctl restart fcgiwrap
Zoneminder установлен. Теперь можно работать с Zoneminder через web-интерфейс. По умолчанию вбиваем в брозере
192.168.0.133/zm
где 192.168.0.133 нужно поменять на адрес вашего сервера Zoneminder или на localhost, если локально.