Frigate
Открытый NVR (видеорегистратор) с ИИ-детекцией объектов в реальном времени для IP-камер. Не тупой детектор движения, а распознавание людей, машин и других объектов на своем сервере - резко меньше ложных срабатываний. Запись по событиям, поиск по объектам, интеграция с Home Assistant. Мы развернули Frigate в Docker на сервере Fatmetal, скормили ему видеопоток и замерили, чего реально стоит ИИ-детекция на CPU.
Вердикт
- нужен свой видеорегистратор с ИИ-детекцией объектов, а не облачный сервис камер с подпиской и чужими серверами - все видео и события на вашем сервере
- VPS в роли агрегатора RTSP, хранилища записей и удаленного доступа к дашборду, а тяжелую детекцию считает домашний узел с ускорителем
- нужна связка с Home Assistant: события от Frigate по MQTT запускают автоматизации умного дома
- хотите крутить детекцию нескольких камер прямо на VPS - на CPU это ~4 ядра на ОДНУ камеру 5fps, нужен аппаратный ускоритель, которого в облаке нет
- камеры дома в локальной сети без белого IP - их поток надо тащить до VPS через VPN или проброс, это отдельная возня
- нужно коробочное облачное видеонаблюдение без настройки конфигов - Frigate требует вдумчивой настройки камер и детекторов
Что это и какую задачу решает
Обычное видеонаблюдение либо шлет поток в облако вендора камеры (данные и подписка у него), либо пишет все подряд на регистратор, а потом вы вручную отсматриваете часы записи. Frigate решает обе проблемы: это локальный NVR, который прямо на вашем сервере распознает объекты в кадре - человек, машина, велосипед - и пишет события только когда в кадре есть что-то важное. Поиск идет не по времени, а по объектам: показать всех людей за сегодня.
Frigate - открытый проект с крупным сообществом, де-факто стандарт self-host видеонаблюдения с ИИ. Ставится одним Docker-контейнером, внутри - встроенный рестример go2rtc, движок детекции, запись и веб-интерфейс. Интегрируется с Home Assistant через MQTT: событие детекции запускает сценарий умного дома.
Детекторы: от чего зависит, сколько камер потянет сервер
Сердце Frigate - детектор, который прогоняет кадры через нейросеть и находит объекты. Он сменный, и именно от него зависит, сколько камер и с каким fps вытянет ваше железо:
| Детектор | Что нужно | Нагрузка |
|---|---|---|
| CPU (программный) | ничего, только процессор | очень высокая |
| Google Coral TPU | USB или PCIe-ускоритель | минимальная |
| Intel iGPU (OpenVINO) | встроенная графика Intel | низкая |
| NVIDIA (TensorRT) | видеокарта NVIDIA | низкая |
На облачном VPS нет аппаратного ускорителя - ни Coral, ни iGPU, ни NVIDIA. Значит детекция считается на CPU, а это самый тяжелый режим. Это ключевой факт для планирования: на VPS Frigate хорош как агрегатор потоков, хранилище записей и удаленный доступ, но тяжелую детекцию многих камер на нем не построить. Ниже - что показал реальный замер.
ИИ-детекция: что распознал наш стенд
Чтобы проверить детекцию по-настоящему, мы подали в Frigate зацикленный видеоролик с парковки (люди, машины, велосипеды) через встроенный go2rtc и включили распознавание объектов. Frigate реально классифицировал и вырезал объекты: в разделе Explore они разложены по типам.
На отладочном кадре видно, как Frigate рисует рамку вокруг объекта с меткой и уверенностью - например car: 65%. По таким событиям пишется видео и снимаются снапшоты, а поиск в интерфейсе идет по типу объекта.
Сколько это стоит по ресурсам
Здесь Frigate резко отличается от легких сервисов. Образ огромный (внутри стек детекции и ffmpeg), а сама детекция на CPU - самая прожорливая операция из всех, что мы замеряли. На стенде CPU4-RAM8 одна камера 768x432 при 5fps грузила процессор почти на 4 ядра.
| Образ | ghcr.io/blakeblackshear/frigate:0.17.2 (~7.48 ГБ) |
| CPU-детекция, 1 камера 5fps | ~379% CPU (почти 4 ядра), inference ~19 мс |
| RAM контейнера под детекцией | ~671 МиБ |
| RAM всей VM под детекцией | ~1.4 ГБ |
| Диск | ~9.9 ГБ занято (образ + записи) |
| Порты | 5000 / 8971 (веб), 8554 (RTSP-рестрим) |
| Рекомендуемый тариф | CPU4-RAM8-DISK100 на одну камеру; больше камер - нужен ускоритель, а не VPS |
Вывод простой: на CPU каждая камера с детекцией - это несколько ядер. Одну камеру на VPS вытянуть можно, но масштабировать детекцию на облаке без ускорителя не выйдет.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Frigate есть в маркетплейсе Fatmetal - можно не поднимать Docker, конфиг go2rtc и TLS вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный сертификат и веб-интерфейс Frigate - остается подключить свои камеры.
Рекомендуемая конфигурация: CPU4-RAM8-DISK100
Развертывание на Fatmetal
Ставится одним контейнером. Конфигурация - в файле config.yml: детектор, источники камер и что записывать. Веб-интерфейс слушает локально, наружу его отдает Caddy с автоматическим TLS на magic-DNS хосте.
Подготовить config.yml
Минимум - детектор, камера и что записывать. Встроенный go2rtc принимает RTSP-поток камеры и отдает его Frigate. Для реальной камеры в path укажите ее RTSP-адрес.
detectors: cpu1: type: cpu cameras: camera1: ffmpeg: inputs: - path: rtsp://ЛОГИН:ПАРОЛЬ@IP-КАМЕРЫ:554/stream roles: [detect, record] detect: { width: 1280, height: 720, fps: 5 } objects: track: [person, car] record: { enabled: true } snapshots: { enabled: true }Запустить контейнер
Каталог конфигурации и медиа монтируем в тома, задаем shm-size для буферов кадров, порт 5000 держим на localhost.
docker run -d --name frigate --restart unless-stopped \ --shm-size=256m \ -v /opt/frigate/config:/config \ -v /opt/frigate/media:/media/frigate \ -p 127.0.0.1:5000:5000 \ -p 127.0.0.1:8971:8971 \ ghcr.io/blakeblackshear/frigate:0.17.2Поставить Caddy для TLS
Caddyfile из двух строк: домен и reverse_proxy на локальный порт Frigate. Caddy сам получит и продлит сертификат Let's Encrypt.
<ip-с-дефисами>.fatmetal.net { reverse_proxy 127.0.0.1:5000 }
На нашем стенде Frigate поднялся на magic-DNS хосте с валидным сертификатом Let's Encrypt, принял видеопоток через go2rtc и начал детекцию объектов.
Что измерили после запуска
Все цифры сняты с живого стенда CPU4-RAM8-DISK100 с одной камерой 768x432 при 5fps и CPU-детектором.
- Образ - около 7.48 ГБ. Самый тяжелый образ из всех наших разборов: внутри стек детекции и ffmpeg.
- CPU под детекцией - около 379% (почти 4 ядра) на ОДНУ камеру. Это главный лимит на VPS.
- Скорость инференса - около 19 мс на кадр на CPU-детекторе.
- RAM контейнера - около 671 МиБ под нагрузкой.
- Детекция подтверждена - Frigate распознал на демо-потоке людей (7 объектов) и машины (3 объекта), события с кропами видны в Explore.
- TLS - Caddy выписал валидный сертификат на magic-DNS хосте, интерфейс открывается по HTTPS.
Где может сломаться
CPU-детекция не масштабируется
Одна камера 5fps на CPU - это несколько ядер. Две-три камеры или высокий fps упрутся в процессор. На своем железе проблему решает Coral TPU или Intel iGPU, но на облачном VPS ускорителя нет. Планируйте VPS как одну-камеру-максимум с детекцией либо как агрегатор без тяжелой детекции.
Камеры в локальной сети надо дотянуть до VPS
Если камеры дома за NAT без белого IP, их RTSP-поток нужно провести до облака - через VPN до домашней сети или проброс порта. Прямой доступ VPS к домашней камере просто так не появится.
Огромный образ и рост записей
Образ около 7.48 ГБ - первый pull долгий, закладывайте диск. Записи и снапшоты растут - настройте срок хранения (retain) и следите за местом.
Интерфейс наружу - только за TLS и авторизацией
Порт 5000 без авторизации держите на localhost, наружу отдавайте через reverse-proxy с HTTPS. У Frigate есть встроенная авторизация (порт 8971) - для доступа из интернета включайте ее.
Безопасность и обновления
Все видео, снапшоты и конфигурация - в томах на вашем сервере, без облаков вендоров камер. Frigate поддерживает встроенную авторизацию (порт 8971 с собственным входом); для инстанса с доступом из интернета включайте ее и отдавайте только по HTTPS. Пароли камер хранятся в config.yml - берегите этот файл.
Обновление - смена тега образа и пересоздание контейнера; данные в томах переживают перезапуск. Релизы у Frigate заметные (меняется схема конфига между минорными версиями), поэтому закрепляйте конкретный тег образа и читайте примечания к релизу перед обновлением.
Когда это НЕ ваш выбор
Если нужно вести детекцию нескольких камер, а ускорителя нет - облачный VPS не потянет, берите домашний мини-ПК с Coral TPU или Intel iGPU. Если камеры дома и вы не готовы тянуть их поток до облака через VPN - тоже держите Frigate дома. И если хочется готовое облачное видеонаблюдение без настройки - Frigate требует вдумчивой конфигурации камер и детекторов. Зато как свой NVR с ИИ-детекцией на своем сервере, агрегатор RTSP и связка с Home Assistant Frigate работает отлично.
Частые вопросы
Можно ли крутить детекцию нескольких камер на VPS?
На CPU - практически нет: одна камера 5fps съедает почти 4 ядра. Для нескольких камер нужен аппаратный ускоритель (Coral, Intel iGPU, NVIDIA), которого на облачном VPS нет. VPS хорош для одной камеры или как агрегатор без тяжелой детекции.
Чем Frigate лучше обычного детектора движения?
Он распознает именно объекты (человек, машина), а не любое движение пикселей. Это резко снижает ложные срабатывания от теней, дождя и качающихся веток и позволяет искать по типу объекта.
Нужен ли Home Assistant?
Нет, Frigate самостоятелен. Но связка популярна: события детекции по MQTT запускают автоматизации умного дома - включить свет, отправить уведомление со снимком.
Почему образ такой большой - 7.48 ГБ?
Внутри стек ИИ-детекции, модели, ffmpeg и go2rtc. Это плата за то, что все работает из одного контейнера. Закладывайте диск и время на первый pull.
Данные с камер правда остаются у меня?
Да. Видео, снапшоты и события лежат в томах на вашем сервере, без облаков вендоров камер и без подписки.
Итог
Frigate - NVR с ИИ-детекцией объектов на своем сервере, все видео и события у вас. Ключевой факт из замеров: детекция на CPU очень тяжелая (~4 ядра на одну камеру 5fps), для нескольких камер нужен аппаратный ускоритель, которого на VPS нет. Поэтому на облаке Frigate хорош как одна камера с детекцией или агрегатор RTSP и хранилище записей; тяжелую детекцию считайте на своем железе с Coral/iGPU.
Этот стек у нас запущен на тарифе CPU4-RAM8-DISK100. Нашли баг в гайде - напишите, поправим в течение дня.