Установка ZoneMinder в Ubuntu
Видеонаблюдение – важная составляющая безопасности. Камеры устанавливаются в квартирах и общих коридорах, на дачах и в гаражах. Руководство компании следит за сотрудниками, охрана – за посетителями. В присмотре нуждаются пожилые родственники и маленькие дети. Простого вывода картинки недостаточно – сидеть перед монитором всё время никто не сможет. Нужна система, которая проанализирует видеопоток, сделает скриншоты и уведомит хозяев о нарушении периметра.
Промышленные модули стоят огромных денег, однако сообщество открытого ПО предлагает собственные бесплатные альтернативы, например, программу ZoneMinder. В этой статье мы рассмотрим как выполняется установка ZoneMinder Ubuntu 18.04.
Как установить ZoneMinder в Ubuntu
Первым делом в свежеустановленной операционке необходимо установить стандартный стек веб-сервера LAMP. Подробно останавливаться на этом процессе мы не будем, на сайте этому посвящена отдельная статья. Для того, чтобы получить самую свежую версию ZoneMinder, следует подключить персональный архив разработчиков PPA с помощью команды:
sudo add-apt-repository ppa:iconnor/zoneminder-1.34
Здесь 1.34 – номер текущей версии программы. Чтобы не вводить команду sudo перед всеми следующими командами, рекомендуем выполнить в консоли команду:
Все последующие инструкции в консоли будут выполняться от имени суперпользователя.
Итак, репозиторий добавлен. Теперь необходимо обновить список пакетов и саму операционную систему:
Затем можно запустить установщик:
apt-get install zoneminder
В свежеустановленной операционной системе потребуется установить почти 200 пакетов, поэтому процесс займёт некоторое время. После установки ZoneMinder требуется настроить для пользователя www-data права для доступа к конфигурации:
chmod 740 /etc/zm/zm.conf
chown root:www-data /etc/zm/zm.conf
Далее следует разрешить доступ к каталогу с файлами ZoneMinder:
chown -R www-data:www-data /usr/share/zoneminder/
Затем настроить Apache, подключить к ядру веб-сервера модули с помощью команды:
a2enmod cgi
a2enmod rewrite
После этого добавить настройки с помощью команды:
Для повышения скорости кэширования рекомендуется также активировать модули expires и headers:
Прежде, чем последовать настойчивым просьбам Apache о перезапуске, надо активировать и запустить ZoneMinder с помощью команд:
systemctl enable zoneminder
systemctl start zoneminder
Команда start отрабатывает без сообщений, поэтому можно проверить состояние сервиса, выполнив команду:
systemctl status zoneminder
На экране появятся строки, говорящие о том, что система видеонаблюдения ZoneMinder активна.
Осталось установить правильную временную зону для php. Открываем нужный нам файл в редакторе Nano с помощью команды:
Затем нажимаем сочетание клавиш Ctrl-W, в белом поле вводим слово Date, нажимаем клавишу Enter. Переходим таким образом в секцию [Date]. Убираем символ «;» перед строкой date.timezone и прописываем нашу временную зону. Для Москвы это Europe/Moscow. В результате содержимое файла должно выглядеть как на скриншоте:
Для выхода из редактора нажимаем сочетание клавиш Ctrl-X, подтвердив сохранение отредактированного нами файла php.ini. Вот теперь можно перезапустить веб-сервер с помощью команды:
systemcltl reload apache2
Установка ZoneMinder Ubuntu Server завершена. Наконец-то мы можем посмотреть на результаты своих трудов. Запускаем браузер, выполняем переход по адресу веб-сервера, в нашем случае это http://localhost/zm. В открывшемся окне соглашаемся с тем, что программа будет собирать данные, и далее попадаем в консоль ZoneMinder:
Настройка ZoneMinder
Первое, что желательно сделать, это поставить пароль на вход. Если сервер развёрнут в публичной сети, это обязательно. Выбираем пункт Options в строке меню и переходим по ссылке System на левой панели.
В открывшемся окне устанавливаем флажок напротив OPT_USE_AUTH и сохраняем конфигурацию с помощью кнопки Save в правом нижнем углу страницы. Если обновить страницу с помощью клавиши F5, будет выполнен сразу же переход к форме авторизации. По умолчанию установлено: логин: admin, пароль: admin. Сменить это можно выбрав в левой панели ссылку Users.
Большинство реальных камер будут подключаться по сети. Для пробы используем старый смартфон с установленной программой IP Webcam.
Для подключения камеры к ZoneMinder Ubuntu нажмём в главном меню кнопку ADD, откроется окно с интерфейсом добавления камеры.
На закладке General заполним поля Source Type = Remote и Function = Monitor (режим просмотра). Затем переходим на вкладку Source и устанавливаем значения параметров так, как показано на скриншоте:
- Protocol = HTTP (если на смартфоне выбран этот протокол);
- Method = Simple;
- Host Name = 192.168.0.184 (это адрес смартфона с камерой);
- Port = 8080 (как в настройках смартфона);
- Path = /video;
- Capture Resolution (pixels) = 320×240 (должно соответствовать потоку с камеры).
Для сохранения настроек нажимаем кнопку SAVE. Программа возвращает нас к списку камер. Если поток подсоединился, название камеры и адрес будут зелёного цвета, если нет — красного. Ошибки подключения можно посмотреть в меню Log.
Начать просмотр изображения с камеры можно кликнув мышкой по названию камеры. Откроется окно просмотра.
В окне доступно масштабирование, запуск трансляции, тестирование событий. На этом базовая настройка ZoneMinder закончена.
Выводы
Рассмотренная нами установка ZoneMinder Ubuntu 18.04 показала, что организация видеонаблюдения – это не сложно. При этом программный комплекс с большими возможностями может быть и бесплатным тоже, а его мощь и удобство – в гибких настройках.
Встроенный модуль для веб-сервера принимает потоки видео с любых локальных или сетевых камер, анализирует кадры в поисках событий для дневной и ночной съёмок, информирует пользователей о событиях и прочем. Управляется видеонаблюдение с помощью браузера или мобильного приложения, данные сохраняются в локальную базу. Подходит для построения систем наблюдения любых масштабов – от гаража до предприятия.
Домашнее видеонаблюдение. Реализация с помощью Zoneminder и Debian 8
Введение
Доброго времени суток.
Имея в наличии домашний NAS, который работает под управлением Debian 8 (ранее я использовал Ubuntu Server 12.04 и 14.04), возникла идея возложить на него, помимо прочего, роль сервера видеонаблюдения. В качестве серверной части был выбран Zoneminder. Алгоритм работы видеонаблюдения должен быть такой: круглосуточная запись не нужна, но требуется в случае необходимости возможность включения записи по наступлению события — срабатывание на движение, с последующей отправкой уведомления на электронную почту со скриншотами с места события. Это нужно чтобы обеспечить контроль за квартирой в момент отсутствия кого-либо дома. Ну и, конечно, нужна возможность удалённо подключиться и проверить — всё ли в порядке.
На сайте разработчика я нашёл подробнейшую Wiki, посвященную именно установке на Debian 8 64-bit. Соответственно, инструкцию по установке я возьму оттуда, пояснив некоторые моменты своими комментариями.
Установка Zoneminder
Итак, у нас есть сервер с установленным в минимальной конфигурации Debian 8 64-bit (я использовал netinstall). Сначала нужно отредактировать sources.list, добавив в него Jessie backports:
В конец файла добавим:
Либо раскомментируем эту строку, если она там уже есть, то есть удалим # в начале строки. Обновляем индекс пакетов:
Теперь всё готово для установки Zoneminder, что мы и сделаем:
В процессе установки будут также автоматически установлены Apache, MySQL, PHP.
После завершения установки, создаём базу MySQL:
В процессе создания базы, будет предложено выбрать пароль root базы. Далее выполняем последовательно следующие команды (через sudo), вводя пароль в случае запроса:
Включаем автозапуск Zoneminder:
Добавляем пользователя www-data в группу sudo, это нужно для доступа к локальным видеокамерам:
Проверяем, что Zoneminder запущен:
Если всё в порядке, вывод команды должен быть, примерно, такой:
Добавляем свой часовой пояс в PHP:
Ищем секцию [Date] и меняем date.timezone на нужный:
Сохраняем — Ctrl+O, выходим — Ctrl+X.
Перезапускаем Apache:
Чтобы была возможность управлять Zoneminder через Internet Explorer, нужно установить Cambozola:
На этом установка Zoneminder завершена. Теперь нужно настроить почтовый транспорт для того, чтобы Zoneminder мог уведомлять о событиях по электронной почте.
Настройка почтового транспорта
Для отправки уведомлений, Zoneminder умеет использовать ssmtp, его и установим:
Заодно установим mailutils, если этот пакет ещё не установлен:
Теперь настроим параметры почты, от имени которой будут идти уведомления. Предположим, что ящик находится на gmail.com. Открываем ssmtp.conf:
и приводим к такому виду, указав, соответственно, ваши данные:
приводим к такому виду:
И проверяем корректность настроек, отправив тестовое письмо:
Если тест прошёл успешно, переходим к следующему шагу — установка MIME::Lite и Net::SMTP. Проверим, установлены ли эти компоненты:
Устанавливаем, зайдя в оболочку perl:
Сейчас нужно внести очень важные изменения, без которых почтовый транспорт от Zoneminder работать не будет. Обратите внимание, что эти изменения нужно вносить только в том случае, если версия установленного Zoneminder — 1.29 или ниже. Начиная с версии 1.30, эти действия производить не нужно.
Откроем в редакторе файл zmfilter.pl:
Перейдя на строку 1179, мы видим следующее:
Закомментируем строки и
и добавим под ними строку
В итоге, начиная со строки 1179 (в моём случае, но не обязательно именно этот номер строки), код должен выглядеть так:
Сохраняем, выходим. На этом работа с терминалом завершена.
Веб-интерфейс Zoneminder
Управление доступно по адресу ip.adress.servera/zm, заходим. Первое, что нужно сделать, это зайти в Options -> Users, и задать пароль пользователю admin:
Затем зайти в Options -> System, и поставить галочку напротив OPT_USE_AUTH:
Если этого не сделать, то Zoneminder позволяет зайти в веб-интерфейс или подключиться через клиентское приложение без запроса логина\пароля, что, естественно, небезопасно. Странно, что эта очень нужная галочка не отмечена по умолчанию.
Теперь настроим отправку электронной почты. Заходим в Optons -> Email и настраиваем по аналогии:
В поле EMAIL_BODY можно настроить формат уведомлений так, как нужно именно вам. Например, если в поле добавить %EI1%, то к сообщению будет прикреплен первый скриншот с момента срабатывания датчика движения. Полный список опций для уведомлений доступен здесь.
Добавление камер
Zoneminder умеет работать как с usb, так и с IP-камерами. На данный момент, мои камеры ещё в пути, поэтому в качестве тестово-настроечно-временного варианта камеры, я использую мой старый Android-смартфон Alcatel Pop C2, на котором установлено приложение IP Webcam, превращающее смартфон в Wi-Fi IP-камеру. После установки и запуска приложения (предварительно рекомендую выставить разрешение видеопотока в настройках приложения, я выставил 800х480), на дисплее смартфона отображается IP и порт, по которому можно зайти в веб-интерфейс и посмотреть, что здесь есть интересного:
Настроек, в общем, довольно много, но нас интересует адрес, по которому отдается видеопоток. И мы видим, что есть информация для настройки Zoneminder, что не может не радовать. А именно, указан Remote host path, путь, который нужно будет прописать в настройках Zoneminder — после IP камеры нужно добавить /video:
Возвращаемся в веб-интерфейс Zoneminder, чтобы добавить камеру, выбираем Add New Monitor:
В поле Name пишем желаемое имя, Source type -> Remote:
Во вкладке Source заполняем поля: Remote Host Name -> IP смартфона, Remote Host Port -> порт, на котором работает IP Webcam, Remote Host Path -> путь, который мы подсмотрели в настройках IP Webcam, а также указываем разрешение видеопотока, которое должно совпадать с выбранным нами ранее в настройках IP Webcam:
Сохраняем настройки -> Save, и в главном меню Zoneminder видим добавленную нами камеру:
При нажатии на название которой, мы видим изображение:
Камеры могут работать в нескольких режимах, который определяется параметром Function в главном меню:
Режим, в котором запись ведется только при наличии движения в кадре, называется Modect, его и выберем. Теперь система не будет записывать видеопоток постоянно, а только при наличии веских на то причин. Но нам ведь ещё нужно уведомление о движении в кадре. Для это нужно настроить фильтр. Открываем Filters в главном меню Zoneminder, настраиваем согласно скриншоту, сохраняем под любым именем:
И не забываем поставить галочку напротив Run filter in background:
Таким образом, если в кадре будет обнаружено движение, система запишет видео и отправит на почту уведомление.
Клиентские приложения
Если есть постоянный IP, ничто не мешает пробросить порты в маршрутизаторе и подключаться со смартфона извне через веб-интерфейс, тем более, что в настройках Zoneminder можно выбрать мобильную версию интерфейса, но, помимо этого, я решил поискать какое-нибудь мобильное приложение для этой цели. Поискав в Google Play по ключевому слову «zoneminder», я остановился на zmNinja, т.к. рейтинг достаточно высокий и скриншоты понравились. Приложение платное, триальной версии для предварительной оценки, увы, нет. Функционал более чем достаточный — просмотр видеопотока в реальном времени, просмотр архива, записанных событий, переключение режимов камер и т.д.
Также есть десктопные версии zmNinja для Linux, Windows, Mac OS X — они распространяются бесплатно. Так выглядит версия для Linux, запущенная на моём Mint 18:
В общем, для всех систем интерфейс единообразен.