ZoneMinder — свободное программное обеспечение для организации видеонаблюдения под лицензией GNU GPL.
Имеется компьютер Intel(R) Core(TM)2 CPU 4300, 2GB RAM.
Была произведена чистая установка CentOS 7 Minimal. IP-камера AXIS-206. Для организации архива записей используется отдельный жесткий диск, который можно подключить на этапе инсталяции системы (монтируется в /var/lib/zoneminder) или позднее при установке ZoneMinder’а, как будет описано ниже. Приступим!
Установка ZoneMinder
Далее подразумевается, что все команды выполняются от имени пользователя root. Если Вы пользуетесь механизмом sudoers, то перед командами добавляйте sudo.
1. Поключаем репозиторий EPEL. Он понадобится для разрешения всех зависимостей.
yum install epel-release
2. Добавляем в систему отдельный диск для хранения записей. Предположим, что диск имеет обозначение /dev/sdb и на нем одна партиция /dev/sdb1 соответственно. Теперь необходимо выяснить UUID (Универсальный Уникальный Идентификатор) партиции.
blkid /dev/sdb1
Ответом будет строка, примерно, с таким содежанием (у Вас UUID будет другим).
/dev/sdb1: UUID="f3609e58-ab0d-4bfb-a0a5-f7e912db6597" TYPE="ext4"
Добавим UUID в /etc/fstab.
vi /etc/fstab
Теперь /etc/fstab выглядит, примерно, так (зависит от Вашей разметки диска).
1 2 3 4 5 6 |
UUID=c2fef160-185b-42ad-b9db-99842f0e9b0b / ext4 defaults 1 1 UUID=04c59d1f-2c49-4e54-b70b-7f298cdcc51e /boot ext4 defaults 1 2 UUID=79869c6a-466d-4113-8344-4b24221a1a0a /home ext4 defaults 1 2 UUID=b8fe3c17-1061-46a0-a444-c7fd20ff07fc /var ext4 defaults 1 2 UUID=096b3239-02ae-4806-a989-ba85d05e2bc7 swap swap defaults 0 0 UUID=f3609e58-ab0d-4bfb-a0a5-f7e912db6597 /var/lib/zoneminder ext4 defaults 1 1 |
В последней строке партиция с нашим UUID монтируется в /var/lib/zoneminder.
3. Доставим пакеты, отключим SElinux и обновим систему.
По умолчанию в CentOS 7 Minimal не установлены пакеты wget, который понадобится нам дальше, и ntp для синхронизации точного времени.
yum install wget ntp
vi /etc/selinux/config
Заменим enforcing на disabled в следующей строке.
1 |
SELINUX=disabled |
yum update
Перезагрузим компьютер, чтобы обновления и настройки вступили в силу.
reboot
4. Подключим репозиторий ZoneMinder’а и установим его.
wget http://zmrepo.zoneminder.com/el/7/x86_64/zmrepo-7-8.el7.centos.noarch.rpm
yum install --nogpgcheck zmrepo-7-8.el7.centos.noarch.rpm
Удостоверимся, что все нужные репозитории подключены.
yum repolist
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos-mirror.rbc.ru * epel: mirror.yandex.ru * extras: centos-mirror.rbc.ru * updates: centos-mirror.rbc.ru * zmrepo: zmrepo.connortechnology.com repo id repo name status base/7/x86_64 CentOS-7 - Base 9,363 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 11,086 extras/7/x86_64 CentOS-7 - Extras 263 updates/7/x86_64 CentOS-7 - Updates 791 zmrepo/7/x86_64 Zoneminder and its dependencies for Enterprise Linux 7 - x86_64 186 repolist: 21,689 |
Следующая команда установит ZoneMinder и все зависимые пакеты.
yum install zoneminder
После этого необходимо настроить базу данных MariaDB.
5. Если Вы ранее уже использовали базу данных MariaDB/MySQL на сервере, куда устанавливается ZoneMinder, то шаг с запуском и первоначальной настройкой можно пропустить и перейти к непосредственно конфигурированию.
— запускаем MariaDB
systemctl enable mariadb
systemctl start mariadb
— первоначальная настройка
mysql_secure_installation
Так как это первый запуск, пароль пустой, жмем Enter
1 2 |
Enter current password for root (enter for none): OK, successfully used password, moving on... |
Установим собственный пароль для пользователя root базы данных (не путать с пользователем root самой системы)
1 2 3 4 5 6 |
Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! |
На все вопросы отвечаем «у»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success! Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! |
— конфигурирование
В следующих командах иcпользуем пароль пользователя root установленный ранее. Не забудьте заменить zmpass во второй команде на нормальный пароль!
mysql -uroot -pпароль < /usr/share/zoneminder/db/zm_create.sql
mysql -uroot -pпароль -e "grant all on zm.* to 'zmuser'@localhost identified by 'zmpass';"
mysqladmin -uroot -pпароль reload
После редактируем конфигурационный файл ZoneMinder’а /etc/zm/zm.conf. Изменяем строки с переменными ZM_DB_USER и ZM_DB_PASS в соответствии с введенными ранее.
Редактируем файл /etc/php.ini для установки правильной временной зоны.
date.timezone = Europe/Moscow
6. Инсталируем mod_ssl для использования HTTPS и готового самоподписного сертификата.
yum install mod_ssl
7. Запускаем Apache и ZoneMinder.
systemctl enable httpd
systemctl start httpd
systemctl enable zoneminder
systemctl start zoneminder
Настройка ZoneMinder
1. Итак, установка полностью выполнена. Можно набрать в адресной строке браузера https://localhost/zm/ либо https://Ваш IP-адрес/zm/, или, если есть, https://Ваш домен/zm/. Вся дальнейшая настройка осуществляется через веб-интерфейс в браузере.
Первое, что мы видим, это шапка некой незаполненной таблицы. Обратите внимание на правый верхний угол, там есть кнопка «Options».
Выберем русский язык: правда, переведено не все, но все-таки так приятнее.
В обязательном порядке включаем вход по логину и паролю.
Во вкладке «Пользователи» в целях безопасности следует изменить логин администратора на свой вместо стандартного admin.
Можно поменять тему оформления. На мой взгялд, «flat» выглядит более комфортно.
2. Добавим IP-камеру AXIS-206. В незаполненной таблице на главной странице веб-интерфейса жмем кнопку «Добавить монитор» (мониторами тут назваются источники видеосигнала). Нас интересуют 2 вкладки «General» и «Источник». Вводим имя, «Тип источника» — «Удаленный», так как у нас отдельное устройство IP-камера. Если подключить USB-камеру непосредственно к серверу, тип источника станет «Локальный». Далее выбираем «Функцию», здесь режим записи с камеры. «Функция» может принимать различные значения:
— Monitor – просмотр изображений с камеры;
— Modect (от Motion Detection) — производится анализ кадров и при возникновении движения ведет запись;
— Record – постоянная запись с камер;
— Mocord (гибрид Modect и Record) — ведется постоянная запись с камер, при возникновении движения — с подсветкой областей детекции;
— Nodect – специализированный режим, использующийся вместе с внешними триггерами.
Переходим на вкладку «Источник».
Remote Protocol — HTTP
Remote Method — Simple
Имя удаленного хоста заполняется в формате user:password@IP-адрес. Это пользователь, который имеет доступ к просмотру IP-камеры, и его пароль.
Удаленный порт 80
Путь на удаленном хосте — это путь к файлу в камере, где транслируется видеопоток. Чтобы его определить, нужно зайти в веб-интерфейс настроек камеры.
Указываем нужный нам размер картинки по вертикали и горизонтали в пикселях.
Сохраняем. Теперь у нас в таблице есть одна строчка с подключенной камерой. Имя, функция, источник. «Имя» позволяет смотреть камеру в онлайн режиме, а также несколько последних событий. «Функция» и «Источник» вернут Вас к настройке параметров, описанных выше. Далее идут события — это записи видеопотока, отсортированные по временным интервалам: час, день, неделя, месяц. Нажимая на эти «кнопки», можно посмотреть записи за соответсвующее время.
3. Каким бы большим не был жесткий диск, место на нем рано или поздно закончится. Поэтому нам необходимо настроить функцию очистки диска от старых записей. Жмем кнопку «Filters». Выбираем «PurgeWhenFull» в параметре «Использовать фильтр». В условии запуска фильтра «Disk Percent» и «больше или равно» прописываем «85». Жмем «Сохранить» в этом и следующем окне. Теперь при достижении 85% от общего объема диска будет запускаться скрипт очистки.
4. Последний шаг настройки. Создадим обычного непривилегированного пользователя для просмотра онлайн и архивных записей. Перейдем в «Опции» -> «Пользователи» -> «Добавить пользователя». Обзовем его observer (англ. — наблюдатель) и установим ему соответствующие права. Обратите внимание, что также можно выбирать какие камеры доступны этому пользователю. На следующей картинке доступна только камера с именем axis206_m.
Заходим в систему только что созданным пользователем.
Система видеонаблюдения ZoneMinder достаточно мощная и простая в настройке и эксплуатации. Она поддерживает локальные и сетевые видеокамеры, цифровые USB камеры и аналоговые видеокамеры. Имеется большое количество настроек и возможностей.
If Firewalld is running, allow HTTP service. HTTP uses 80/TCP. HTTPS uses 443/TCP.
firewall-cmd —add-service=http —permanent
firewall-cmd —add-service=https —permanent
firewall-cmd —reload
Спасибо Дмитрий!
А если у Вас iptables, то
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
Другие примеры iptables можно посмотреть тут