Frigate:开源 AI 摄像头监控,在 Alpine Linux 上用 Docker 部署全流程

前言

想在家里装监控,但不想买海康威视的 NVR 录像机 —— 又贵又封闭。开源的 Frigate 方案是:随便一个摄像头(RTSP 协议) + 一台跑 Docker 的小主机 + AI 对象检测。

Frigate 的核心卖点是 AI—— 它用 TensorFlow Lite 模型实时分析视频流,识别画面里的人、车、猫、狗、包裹。不是那种「画面有动静就报警」的笨方案,而是「有个人走进了后院」的精确检测。

硬件要求

Frigate 本身吃资源不多,但 AI 检测需要算力:

加速方式延迟说明
Google Coral TPU<10ms最佳方案,USB 或 m.2 接口
Intel iGPU (OpenVINO)10-30ms大部分 Intel CPU 自带
CPU (无加速)50-200ms够用但慢,适合低分辨率

如果只是 1-2 个摄像头、检测人不检测车,CPU 模式够用。摄像头多了或者需要低延迟,加个 Coral TPU。

Alpine Linux 上的 Docker 安装

Alpine 默认没开 community 仓库,需要手动启用:

Terminal window
# 编辑 /etc/apk/repositories,取消 community 那行的注释
vi /etc/apk/repositories
apk update
apk add docker docker-compose
rc-update add docker boot
service docker start

Alpine 的包管理器是 apk,跟 apt 语法不同但有对应关系。如果你用 Debian / Ubuntu,这一步就是 apt install docker.io

Docker Compose 部署

services:
frigate:
container_name: frigate
image: ghcr.io/blakeblackshear/frigate:stable
restart: unless-stopped
privileged: true
shm_size: "256mb"
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config:/config
- ./storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
7 collapsed lines
ports:
- "5000:5000"
- "8554:8554" # RTSP 输出
devices:
- /dev/dri:/dev/dri # Intel 核显加速
environment:
FRIGATE_RTSP_PASSWORD: your-password

shm_size: 256mb 是给 /dev/shm 的大小 ——Frigate 用共享内存做视频帧缓冲,太小了会丢帧。

摄像头配置

核心配置文件 config/config.yml

mqtt:
enabled: false
cameras:
front_door:
ffmpeg:
inputs:
- path: rtsp://admin:password@192.168.1.100:554/stream1
roles:
- detect # AI 检测流(低分辨率)
- record # 录像流(全分辨率)
detect:
width: 640
height: 480
fps: 5
4 collapsed lines
record:
enabled: true
retain:
days: 7

两个关键概念:

  • detect 流:给 AI 分析的,分辨率不用太高,640x480、5fps 就够
  • record 流:录像存档的,用摄像头原始分辨率

对象检测配置

objects:
track:
- person
- car
- cat
filters:
front_door:
person:
min_score: 0.7 # 置信度阈值
threshold: 0.8

min_score 设太低会有很多误报(把树影识别成人),设太高会漏检。0.7 是个比较平衡的起点,根据实际情况微调。

踩坑记录

Alpine apk add docker 失败

症状:apk add docker 报 “no such package”。

原因:Alpine 的 docker 包在 community 仓库,默认没开。编辑 /etc/apk/repositories,找到 community 那行取消注释,然后 apk update

设备映射搞错

症状:Frigate 日志里找不到 /dev/dri,硬件加速不工作。

确认你的加速设备:Intel 核显是 /dev/dri,Coral TPU 是 /dev/apex_0(USB)或 /dev/coral(PCIe)。别搞混。

Terminal window
# 检查 Intel 核显
ls /dev/dri
# 检查 Coral TPU
lsusb | grep -i google

VA - API 驱动缺失

Intel 核显硬件加速需要 VA - API 驱动。Alpine 安装:

Terminal window
apk add intel-media-driver

Debian/Ubuntu:

Terminal window
apt install intel-media-va-driver

总结

Frigate 把监控这件事从「被动录像」变成了「主动识别」。画面里有没有人、有没有车、猫是不是又跳上了沙发 ——AI 实时告诉你。

在 Alpine 上部署比 Debian 多了一步开 community 仓库,但也就多这一步。之后 Docker Compose 拉起,接上摄像头,配好双码流,就能用了。

如果你家里有闲置的小主机和摄像头,花一个下午搭个 Frigate,比买成品 NVR 划算多了 —— 而且开源、可控、能折腾。