Полный гайд: Установка Frigate на Yandex Cloud с NetBird

Frigate NVR — система видеонаблюдения с AI
Frigate NVR

Полный гайд: Установка Frigate на Yandex Cloud с подключением к домашней сети через NetBird

Этот гайд описывает полный процесс развертывания системы видеонаблюдения Frigate на сервере в Yandex Cloud с хранением записей на отдельном диске и доступом к домашним камерам через защищённый VPN NetBird.

Гайд включает:


Архитектура

Yandex Cloud — облачная платформа
Yandex Cloud

Схема работы: камеры отдают RTSP-поток на устройство в домашней сети (роутер, NAS или ПК). NetBird соединяет это устройство с виртуальной машиной в Yandex Cloud. Frigate в Docker на VM получает потоки по NetBird IP, пишет записи на отдельный диск и отдаёт Web UI на порт 8971.

PLAINTEXT
Домашние камеры
      │
      │ RTSP
      │
Домашний сервер / роутер
      │
      │ NetBird VPN
      │
Yandex Cloud VM
      │
      │ Docker
      │
      │ Frigate
      │
      └── /data/frigate/media (записи)
Нажмите, чтобы развернуть и увидеть больше

Часть 1. Настройка NetBird

NetBird — Zero Trust VPN на базе WireGuard
NetBird

NetBird используется для создания защищённой приватной сети между:

Зачем это нужно: Камеры находятся дома, а Frigate — в облаке. Без VPN сервер в Yandex Cloud не сможет достучаться до RTSP-потоков камер в вашей локальной сети. NetBird создаёт зашифрованный туннель между облаком и домом — камеры остаются за NAT, но сервер получает к ним доступ как к устройствам в одной сети. Это безопаснее, чем пробрасывать порты на роутере.

Официальный сайт:

https://app.netbird.io/


Шаг 1. Регистрация и вход

Перейдите:

https://app.netbird.io/

Создайте аккаунт или войдите.

Зачем: NetBird Cloud управляет всеми подключёнными устройствами и правилами доступа. Без аккаунта вы не сможете создать Setup Key и связать сервер с домашней сетью.


Шаг 2. Создание Setup Key для сервера

Перейдите:

PLAINTEXT
Access Control → Setup Keys
Нажмите, чтобы развернуть и увидеть больше

Нажмите:

PLAINTEXT
Create Setup Key
Нажмите, чтобы развернуть и увидеть больше

Укажите:

Name:

PLAINTEXT
yandex-cloud
Нажмите, чтобы развернуть и увидеть больше

Group:

PLAINTEXT
remote
Нажмите, чтобы развернуть и увидеть больше

Сохраните Setup Key.

Пример:

PLAINTEXT
6A40F5F1-777-XXXX
Нажмите, чтобы развернуть и увидеть больше

Зачем: Setup Key — это одноразовый токен для подключения устройства к вашей NetBird-сети. Он привязывает сервер к группе remote и позволяет потом настроить правила: кто к кому может подключаться. Отдельный ключ для облачного сервера нужен, чтобы отличать его от домашних устройств в политиках доступа.

⚠️ Важно: используйте Setup Key, иначе устройство может отключиться.


Шаг 3. Установка NetBird на сервер Yandex Cloud

Подключитесь к серверу:

BASH
ssh skv@SERVER_IP
Нажмите, чтобы развернуть и увидеть больше

Установите NetBird:

BASH
curl -fsSL https://pkgs.netbird.io/install.sh | sh
Нажмите, чтобы развернуть и увидеть больше

Подключите сервер:

BASH
sudo netbird up --setup-key YOUR_SETUP_KEY
Нажмите, чтобы развернуть и увидеть больше

Проверьте статус:

BASH
netbird status
Нажмите, чтобы развернуть и увидеть больше

Должно быть:

PLAINTEXT
Connected: yes
Нажмите, чтобы развернуть и увидеть больше

Зачем: NetBird-клиент на сервере подключает его к вашей приватной сети и выдаёт ему виртуальный IP (например, 100.64.0.x). После этого сервер сможет обращаться к домашним устройствам по этому IP, как будто они в одной локальной сети.


Шаг 4. Установка NetBird дома

На домашнем сервере или компьютере:

BASH
curl -fsSL https://pkgs.netbird.io/install.sh | sh
Нажмите, чтобы развернуть и увидеть больше
BASH
sudo netbird up --setup-key YOUR_HOME_SETUP_KEY
Нажмите, чтобы развернуть и увидеть больше

Добавьте устройство в группу:

PLAINTEXT
Home
Нажмите, чтобы развернуть и увидеть больше

Зачем: Домашнее устройство (роутер, NAS или ПК с камерами) должно быть в сети NetBird и в группе Home. Тогда по правилам доступа сервер из группы remote сможет подключаться к нему. Группы нужны для сегментации: вы явно разрешаете, кто к кому имеет доступ.


Шаг 5. Настройка правил доступа

Перейдите:

PLAINTEXT
Access Control → Policies
Нажмите, чтобы развернуть и увидеть больше

Создайте правило:

Source:

PLAINTEXT
remote
Нажмите, чтобы развернуть и увидеть больше

Destination:

PLAINTEXT
Home
Нажмите, чтобы развернуть и увидеть больше

Action:

PLAINTEXT
Allow
Нажмите, чтобы развернуть и увидеть больше

Зачем: По умолчанию NetBird использует Zero Trust — устройства не видят друг друга, пока вы не разрешите. Это правило говорит: «устройства из группы remote (облачный сервер) могут подключаться к устройствам из группы Home». Без него ping и RTSP-подключения к камерам не пройдут.


Шаг 6. Проверка соединения

Получите NetBird IP домашнего устройства:

Пример:

PLAINTEXT
100.64.0.5
Нажмите, чтобы развернуть и увидеть больше

С сервера:

BASH
ping 100.64.0.5
Нажмите, чтобы развернуть и увидеть больше

Если работает — сеть настроена.

Зачем: Проверка подтверждает, что VPN работает и сервер в облаке может достучаться до домашней сети. Если ping проходит, Frigate тоже сможет получать RTSP-потоки с камер по NetBird IP.


Часть 2. Подключение и монтирование диска

Зачем отдельный диск: Системный диск (vda) в Yandex Cloud обычно 10–40 ГБ — этого мало для видеозаписей. Frigate пишет круглосуточно, и за несколько дней место закончится. Отдельный диск (vdb) на 256–512 ГБ даёт место для хранения записей с настраиваемым сроком хранения.

Проверяем диски:

BASH
lsblk
Нажмите, чтобы развернуть и увидеть больше

Пример:

PLAINTEXT
vda 40G
vdb 512G
Нажмите, чтобы развернуть и увидеть больше

Шаг 7. Форматирование диска

BASH
sudo mkfs.ext4 /dev/vdb
Нажмите, чтобы развернуть и увидеть больше

Зачем: Новый диск приходит «сырым» — без файловой системы. mkfs.ext4 создаёт ext4, которая хорошо подходит для Linux: журналирование, стабильность при сбоях, нормальная работа с большими файлами видео. Важно: форматирование удаляет все данные на диске.


Шаг 8. Монтирование

BASH
sudo mkdir /data
sudo mount /dev/vdb /data
Нажмите, чтобы развернуть и увидеть больше

Зачем: Диск нужно «привязать» к каталогу, чтобы система могла с ним работать. Без монтирования запись в /data пойдёт на системный диск. После mount всё, что пишется в /data, сохраняется на отдельном диске.

Проверка:

BASH
df -h
Нажмите, чтобы развернуть и увидеть больше

Шаг 9. Автомонтирование

Получаем UUID:

BASH
sudo blkid /dev/vdb
Нажмите, чтобы развернуть и увидеть больше

Редактируем:

BASH
sudo nano /etc/fstab
Нажмите, чтобы развернуть и увидеть больше

Добавляем:

PLAINTEXT
UUID=YOUR_UUID /data ext4 defaults,nofail 0 2
Нажмите, чтобы развернуть и увидеть больше

Зачем: После перезагрузки диск размонтируется, и Frigate перестанет писать записи. Запись в /etc/fstab заставляет систему автоматически монтировать диск при загрузке. UUID используется вместо /dev/vdb, потому что имена устройств могут меняться, а UUID диска — постоянный. nofail не даёт системе зависнуть при загрузке, если диск временно недоступен.


Шаг 10. Настройка прав

BASH
sudo mkdir -p /data/frigate/{config,media,db}
sudo chown -R skv:skv /data/frigate
Нажмите, чтобы развернуть и увидеть больше

Зачем: Frigate в Docker будет работать от вашего пользователя (или от root в контейнере). Каталоги config, media и db нужны для конфигурации, видеозаписей и базы данных. chown даёт вашему пользователю права на запись, чтобы не использовать sudo при редактировании конфигов и чтобы Docker мог писать в эти каталоги.


Часть 3. Установка Docker

Docker — платформа контейнеризации
Docker

Зачем Docker: Frigate поставляется как готовый Docker-образ со всеми зависимостями (Python, FFmpeg, детекторы и т.д.). Установка через Docker избавляет от ручной настройки окружения, конфликтов версий и упрощает обновления — достаточно перезапустить контейнер с новым образом.

Обновляем систему:

BASH
sudo apt update
Нажмите, чтобы развернуть и увидеть больше

Устанавливаем Docker:

BASH
sudo apt install docker.io -y
Нажмите, чтобы развернуть и увидеть больше

Запускаем:

BASH
sudo systemctl enable docker
sudo systemctl start docker
Нажмите, чтобы развернуть и увидеть больше

Добавляем пользователя:

BASH
sudo usermod -aG docker skv
newgrp docker
Нажмите, чтобы развернуть и увидеть больше

Проверка:

BASH
docker ps
Нажмите, чтобы развернуть и увидеть больше

Зачем usermod -aG docker: По умолчанию только root может запускать контейнеры. Добавление пользователя в группу docker позволяет запускать Docker без sudo, что удобнее и безопаснее для повседневной работы.


Часть 4. Установка Docker Compose

BASH
sudo apt install docker-compose -y
Нажмите, чтобы развернуть и увидеть больше

Проверка:

BASH
docker compose version
Нажмите, чтобы развернуть и увидеть больше

Зачем Docker Compose: Вместо длинной команды docker run с кучей флагов Compose описывает сервисы в YAML-файле. Проще хранить конфигурацию в репозитории, менять параметры и перезапускать одной командой docker compose up -d.


Часть 5. Установка Frigate

Frigate — NVR с AI-детекцией объектов
Frigate NVR

Создаем compose файл:

BASH
nano /data/frigate/docker-compose.yml
Нажмите, чтобы развернуть и увидеть больше
YAML
services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped

    shm_size: "512mb"

    volumes:
      - /data/frigate/config:/config
      - /data/frigate/media:/media/frigate
      - /data/frigate/db:/db
      - /etc/localtime:/etc/localtime:ro

    ports:
      - "8971:8971"
      - "8554:8554"
      - "8555:8555/tcp"
      - "8555:8555/udp"

    environment:
      - TZ=Europe/Berlin
Нажмите, чтобы развернуть и увидеть больше

Что за что в compose:


Часть 6. Создание конфигурации Frigate

BASH
nano /data/frigate/config/config.yml
Нажмите, чтобы развернуть и увидеть больше
YAML
mqtt:
  enabled: false

record:
  enabled: true
  retain:
    days: 3
    mode: all

cameras: {}
Нажмите, чтобы развернуть и увидеть больше

Зачем такая конфигурация: Минимальный конфиг для первого запуска. MQTT отключён — он нужен только для интеграции с Home Assistant. record включает запись с хранением 3 дней в режиме all (все кадры, не только при детекции). cameras: {} пустой — камеры добавите позже через Web UI или вручную в конфиг, указав RTSP-путь через NetBird IP (например, rtsp://100.64.0.5:554/stream1).


Часть 7. Запуск

BASH
cd /data/frigate

docker compose up -d
Нажмите, чтобы развернуть и увидеть больше

Проверка:

BASH
docker ps
Нажмите, чтобы развернуть и увидеть больше

Зачем -d: Флаг -d (detached) запускает контейнер в фоне. Без него терминал будет занят логами Frigate. Контейнер продолжит работать после закрытия SSH.


Часть 8. Получение пароля

BASH
docker logs frigate
Нажмите, чтобы развернуть и увидеть больше

или

BASH
docker logs frigate | grep password
Нажмите, чтобы развернуть и увидеть больше

Логин:

PLAINTEXT
admin
Нажмите, чтобы развернуть и увидеть больше

Зачем: При первом запуске Frigate генерирует случайный пароль и выводит его в логи. Это защищает Web UI от несанкционированного доступа. Пароль можно сменить в настройках после входа.


Часть 9. Доступ к Web UI

PLAINTEXT
http://SERVER_IP:8971
Нажмите, чтобы развернуть и увидеть больше

Зачем: Web UI — основной интерфейс Frigate: просмотр камер в реальном времени, настройка зон и масок, просмотр событий и записей, добавление камер. Убедитесь, что в Security Groups Yandex Cloud открыт порт 8971 для вашего IP, иначе доступ извне будет закрыт.


Часть 10. Проверка записи

BASH
ls /data/frigate/media
Нажмите, чтобы развернуть и увидеть больше

Зачем: Проверка, что Frigate пишет на отдельный диск. В media/recordings появятся каталоги по камерам и датам. Если камеры ещё не добавлены, каталоги будут пустыми — это нормально. Главное, что путь смонтирован и доступен для записи.


Структура

PLAINTEXT
/data/frigate
 ├── config
 ├── media
 ├── db
 └── docker-compose.yml
Нажмите, чтобы развернуть и увидеть больше

Назначение каталогов: config — конфиг и SQLite с событиями; media — записи, клипы и экспорты; db — дополнительные данные Frigate; docker-compose.yml — описание сервиса для перезапуска и обновлений.


Готово

Теперь Frigate работает на Yandex Cloud и имеет доступ к домашним камерам через NetBird.

Видео сохраняется на отдельном диске.

Система готова к production использованию.

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша