Frigate
Видеорегистратор для своих IP-камер, который работает на вашем сервере: сохраняет видео, распознает людей и машины, ищет события в архиве. На стенде даже один демопоток с распознаванием на CPU занял около 2,5 ядра; разберем настройку камер, расчет диска и выбор между VPS и своим железом.
Вердикт
- владельцу объекта, которому нужен архив отдельно от места установки камер
- администратору RTSP-камер, который хочет искать записи с людьми и машинами
- для выбора своего срока хранения вместо тарифа за каждую камеру
- для покупки готового охранного сервиса с обслуживанием камер
- для тяжелой детекции на обычном VPS без ускорителя
- для камер, у которых доступен только закрытый облачный протокол
- если на объекте нестабильный интернет или нельзя обеспечить защищенное соединение между VPS и камерами
Свой архив камер с поиском по объектам
Обычная запись отвечает на вопрос «что было в это время». Frigate добавляет поиск по объектам: откройте события с людьми, машинами или велосипедами и перейдите к нужному фрагменту.
На главном экране виден текущий поток. В обзоре событий открывается видеозапись с временной шкалой, а Search группирует найденные объекты и показывает снимки. Это самостоятельный NVR, то есть сетевой видеорегистратор.
Базовая установка хранит видео и базу событий на вашем диске. Облачная учетная запись производителя камеры и подписка Frigate+ для нее не нужны. Настройки и рабочие экраны доступны по-русски.
Что изменилось после 0.17.2
В прежнем разборе настройка шла через config.yml. В 0.18.0 появился полноценный Settings: глобальные параметры, управление камерами, запись, снимки и Profiles собраны в панели.
Теперь срок архива можно увидеть и изменить в разделе записи. Profiles вынесены на отдельный экран; в исходной установке они выключены. Обзор событий и поиск получили новый интерфейс.
Есть и несовместимости: на диске снимки теперь сохраняются как чистые WebP вместо JPEG с аннотациями. Изменилась схема зон, масок и нескольких GenAI-провайдеров; старые параметры и API экспорта удалены.
Внутри нового образа установлены FFmpeg 8.1.1 и go2rtc 1.9.14. Переход стоит начинать с копии конфигурации и базы, затем сверять настройки с примечаниями к релизу.
Лицензия ядра остается MIT. Указанная в прежних метаданных AGPL-3.0 была ошибкой описания, а не сменой условий в новой версии.
Чем отличается от Ivideon и Blue Iris
Frigate позволяет самому выбирать сервер, камеры и глубину архива. Ivideon продает готовые облачные услуги, а Blue Iris переносит запись на ваш Windows-компьютер.
| Продукт | Цена на 9 октября 2026 | Что оплачивается |
|---|---|---|
| Frigate | Базовый NVR бесплатен | Свой сервер, диск и обслуживание |
| Frigate+ | 50 $ в год | Дополнительные модели, до 12 дообучений |
| Ivideon Cloud | От 350 руб./камера/месяц при годовой оплате | Облачный архив на 3 дня |
| Blue Iris Full | 99,95 $; обслуживание после первого года 44,95 $/год | Windows-лицензия до 128 камер |
Ivideon доступен российскому покупателю: рублевые тарифы, карта, СБП и счет. Выбор Frigate здесь связан с собственным архивом и конфигурацией, а не с невозможностью оплатить конкурента.
Frigate+ не входит в бесплатную установку. Лицензия этих моделей отдельно ограничивает обслуживание чужих камер и перепродажу моделей в составе сервиса.
Сравнивайте полную стоимость: сервер, дополнительный диск, канал до камер и работу администратора. Нижняя цена облачного архива сама по себе не доказывает, что самостоятельный NVR дешевле.
Как поток превращается в запись и событие
Frigate объединяет Python-бэкенд, веб-панель и SQLite в одном контейнере. FFmpeg принимает видео, встроенный go2rtc передает поток, детектор распознает объекты. Caddy на сервере обеспечивает HTTPS и вход.
Запись и детекция идут разными путями. Архив сохраняет исходное видео, а для распознавания кадры декодируются и передаются детектору. Поэтому снижение detect.fps само по себе не уменьшает битрейт записи.
В этой установке config.yml и база frigate.db находятся в /opt/frigate/config. Записи, снимки и экспорт лежат в /opt/frigate/media. Рабочий буфер /tmp/cache размещен в памяти и не служит архивом.
Какой сервер и диск выбрать
Для повторения инструкции возьмите CPU4-RAM8-DISK100 с Ubuntu 24.04 LTS, архитектура x86-64. На стенде такой сервер стоил 1100 руб./месяц; это отправная конфигурация, а не минимум вендора.
Сначала определите срок хранения и битрейт камер. Наш демопоток за короткие окна записи дает расчетные 5-5,3 ГБ в сутки: три дня занимают 15-16 ГБ, тридцать - 150-160 ГБ.
Это расчет для конкретного видео, а не универсальный расход камеры. При выборе диска оставляйте место системе, образам, базе и снимкам; архив на месяц в 100 ГБ не помещается.
Когда емкости не хватает, подключайте диск и монтируйте его в /opt/frigate/media до запуска. Frigate пишет архив в файловую систему; штатной настройки записи прямо в S3 в установленной версии нет.
До переноса реальных камер на VPS обеспечьте сетевой путь до их RTSP-адресов. Камера с адресом локальной сети объекта не станет доступной из облака только потому, что регистратор установлен.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, после установки получаете рабочий домен, валидный TLS и файл с доступами.
Рекомендуемая конфигурация:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe от 990 ₽/мес
Развертывание на Fatmetal Cloud Server
Нужны SSH-доступ с sudo и базовое знакомство с Linux. Начните с чистой Ubuntu: ниже весь состав установки, конфигурация камеры, защита панели и запуск.
Установите Docker
Выполняйте команды в root-shell: sudo -i. Официальный репозиторий дает Engine и плагин Compose; без них следующие шаги не запустятся.
apt-get update && apt-get install -y ca-certificates curl install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable' > /etc/apt/sources.list.d/docker.list apt-get update && apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginПоставьте Caddy и задайте адрес
Адрес ваш-домен должен вести на сервер; откройте входящие TCP 80 и 443 для сертификата и панели. На Fatmetal подойдет автоматически разрешаемый адрес IP-с-дефисами.fatmetal.net.
curl -fsSL https://github.com/caddyserver/caddy/releases/download/v2.11.7/caddy_2.11.7_linux_amd64.deb -o /tmp/frigate-caddy.deb apt-get install -y /tmp/frigate-caddy.deb DOMAIN=ваш-домен mkdir -p /opt/frigate/{config,media,demo} cd /opt/frigateПодготовьте поток для проверки
Это зацикленное тестовое видео с людьми и машинами. Оно позволяет проверить запись до подключения вашей камеры; без stream_loop поток закончится вместе с файлом.
curl -fsSL https://raw.githubusercontent.com/intel-iot-devkit/sample-videos/master/person-bicycle-car-detection.mp4 -o demo/sample.mp4 cat > config/config.yml <<'CFG' mqtt: {enabled: false} auth: {enabled: false} detectors: {cpu1: {type: cpu}} go2rtc: ffmpeg: {file: "-re -stream_loop -1 -i {input}"} streams: {demo: ["ffmpeg:/demo/sample.mp4#input=file"]} cameras: demo: ffmpeg: inputs: [{path: "rtsp://127.0.0.1:8554/demo", input_args: preset-rtsp-restream, roles: [detect, record]}] detect: {enabled: true, width: 768, height: 432, fps: 5} objects: {track: [person, car, bicycle]} record: enabled: true continuous: {days: 3} motion: {days: 3} alerts: {retain: {days: 3, mode: all}} detections: {retain: {days: 3, mode: all}} snapshots: {enabled: true} CFG chmod 600 config/config.ymlЗакрепите образ и постоянные каталоги
Тег удерживает проверенную версию. Порт 5000 остается локальным: вход предоставляет Caddy, а встроенная авторизация Frigate выключена.
cat > compose.yml <<'COMPOSE' services: frigate: image: ghcr.io/blakeblackshear/frigate:0.18.0 container_name: frigate restart: unless-stopped shm_size: 256mb environment: HTTP_PROXY: http://api-proxy.fatmetal.net:8080 HTTPS_PROXY: http://api-proxy.fatmetal.net:8080 NO_PROXY: localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,frigate,.fatmetal.net,.fatmetal.ru volumes: ["./config:/config", "./media:/media/frigate", "./demo:/demo:ro"] tmpfs: ["/tmp/cache:size=1000000000"] ports: ["127.0.0.1:5000:5000"] COMPOSEСоздайте вход и включите HTTPS
Сгенерируйте собственный пароль и сохраните его в менеджере паролей. Логин frigate дает одному администратору доступ к панели.
umask 077 openssl rand -base64 24 > /root/frigate-password.txt HASH=$(caddy hash-password < /root/frigate-password.txt) cat > /etc/caddy/Caddyfile <<CADDY $DOMAIN { basic_auth { frigate $HASH } reverse_proxy 127.0.0.1:5000 } CADDY chown root:caddy /etc/caddy/Caddyfile chmod 640 /etc/caddy/Caddyfile caddy validate --config /etc/caddy/Caddyfile systemctl reload caddyЗапустите Frigate и проверьте запись
Дождитесь healthy в docker ps и версии в API. Затем откройте https://ваш-домен, войдите и посмотрите живую камеру Demo, архив и события Search.
docker compose pull docker compose up -d docker ps --filter name=frigate until curl -fsS http://127.0.0.1:5000/api/version; do sleep 3; done
После запуска найдите новые MP4 в /opt/frigate/media/recordings и событие person в Search. Один ответ HTTP 200 показывает доступность страницы, но не подтверждает запись.
Настройте камеры, запись и уведомления
Откройте «Настройки» → «Глобальная конфигурация» → «Запись». Включите запись и задайте дни непрерывного хранения и хранения движения; для событий предупреждений и обнаружений сроки задаются отдельно.
Чтобы заменить демо, откройте config.yml и поменяйте значение go2rtc.streams.demo на RTSP-адрес вашей камеры. Сохраните имя demo в cameras, задайте width и height под поток детекции, затем пересоздайте контейнер.
cd /opt/frigate
nano config/config.yml
# go2rtc.streams.demo: ["rtsp://ЛОГИН:ПАРОЛЬ@IP-КАМЕРЫ:554/stream"]
docker compose up -d --force-recreate frigateДля остальных параметров используйте управление камерами в Settings. После изменения проверяйте три вещи: живой кадр, появление нового сегмента записи и событие с нужным объектом.
Уведомления. В этой конфигурации MQTT выключен. Запись и поиск событий работают самостоятельно; Home Assistant и доставка оповещений не входят в установленный состав.
GenAI Chat. Нужен собственный ключ выбранного провайдера. Прокси к внешним API http://api-proxy.fatmetal.net:8080 входит в VPS; переменные уже заданы в Compose, отдельная настройка сети не нужна.
На установленном Frigate получен ответ Chat через этот прокси. Основная детекция людей и машин при этом остается локальной и не требует ключа внешней модели.
Что ограничивает VPS на практике
Стенд: CPU4-RAM8-DISK100, Xeon E5620 2,4 ГГц, Ubuntu 24.04.4, Docker 29.9.0. Один локальный H.264-демопоток 768×432, CPU-детектор, заданные 5 кадров/с для детекции.
| Режим Frigate | Память процессов | CPU |
|---|---|---|
| Камера выключена | 500 МиБ | 2,6% |
| Запись без детекции объектов | 561 МиБ | 11,3% |
| Запись и CPU-детекция | 590 МиБ | 254% |
100% CPU соответствует одному ядру. Детекция занимает около 2,5 ядра, тогда как запись без нее значительно дешевле. Память в таблице не включает файловые буферы и память ядра.
Фактически камера передавала в обработку медианные 3,6 кадра/с, а обрабатывались 1,8. Поэтому заданные 5 кадров/с не стали фактической скоростью детекции; ориентироваться только на настройку fps нельзя.
Образ занимает 8,7 ГБ, первый pull занял 315 секунд. Повторный запуск с готовым образом доходил до рабочего API за 15 секунд, до healthy за 17 секунд.
На корневом диске после установки было занято 11,4 ГБ, свободно 91,5 ГБ. Ответ главной страницы занимал медианные 21 мс; задержка видеовоспроизведения этим числом не измеряется.
Проверено на версии v0.18.0, 9 октября 2026. На новых версиях результаты могут отличаться.
Где может сломаться
Причина. Репозиторий Cloudsmith вернул отказ на InRelease, и apt перестал обновлять список пакетов.
Решение. Удалите добавленный источник: rm -f /etc/apt/sources.list.d/caddy-stable.list. Затем установите официальный .deb из шага выше вместо этого репозитория.
Причина. Стандартный шаблон go2rtc для файла не зацикливает видео.
Решение. Задайте go2rtc.ffmpeg.file со строкой -re -stream_loop -1 -i {input}, как в конфигурации выше, затем docker compose restart frigate.
Причина. Адрес сервера уже использовали для выпуска сертификатов; достигнут недельный лимит центра сертификации.
Решение. Посмотрите дату retry в journalctl -u caddy -n 100 --no-pager, дождитесь ее и выполните systemctl restart caddy. Не отключайте проверку сертификата в рабочем доступе.
Для диагностики камеры начните с docker logs --tail 100 frigate. Логи FFmpeg показывают, доступен ли источник; API /api/stats показывает скорость обработки и пропущенные кадры.
Резервная копия, восстановление и обновление
Порт 5000 оставляйте на localhost. Caddy закрывает панель паролем и HTTPS; конфигурация с паролями камер и резервные копии должны быть доступны только администратору.
Для согласованной копии SQLite остановите Frigate и сохраните весь config-каталог вместе с compose.yml. Если требуется сохранить видеодоказательства, архивируйте также media; записи во время остановки не создаются.
cd /opt/frigate
umask 077
docker compose stop frigate
tar -czf /root/frigate-backup.tgz config compose.yml media
docker compose up -dПеред обновлением выполните эту копию, затем смените тег image в Compose на выбранный стабильный релиз. Загрузите образ и пересоздайте контейнер:
cd /opt/frigate
docker compose pull
docker compose up -d
docker logs --tail 100 frigate
curl -fsS http://127.0.0.1:5000/api/versionПосле обновления проверьте live, новые записи и поиск событий. Для восстановления верните сохраненные конфигурацию, базу и Compose с прежним тегом вместе, а не только старый образ.
cd /opt/frigate
docker compose down
mv config config.before-restore
tar -xzf /root/frigate-backup.tgz
docker compose up -dВ 0.18.0 исправлена high-уязвимость GHSA-74fj-g666-3rv9, затрагивающая старую встроенную авторизацию. Остаются medium advisories: Web Push SSRF, падение go2rtc от злонамеренного RTSP-источника, обход камерных ACL. Ограничивайте доступ к панели и подключайте только доверенные источники.
Какие компоненты обслуживают архив
- Caddy - единственная внешняя точка входа этой установки; журнал сертификатов доступен через journalctl.
- Хранилище сервера - config и media переживают пересоздание контейнера; копию /root/frigate-backup.tgz перенесите за пределы этой машины.
- Внешний провайдер моделей - дополнительный компонент для Chat, со своим ключом и оплатой; для обычной записи он не нужен.
Выбирайте компоненты вокруг реальной задачи: для удаленного архива важнее емкость диска и доступность потока, чем добавление сторонних интеграций в начальную установку.
Когда это НЕ ваш выбор
Нужно гарантированно обрабатывать много камер
На обычном VPS нет GPU или TPU. Число реальных камер и стабильные 5 кадров/с этим стендом не подтверждены; тяжелую детекцию разумнее размещать рядом с камерами на подходящем железе.
На объекте нестабильный интернет или закрытые камеры
VPS требует постоянного доступа к видеопотоку. Для камер за NAT сначала нужен защищенный сетевой путь, а закрытый протокол производителя не заменяется установкой Frigate.
Нужны отдельные права для сотрудников
Показанная схема дает одному администратору весь доступ через Basic-auth. Разделение пользователей и прав по камерам в ней не настроено.
Вы покупаете управляемое видеонаблюдение
Frigate требует обслуживания сервера, настройки камер и копий архива. Открытая лицензия и русская панель не заменяют поддержку охранного сервиса.
Частые вопросы
Нужна ли подписка для поиска людей и машин?
Нет. Базовый CPU-детектор создает события person, car и bicycle без Frigate+ и ключа внешней модели.
Можно ли отключить распознавание и сохранить запись?
Да: задайте detect.enabled: false для камеры. На стенде запись продолжалась, а нагрузка CPU существенно снижалась.
Почему уменьшаю detect.fps, а архив не становится меньше?
Архив сохраняет исходный поток. FPS детекции управляет обработкой кадров, а емкость записи определяется битрейтом и сроком хранения.
Где лежат база и снимки?
SQLite и config.yml находятся в /opt/frigate/config, а архив и чистые WebP-снимки - в /opt/frigate/media.
Как войти после ручной установки?
Откройте https://ваш-домен, логин frigate. Сгенерированный пароль находится в /root/frigate-password.txt; считайте его по SSH и сохраните у себя.
Как включить русский интерфейс?
На стенде достаточно русского языка браузера: локаль ru-RU дала русские Settings, Search и экраны воспроизведения.
Итог
Frigate 0.18 делает собственный архив удобнее: настройка записи доступна в панели, события ведут к нужному фрагменту. Для VPS сначала оценивайте CPU, связь с камерами и срок хранения.
Начните с демопотока по инструкции, убедитесь в записи и воспроизведении, затем подключайте свою камеру. Если цель - тяжелая детекция, выбирайте оборудование под нее до переноса архива.
Рекомендуемая конфигурация для установки:
4 vCPU · 8 ГБ RAM · 100 ГБ NVMe
Не хотите устанавливать вручную?
Запустите Frigate на этой конфигурации автоматически - от 990 ₽/мес.