Система видеонаблюдения для дома на основе OrangePI и motioneye
Подготовка одноплатного компьютера
После того, как я перепробовал несколько возможных открытых решений для домашнего видеонаблюдения, я остановился на связке motion и пользовательским интерфейсом motioneye.
На мой одноплатный компьютер OrangePI PC был установлена Ubuntu 18.04 для ARMv7 с ядром версии 4.19.
После утсановки Ubuntu, логинимся через SSH root@<OrgangePI_IP>, пароль 1234. Задаем новый пароль. Установливаем необходимы софт.
Установка motion и motioneye
apt-get install motion ffmpeg v4l-utils python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev setuptools python-setuptools zlib1g-dev
pip install motioneye
mkdir -p /etc/motioneye
cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf
mkdir -p /var/lib/motioneye
cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
systemctl restart motioneye
Подключаемся к WiFi сети, если есть необходимость:
nmcli device wifi connect "ваш SSID" password "ваш пароль"
После этого заходим на адрес WEB интерфейса motioneye (http://OrangePI_IP:8765) и настраиваем подключенные USB WEB-камеры. Необходим настроить по каким события начинать запись, в каком разрешении снимать, каким кодеком сжимать.
Получение доступа к системе из Интернет
Далее, настроим доступ к WEB интерфейсу из Интернет. Для этого воспользуемся сервисом serveo.net. Это не самый безопасный способ получить доступ к камере, но самый быстрый.
Для начала создадим сервис /etc/systemd/system/ssh-tunnel@.service со следующим содержимым:
[Unitt]
Description=Setup a secure tunnel to %I
After=network.target
[Service]
EnvironmentFile=/etc/default/ssh-tunnel@%i.env
ExecStart=/usr/bin/ssh -NT -oStrictHostKeyChecking=no -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R ${REMOTE_ADDR}:${REMOTE_PORT}:${LOCAL_ADDR}:${LOCAL_PORT} ${TARGET}
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
Потом создадим конфигурацию для сервиса /etc/default/ssh-tunnel@motioneye.env со следующим содержимым:
LOCAL_ADDR=localhost
LOCAL_PORT=8765
REMOTE_ADDR=homemotioneye1234
REMOTE_PORT=80
TARGET=serveo.net
Включаем и запускаем сервис:
systemctl daemon-reload
systemctl enable ssh-tunnel@motioneye
systemctl start ssh-tunnel@motioneye
Если все пошло по плану, то зайдя на https://homemotioneye1234.serveo.net/, у вас отобразится WEB интерфейс вашей системы видеонаблюдения. Конечно, homemotioneye1234 замените на что-то свое оригинальное, и установите пароль для администратора и наблюдателя. Иначе любой желающий сможет получить доступ к вашей камере. Впрочем, если кто-то захочет, то сможет подобрать момент, когда ваш ssh клиент отключится от serveo.net, заменит его на фейковый интерфейс и получит ваш пароль. В общем, имейте ввиду, что это не самый безопасный способ :).
Что делать дальше?
У меня появляются мысли настроить оповещение через телеграм, но боюсь, что это будет генерировать слишком много событий и нотификацйи на моем телефоне. Из коробки motion поддерживает отправку Email и webhooks, но пока еще не придумал, как эти возможности использовать оптимальным образом.