Кратко: установка motionEye на Debian 10 в Docker

В данной статье я расскажу, что мне потребовалось для установки motionEye в Docker на Debian 10 c techwell-овской DVR pci картой (HW-108Q9). Это тот же самый старый сервер, на котором стоял ZM (описывал тут), но так как меня утомили баги ZM, было принято решение перейти на motionEye. Описывать сам интерфейс программы я не буду, а лишь покажу некоторые настройки, которые я сделал для работы с аналоговыми камерами.

motionEye это web-интерфейс для motion, написанный на Python. Сам интерфейс достаточно простой и удобный, а главное позволяет разворачивать системы наблюдения без каких либо проблем.

Но подробнее о его возможностях, плюсах и минусах я останавливаться не буду, так как это не тема этой статьи, скажу кратко: этот софт позволяет вести круглосуточное видеонаблюдение и сохранять записи без каких-либо проблем.

Что у нас есть?

У нас есть сервер, на Debian 10, в котором установлена старая pci-dvr карта HW-108Q9. Настраивать на этой версии драйвера для работы этой карты не пришлось, так как они уже есть в ядре, но если вдруг она у вас не работает, то в этой статье, в разделе «Подготовка DVR карты и установка необходимых пакетов» описано как заставить работать эту плату. Скажу сразу, что в CentOS это не взлетит.

Так же был подключен дополнительный 2TB диск, который был примонтирован к точке /var/lib/motioneye — место куда у нас будут складываться видеозаписи.

Установка Docker

Для того, чтобы не заморачиваться с установкой пакетов, motionEye было решено ставить на Docker, а для этого нужно поставить сам Docker:

apt update
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt-cache policy docker-ce
apt install docker-ce

После проделанных действий Docker будет установлен.

Установка motionEye

Неожиданно, но мы готовы к установке самого motionEye, и для этого необходимо создать/запустить контейнер со следующими параметрами:

docker run --name="motioneye" \
    -p 80:80 \
    --hostname="motioneye" \
    -v /etc/localtime:/etc/localtime:ro \
    -v /etc/motioneye:/etc/motioneye \
    -v /var/lib/motioneye:/var/lib/motioneye \
    --device=/dev/video0 \
    --device=/dev/video1 \
    --device=/dev/video2 \
    --device=/dev/video3 \
    --restart="always" \
    --detach=true \
    ccrisan/motioneye:master-amd64

Опишу наиболее важные параметры:

  • -p 80:80 — web интерфейс будет доступен на 80 порту;
  • -v /etc/localtime:/etc/localtime:ro — берем часовой пояс из системы в контейнер;
  • -v /etc/motioneye:/etc/motioneye — подключаем внешнюю директорию для конфиг-файлов motioneye;
  • -v /var/lib/motioneye:/var/lib/motioneye — подключаем внешнюю директорию для хранения записей;
  • —device=/dev/videoХ — для того, чтобы контейнер с motioneye видел наши видео-устройства (dvr карту), подключаем их.

Подробное описание установки motioneye есть на этой странице: https://github.com/ccrisan/motioneye/wiki/Install-In-Docker

После проделанной команды проверяем что motioneye запущен:

root@secursrv:/home/leo# docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                            NAMES
f255cded7308        ccrisan/motioneye:master-amd64   "/bin/sh -c 'test -e…"   14 seconds ago       Up 14 seconds           0.0.0.0:80->80/tcp                    motioneye

Настройка motionEye

Далее, перейдя в браузере по адресу вашего сервера откроется web-интерфейс (для авторизации введите логин admin и оставьте пустой пароль):

Сам web-интерфейс с 5-ю настроенными камерами выглядит так:

Список видеозаписей выглядит так:

Ниже представлены скрины с базовой настройкой одной аналоговой камеры и некоторыми другими настройками.

Video Device

Это базовые настройки для аналоговой камеры:

Если камера подключена к определенному каналу, то настройка будет немного другой (в Extra Motion Options добавлен input 0):

File Storage

В данном разделе указаны базовые настройки хранения файлов (в моем случае там все по умолчанию):

Кстати там есть возможность автоматически загружать файлы по FTP, SFTP, Google Drive/Photo, DropBox.

Text Overlay

Тут можно произвести настройку наложения текста:

Movies

В этом разделе можно настроить параметры сохраняемых файлов (имя файла, формат, качество, режим записи, максимальная длина ролика, срок хранения записей:

Motion Detection

В данном разделе можно произвести тонкую настройку режима «motion detect»:

Проблемы эксплуатации

Вот проблемы с которыми я столкнулся (и, пока, смирился):

  1. Нет нормального поиска (поисковой строки, с помощью которой можно отобразить записи со всех камер за определенный промежуток времени
  2. Если у вас много записей, то список с ними будет открываться достаточно долго. Связанно это с тем что сам список генерируется чтением файлов с диска, естественно это происходит не быстро, при большом количестве записей

Итог

Я не стал подробно описывать все настройки данной системы, так как у проектов есть прекрасная документация, так что если вам что-то понадобится, то welcome: