CheapSecurity предлагает локальное видеонаблюдение для Linux-плат

CheapSecurity, лёгкая самостоятельная система видеонаблюдения для Linux-одноплатных компьютеров, например Raspberry Pi, Orange Pi и похожих устройств, а также обычных USB-веб-камер. Проект предлагает хранить записи локально, без облачной подписки: пользователь сам задаёт путь хранения, сроки хранения и способы доступа к данным. Код распространяется по лицензии GNU AGPLv3.
Система выводит живой MJPEG-поток и веб-панель состояния, обнаруживает движение сравнением кадров и автоматически начинает запись с буфером до события. При начале движения она может отправить снимок по электронной почте, а после записи ролика, загрузить видео в Telegram. Через Telegram-бота доступны команды для получения текущего снимка, записи видео длительностью от 1 до 60 секунд и справки; бот отвечает только настроенному чату и не прерывает уже идущую запись движения.
В проект также входят программный ночной режим, повышение локального контраста, яркости и контраста камеры с попыткой изменить частоту кадров и усиление, очистка хранилища по возрасту записей, общему размеру и аварийной нехватке места, а также массовые операции с роликами: отправка в Telegram, скачивание ZIP-архивом и удаление. Для работы нужны Python 3.10+, OpenCV с поддержкой V4L2 и USB-камера, обычно /dev/video0; Telegram и SMTP необязательны.
Развёртывание описано через виртуальное окружение Python, конфигурационный файл и шаблон службы systemd. Веб-интерфейс запускается через Gunicorn на адресе 0.0.0.0:5000 с одним рабочим процессом, поскольку камеру должен открывать один процесс. Автор отдельно предупреждает не публиковать сервер разработки Flask в интернете: при внешнем доступе нужен доверенный обратный прокси с HTTPS и аутентификацией, а токены Telegram и пароли SMTP из config.json нельзя добавлять в репозиторий.
Ключевые факты
- CheapSecurity рассчитан на Linux-одноплатные компьютеры и стандартные USB-веб-камеры; записи хранятся локально, без обязательной облачной подписки.
- Есть веб-панель с живым MJPEG-потоком, обнаружение движения сравнением кадров и автоматическая запись с буфером до события.
- Уведомления могут приходить по электронной почте со снимком, а записанные ролики, в Telegram; бот поддерживает команды снимка и записи видео.
- Очистка хранилища учитывает возраст записей, общий объём и аварийный порог свободного места; доступны массовые скачивание, отправка и удаление роликов.
- Для запуска требуются Python 3.10+, OpenCV с V4L2 и USB-камера; при публикации интерфейса в интернете проект рекомендует HTTPS, аутентификацию и обратный прокси.
Почему это важно
Проект даёт вариант домашнего видеонаблюдения, в котором видео остаётся в локальной сети и на выбранном пользователем носителе. Он рассчитан на недорогие маломощные Linux-платы и уже имеющиеся USB-камеры, а не на облачную подписку.
Кому это важно
Тем, кому нужна простая локальная камера для дома на Raspberry Pi, Orange Pi или аналогичном одноплатном компьютере. Также проект подойдёт пользователям, которым нужны уведомления по электронной почте или Telegram и контроль над хранением записей.
Как это применить
Нужно подготовить Linux-плату, USB-камеру, Python 3.10+ и OpenCV с поддержкой V4L2, затем настроить config.json и запустить приложение либо службу systemd. В конфигурации задаются камера, разрешение, частота кадров, хранение, а при необходимости, SMTP и данные Telegram-бота. Панель по умолчанию доступна на порту 5000.
Можно ли доверять
Описание проекта перечисляет конкретные функции, требования и шаги развёртывания, а исходный код опубликован как open source по GNU AGPLv3. При этом это карточка проекта с Hacker News и репозитория: перед установкой стоит самостоятельно проверить код, совместимость камеры и работу OpenCV на своей плате.
Риски и подводные камни
Файл config.json содержит пароли и токены, поэтому его нельзя коммитить. Большинство USB-веб-камер могут не поддерживать изменение усиления, ISO или экспозиции через V4L2, так что программный ночной режим не заменяет инфракрасную камеру и подсветку. Внешний доступ к интерфейсу без HTTPS и аутентификации небезопасен; автор советует использовать обратный прокси или оставить встроенную базовую аутентификацию при локальном доступе.