CheapSecurity: домашнее CCTV на Raspberry Pi за копейки
CheapSecurity — лёгкая self-hosted система видеонаблюдения на Linux SBC. Установка, архитектура, сравнение с аналогами и практические советы.
Зачем вообще делать своё видеонаблюдение?
Коммерческие камеры типа Nest, Ring или Tapo — это удобно ровно до того момента, пока вы не задумываетесь, куда уходят ваши видеозаписи. Облачные подписки стоят денег, данные хранятся на серверах вендора, а качество детекции движения нередко разочаровывает. Дешёвые камеры вроде Tapo используют примитивный frame-diffing, который срабатывает на тени и листья, а при снижении чувствительности перестаёт замечать человека в двух метрах от объектива.
Именно в этот пробел метит CheapSecurity — открытый проект с Hacker News, который предлагает взять старый одноплатник, дешёвую USB-камеру и получить полноценную систему наблюдения, где все данные остаются у вас дома.
Что такое CheapSecurity и в чём его философия
CheapSecurity — это лёгкая self-hosted CCTV-система, созданная специально для Linux-одноплатников и стандартных USB-камер, предлагающая доступную и privacy-ориентированную альтернативу коммерческим решениям.
Проект строится на трёх принципах:
- Privacy-First. Все записи хранятся локально — никаких облачных подписок, ваши видео никогда не покидают домашнюю сеть.
- Cost-Effective. Используй то, что уже есть: старый Linux-одноплатник и USB-камера — и у тебя готовая система наблюдения без ежемесячных платежей.
- Minimalist Architecture. ПО оптимизировано для работы на маломощных устройствах и показывает высокую производительность даже на бюджетном железе.
«Полный контроль над путями хранения, политиками хранения и методами доступа» — именно это отличает self-hosted от любого облачного сервиса.
Архитектура проекта изнутри
CheapSecurity написан на Python и использует Flask в качестве веб-сервера. Структура проекта включает модуль cctv.py для детекции движения, записи и Telegram-уведомлений, web.py для Flask-дашборда и API, wsgi.py как точку входа для продакшн-деплоя через Gunicorn, а также diagnose.py для диагностики и устранения проблем.
graph TD
A[USB-камера] --> B[cctv.py: детекция движения]
B --> C{Движение?}
C -- Да --> D[Запись видео в recordings/]
C -- Да --> E[Telegram-уведомление]
C -- Нет --> B
D --> F[web.py: Flask-дашборд]
F --> G[Браузер пользователя]
F --> H[Gunicorn / WSGI]
Совместимость с железом
Проект аппаратно-независим и совместим с широким спектром стандартных USB-камер, а также оптимизирован специально для Linux-одноплатников: Raspberry Pi, Orange Pi и аналогичных SBC.
Для установки OpenCV предлагается два пути:
На ARM-платах (например, Odroid XU4) рекомендуется использовать системный пакет OpenCV, оптимизированный под конкретную платформу. На x86/amd64 или при отсутствии готового пакета — установка через pip с вариантом opencv-python-headless, так как GUI не нужен.
Деплой через systemd
Запуск в продакшне реализован через systemd-сервис — это позволяет CheapSecurity автоматически стартовать при включении устройства и перезапускаться при сбоях:
# Копируем юнит-файл
sudo cp cheapsecurity.service /etc/systemd/system/cheapsecurity@.service
# Перезагружаем демон и включаем автостарт
sudo systemctl daemon-reload
sudo systemctl enable --now cheapsecurity@$(whoami).service
Установка: шаг за шагом
Ниже — типовой процесс развёртывания CheapSecurity на Raspberry Pi или любом другом Linux SBC.
1. Подготовка системы
# Обновляем пакеты
sudo apt update && sudo apt upgrade -y
# Устанавливаем зависимости
sudo apt install python3-pip python3-venv git -y
# На ARM-платах — системный OpenCV (рекомендуется)
sudo apt install python3-opencv -y
2. Клонирование и установка
git clone https://github.com/gmrandazzo/CheapSecurity.git
cd CheapSecurity
# Создаём виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate
# Устанавливаем пакет
pip install -e .
3. Конфигурация
# Копируем пример конфига
cp config.json.example config.json
# Редактируем под себя
nano config.json
В config.json задаются: путь к камере, директория для записей, параметры детекции движения, токен Telegram-бота и другие настройки.
diagnose.py. Попробуйте уменьшить параметр motion.min_area, если движение не обнаруживается.4. Запуск
# Режим разработки
python src/cheapsecurity/app.py
# Продакшн через Gunicorn
gunicorn --bind 0.0.0.0:8080 cheapsecurity.wsgi:app
После запуска веб-интерфейс доступен по адресу http://<IP-платы>:8080.
CheapSecurity vs альтернативы: честное сравнение
На рынке open-source CCTV решений достаточно. Посмотрим, где CheapSecurity выигрывает, а где уступает:
| Критерий | CheapSecurity | motionEye | Shinobi | Frigate NVR |
|---|---|---|---|---|
| Язык/стек | Python + Flask | Python | Node.js | Python + Docker |
| Минимальные ресурсы | ✅ Очень низкие | ✅ Низкие | ⚠️ Средние | ⚠️ Средние |
| AI-детекция объектов | ❌ Нет | ❌ Нет | ❌ Нет | ✅ Да (TF/OpenCV) |
| Telegram-уведомления | ✅ Встроено | ⚠️ Плагин | ⚠️ Плагин | ❌ Внешний |
| Docker | ❌ Нет | ✅ Да | ✅ Да | ✅ Да |
| Лицензия | GNU AGPLv3 | GPLv3 | Open Source | MIT |
| Поддержка USB-камер | ✅ Нативно | ✅ Нативно | ✅ Да | ⚠️ Ограниченно |
| Сложность установки | 🟢 Низкая | 🟢 Низкая | 🟡 Средняя | 🔴 Высокая |
motionEyeOS — Linux-дистрибутив, превращающий SBC в систему видеонаблюдения; работает на Raspberry Pi, Orange Pi и других одноплатниках. Это сильный конкурент, но он требует отдельного образа ОС.
Frigate NVR предлагает локальный AI-детектор объектов на базе OpenCV и TensorFlow для IP-камер, но значительно сложнее в настройке и требует больше ресурсов.
CheapSecurity занимает нишу «поставил и забыл» для тех, кому нужна простая, надёжная система без Docker и тяжёлых зависимостей.
Telegram-уведомления и контроль данных
Одна из ключевых фич CheapSecurity — встроенная интеграция с Telegram-ботом прямо в cctv.py. Это значит, что при срабатывании детектора движения вы мгновенно получаете уведомление в мессенджер — без сторонних сервисов и без регистраций.
Проект обеспечивает полный контроль над путями хранения данных, политиками удержания записей и методами доступа, а также спроектирован для быстрой установки и лёгкого обслуживания.
Для настройки Telegram-бота достаточно:
- Создать бота через
@BotFatherв Telegram - Получить
tokenиchat_id - Прописать их в
config.json
{
"telegram": {
"token": "YOUR_BOT_TOKEN",
"chat_id": "YOUR_CHAT_ID"
},
"motion": {
"min_area": 500,
"record": true
},
"camera": {
"device": "/dev/video0"
},
"storage": {
"path": "./recordings"
}
}
Заключение: когда CheapSecurity — правильный выбор
CheapSecurity — не попытка конкурировать с Frigate или профессиональными NVR-системами. Это честный инструмент для конкретной задачи: быстро развернуть privacy-first видеонаблюдение на том железе, которое уже есть в ящике стола.
Берите CheapSecurity, если:
- У вас есть Raspberry Pi, Orange Pi или любой другой Linux SBC
- Вам важна конфиденциальность — никаких данных в облако
- Нужна простая установка без Docker и сложных зависимостей
- Telegram-уведомления «из коробки» — must have
- Бюджет ограничен, а подписки на облако раздражают
Смотрите в сторону Frigate или Viseron, если:
- Нужна AI-детекция объектов (человек vs. кошка vs. машина)
- У вас IP-камеры, а не USB
- Важна интеграция с Home Assistant
Self-hosted CCTV — это не паранойя, это разумная цифровая гигиена. Ваши данные о том, кто и когда приходил домой, не должны лежать на серверах корпораций.
Проект активно развивается, лицензирован под GNU AGPLv3 и доступен на GitHub: github.com/gmrandazzo/CheapSecurity. Если вы уже держите одноплатник включённым — добавить к нему CheapSecurity займёт меньше часа.