Всем привет.

Публикация по мотивам поста, где уважаемый @almirus показал неплохое железо, сегодня мы будем настраивать локалхост (решение без облака) для подключения этой камеры.

Изначальная статья понравилась, как и железо, еще раз спасибо автору. Было решено действовать: закупил пару камер, а когда они доехали, я, как фанат безоблачных решений, конечно же, решил натянуть сову на линукс на стоящий под столом сервер, а то чего он жрет свет просто так.

Почему не облако или SD-карта, слот для которой есть в самой камере:

  • облако — это не просто дорого, а запредельно дорого, и не гарантировано, что ваши записи там будут храниться. По классике жанра — нет облаков, есть чужие компьютеры;

  • SD карта находится в самой камере. Это небезопасно, воры могут украсть все вместе, да и карта может помереть от частой записи в любой неподходящий момент.

Пререквезиты:

  • x86-64 архитектура на локалхосте (спойлер — frigate поддерживает и другие)

  • deb-based OS, в данном случае ubuntu 24.04, но везде, где есть докер, может работать. Докер должен быть установлен, размазывать статью по его установке не будем;

  • сетевая связность между сервером и камерой, т.к. локалхост, оно все в одном сегменте, в моем случае — обычный бытовой роутер keenetic;

  • минут 10 времени.

По традиции все началось с установки официального приложения, QR-код на обычный Android/IOS шел в коробке с камерой. Зачем? Да потому что к Wi-Fi камеру по-другому подключить нельзя, она просто не знает ваш пароль к нему. Ethernet-разъема там нет, только type-C с питанием, хотя, возможно, разъем и может выполнять роль оного. Регистрация — next — next — next. Камера получила адрес в локальной сети, а мы — доступ к её веб‑интерфейсу; включили нужное:

Выключили ненужное:

На этом моменте вам хром упорно начнет орать, что дефолтный пароль давно утек и его надо сменить. И он прав: даже несмотря на то, что сетка локалхост, дефолтные пароли всегда меняем.

Что мы сделали на этих скриншотах?

  1. Установили поток в h264. Почему? Да потому что в 2025 году хром не умеет в h265, только FF. Если вы фанат FF, и он у вас основной браузер — наслаждайтесь h265, далее вся статья следует по пути h264.

  2. Включили детекторы и распознавания человеков, убедились, что нотификации приходят в приложение.

  3. Отключили реагирования на звук, кажется, они же отключают звуковую сигнализацию других детекторов, т.е. у вас камера не будет орать, когда человек вошел в кадр. И это правильно.

Далее доступ в интернет для камеры нужно выключить, ничего не сломается и никто не умрет. Ну, может, кроме официального приложения, которое хочет нереальных денег за cloud storage ваших алертов и которое на этот момент уже можно удалить с телефона. Не забываем на роутере выставить статик адрес для камеры, чтобы софт потом не потерял ее.

После настройки камеры были мучения по выбору софта, было где-то 5 попыток использования опенсорса, 1 шаревары, но frigate прямо зашел, на всякий случай ссылка на официальный сайт — https://docs.frigate.video/

Идем к инсталляции:

создаем файлик /opt/frigate/docker-compose.yaml (например)

services:
frigate:
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "1024MB"
restart: unless-stopped
volumes:
- /mnt/frigate/config:/config
- /mnt/frigate/media:/media/frigate
- /etc/localtime:/etc/localtime:ro
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /mnt/frigat/cache
tmpfs:
size: 1000000000
ports:
- "8971:8971"
- "8554:8554" # RTSP feeds
- "8555:8555/tcp" # WebRTC over tcp
- "8555:8555/udp" # WebRTC over udp

Здесь мы сделали маппинги конфигов, записей в нашей жирной шаре /mnt/frigate (конечно же, нужно все после создать руками), выделили 1Гб оперативы по shared memory, которое будет перераспределяться между соседними камерами, выделили кэш-файл в оперативке тоже в гиг.

Важный момент здесь — т.к. у меня дешевый локалхост, то у меня нет GPU, которое крайне рекомендуют к распознавалке, поэтому и в конфиг нет проброса оного. Если у вас есть — обязательно пробрасывайте, как рекомендует вендор.

Далее стандартно
docker compose up -d
и проверяем, что контейнер поднялся:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40a7836be86b ghcr.io/blakeblackshear/frigate:stable "/init" 25 hours ago Up About an hour (healthy) 0.0.0.0:8554-8555->8554-8555/tcp, :::8554-8555->8554-8555/tcp, 5000/tcp, 0.0.0.0:8971->8971/tcp, :::8971->8971/tcp, 0.0.0.0:8555->8555/udp, :::8555->8555/udp frigate-frigate-1

Важный момент: при первом старте обязательно нужно тыкнуть docker logs frigate‑frigate-1, чтобы получить админпароль. Впрочем если вы забыли‑не записали‑протеряли, всегда есть сброс оного — https://docs.frigate.video/configuration/authentication/

После записывания пароля идем в админку frigate, https://192.168.1.107:8971/ (107 — адрес нашего локалхоста), проверили, что доступ работает, камер нет, закрываем. Идем редактировать конфиги, потому что в вебе это разломано и/или не рабочее.

cat /mnt/frigate/config/config.yaml
(здесь я проиграл редактору, и просто оставлю картинку)

Что мы здесь сделали:
- настроили адрес камеры, ее поток, URL, еще раз спасибо автору изначальной статьи;
- установили хранение по времени в 30 дней всех алертов, согласно https://docs.frigate.video/configuration/record;
- выключили GPU, потому что, как ни странно, он у меня так и не появился;
- включили алерты по звукам и категориям;
- версии, распознавания лиц и т.д. здесь случайно доползли из веба;
- выключили TLS, важный момент тоже. frigate ставит по умолчанию самоподписный сертификат; мы как настоящие владельцы локалхоста, конечно же, настроим фронтом nginx, выпишем сертификаты, настроим авторизацию.

Но потом, не в рамках этой статьи.

Далее перезапускаем стандартно же "docker restart frigate-frigate-1" и наслаждаемся картинкой.

В покое, без детектов лиц, тревог, GPU и прочего инсталляция кушает за счет ffmpeg ну, скажем так, немного:

Как выглядит алертинг в веб-интерфейсе: пока камера лежала на кровати в отладке, на каждый сегмент можно ткнуть и реально увидеть, что происходит. Место на дисках не пилится и не жрется, как не в себя.

Тестировал на себе, ходил, как Надежда Бабкина из анекдота, туда‑сюда.

TBD для себя — понять, почему timestamp везде 00 unix time и не берется с камеры или ОС, несмотря на проброс /etc/localtime:/etc/localtime:ro

Всем спасибо за внимание!

Комментарии (4)


  1. falcon4fun
    10.09.2025 04:38

    Да потому что в 2025 году хром не умеет в h265

    А? Что? В иммич все видео в 265-ом, никаких проблем с воспроизведением в хроме

    https://caniuse.com/hevc

    https://www.intel.com/content/www/us/en/support/articles/000037112/graphics.html

    Это раз. Два:

    Если эта настроенная шляпа не умеет в директ-то-диск, а зачем-то реенкодит видео, даже нормальный сервак без ГПУ сдохнет на паре камер, потому что писать в 2к, 20fps и 4к битрейта будет только очень умный человек. А в реальной жизни никто выше 15 кс не будет.

    И оверлей (для записи и превью) нужно использовать или тот, что сделан на камере нативно, или воспользлваться вторым слоем из маленького размера видео.

    Короче, то что тут наконфигано - шляпа какая-то. И не выдержит и 10 камер. Говорю как владелец крайне кривого и не идеального сетапа на базе крайне кривого (и старого) софта, но с 40 камерами с обработкой в 700 MPx/s и общим битрейтом в 8 МБ/с на обычном 4108 silver с запасом в 50% CPU

    Если я свой сетап переделаю в реенкод, то сдохнет примерно на тригере пяти камер одновременно, т.к. большее 50 MPx/s оно не сможет выдать физически.


  1. max9 Автор
    10.09.2025 04:38

    В иммич все видео в 265-ом, никаких проблем с воспроизведением в хроме

    прокликал почти все тут - https://lf-tk-sg.ibytedtos.com/obj/tcs-client-sg/resources/video_demo_hevc.html#main-bt709-sample-1 на последнем хроме с официальной репы. в лучше случае только звук, видео нигде нет.

    и да, сраный линукс, со встройкой рязани

    Если эта настроенная шляпа не умеет в директ-то-диск, а зачем-то реенкодит видео, даже нормальный сервак без ГПУ сдохнет на паре камер, потому что писать в 2к, 20fps и 4к битрейта будет только очень умный человек. А в реальной жизни никто выше 15 кс не будет.

    Альтернатива-то есть? frigate действительно хранит в странном формате, реенкодит


    1. GidraVydra
      10.09.2025 04:38

      прокликал почти все тут - https://lf-tk-sg.ibytedtos.com/obj/tcs-client-sg/resources/video_demo_hevc.html#main-bt709-sample-1 на последнем хроме с официальной репы. в лучше случае только звук, видео нигде нет.

      и да, сраный линукс

      Ну вы же сами ответили на свой вопрос в последнем предложении. Пользуйтесь нормальными операционными системами.


      1. max9 Автор
        10.09.2025 04:38

        да, тут вы правы, стоит откорректировать статью.