如何使用 Docker 安装和配置 Frigate:完整指南

最后更新: 2026年15月09日

  • 推荐使用 Docker Compose 安装 Frigate。
  • 在计算机上直接安装Linux系统可获得最佳性能。
  • FFmpeg加速和AI检测是不同的过程。
  • 端口 8971 提供经过身份验证的接口;5000 是内部接口,没有身份验证。
Frigate with Docker 用于智能视频监控

Frigate 允许您创建本地视频监控系统,该系统能够录制来自 IP 摄像头的视频,并利用人工智能模型来检测人员、车辆、动物和其他物体。所有处理都可以在您自己的网络内完成,无需持续向制造商的服务器发送图像。

除了提供更强的隐私控制能力外,Frigate 还允许您集中管理多个…… 监控摄像头仅保留重要录音,并生成稍后可在 Home Assistant 中使用的事件。

推荐的安装方法是: Docker Compose然而,Frigate并非传统意义上的容器:解码多个视频流和运行检测模型会消耗大量资源。为了实现稳定部署,正确配置存储、共享内存、摄像头流和硬件访问至关重要。

如何将 Frigate 与 Home Assistant 结合使用
相关文章:
将 Frigate 集成到 Home Assistant 的完整指南

你需要什么样的硬件和操作系统?

安装 Frigate 和 Docker 所需的硬件

护卫舰最适合 Docker 直接安装在基于 Debian 的 Linux 发行版上这种配置可以减少开销,并方便访问 GPU、AI 加速器和其他物理设备。

它也可以在虚拟机中运行,但您需要正确配置硬件直通。Proxmox 文档建议使用 QEMU 虚拟机来运行 Docker。虽然可以在 LXC 容器中安装 Frigate,但这并非官方支持,并且可能会使对某些设备的访问变得复杂…… /dev/dri一个 Coral USB 或 NPU。

树莓派适合小型系统,尤其是在搭配加速器和外置存储设备的情况下。不过,性能会受到摄像头数量、分辨率、编解码器以及启用功能等因素的影响。此外,如果同时连接 Coral USB 摄像头和固态硬盘,则需要注意电源问题,因为可能需要使用带电源的 USB 集线器。

开始之前,请检查以下要求:

  • 一台安装了 Docker 和 Docker Compose 插件的 Linux 服务器。
  • 一个或多个兼容RTSP的摄像头。
  • 稳定的网络连接,最好是通过以太网。
  • 有足够的空间用于录音。
  • 如果要使用目标检测,则需要兼容的 GPU、NPU 或加速器。
  • 只有当您想要将 Frigate 与 Home Assistant 集成时才需要 MQTT 代理。

Frigate 使用多个内部路径,在创建容器时必须考虑这些路径:

  • /config 它存储配置文件、SQLite 数据库和其他必要数据。
  • /media/frigate 它包含录音、捕获和导出内容。
  • /tmp/cache 在处理视频片段之前,先将其暂时保存。
  • /dev/shm 它将解码后的帧存储在内存中。

建议组装 /tmp/cache 作为 tmpfs这样,临时数据段会被写入内存,从而减少对固态硬盘不必要的写入。您无需手动映射。 /dev/shm它的容量由该参数控制。 shm_size Docker 的。

如何计算护卫舰的共享内存

Docker 通常为每个容器分配 64 MB 的共享内存。Frigate 使用此空间存储解码后的帧,因此当连接多个摄像头时,该内存可能不足。

当共享内存耗尽时,容器可能会停止运行并显示以下消息 “总线故障”对于两台以 720p 分辨率进行检测的摄像机来说,128 MB 的值通常足够了,但是对于拥有更多摄像机或更高分辨率视频流的安装,则需要更大的容量。

独家内容 - 点击这里  如何编写安卓应用程序

该计算取决于用于检测的数据流分辨率,而不是用于录制的视频分辨率。Frigate 提供了一个参考公式:

(anchura × altura × 1,5 × 20 + 270480) ÷ 1048576

所有摄像头的总占用空间需要加上大约 40 MB,这是存储在内存中的日志占用空间。您也可以使用官方文档中提供的 SHM 计算器。

在 Docker Compose 文件中,设置方式如下:

shm_size: "512mb"

对于拥有多台摄像头的家庭设置来说,512 MB 是一个合理的起始值,但并非强制值。如果容器持续显示 总线错误 增加限制后,还要检查打开的进程和文件数量的限制。

智能家居系统
相关文章:
家庭自动化小工具:2024 年最佳智能家居设备终极指南

利用人工智能进行视频加速和检测

在 Frigate 中,家庭自动化设备代表了视频加速和物体检测。

Frigate 执行两项不同的任务,不应混淆。一方面,FFmpeg 必须…… 解码视频流另一方面,检测器运行人工智能模型来识别物体。

使用集成式 Intel 或 AMD GPU、Nvidia 显卡或其他兼容硬件可以加速解码。这需要在 Docker 中配置相应的设备并设置适当的值。 hwaccel_args 在护卫舰上。

目标检测可以使用多种系统来实现:

  • Google Coral Edge TPU: 提供 USB、M.2 和 Mini PCIe 版本。
  • OpenVINO: 适用于英特尔处理器、集成显卡和Arc显卡。
  • Hailo-8 和 Hailo-8L: 适用于 x86 计算机和 Raspberry Pi 5 等开发板。
  • 英伟达: 使用与 TensorRT 兼容的特定 Frigate 镜像。
  • AMD ROCm: 适用于某些兼容的AMD显卡。
  • MemoryX MX3: 这是一个由社区支持的选项,需要自己的驱动程序和其他组件。

基于CPU的检测器适用于测试安装情况,但通常并非多摄像头长期使用的最佳选择。功耗取决于所用型号、检测分辨率、帧速率以及图像中的运动量。

如果您使用的是 Coral USB,通常需要将 USB 总线传递给容器:

devices:
  - /dev/bus/usb:/dev/bus/usb

对于基于 VAAPI 的 Intel 或 AMD GPU,通常会使用如下设备:

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128

这些路径可能因设备而异。请在主机上检查这些路径,并仅添加您实际需要的设备。以特权模式永久运行容器可以简化一些测试,但它会授予不必要的权限,对于最终安装而言并非最安全的选择。

如何使用 Docker Compose 逐步安装 Frigate

如何使用 Docker Compose 逐步安装 Frigate

创建两个永久文件夹:一个用于设置,一个用于录制文件。例如,您可以使用:

mkdir -p ~/frigate/config
mkdir -p ~/frigate/storage
cd ~/frigate

接下来,创建一个名为“ compose.yaml 基本配置如下:

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped
    stop_grace_period: 30s
    shm_size: "512mb"

    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config:/config
      - ./storage:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000

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

    environment:
      FRIGATE_RTSP_PASSWORD: "CAMBIA_ESTA_CONTRASEÑA"

本示例未包含任何加速设备,因为路径取决于所使用的硬件。如果您有 GPU、Corel 或 NPU,请添加相应的模块。 devices 在启动容器之前进行相应操作。

标签 stable 它适用于 AMD64 系统和 ARM64 架构的树莓派,后者使用优化版本。无需为 64 位树莓派手动选择不同的镜像。使用 Nvidia、ROCm 或某些 Rockchip 处理器的安装需要使用特定的标签。

独家内容 - 点击这里  如何检测网站是否因地区限制而屏蔽您

启动容器:

docker compose up -d

经过身份验证的界面将可通过以下方式访问:

https://IP_DEL_SERVIDOR:8971

由于 Frigate 初始使用自签名证书,您的浏览器可能会显示警告。首次启动时,系统会生成管理员用户名和临时密码。您可以通过以下命令获取这些信息:

docker logs frigate

登录并更改您的密码 设置 > 用户新密码长度必须至少为 12 个字符。

Frigate 的内部接口和 API 也使用 5000 端口,无需身份验证。不建议将其发布到主机上或暴露在互联网上。它主要用于在受信任的 Docker 网络内与 Frigate 通信的服务。

端口 8554 用于访问 go2rtc RTSP 转串流,端口 8555 用于 WebRTC 连接。RTSP 转串流默认情况下未进行身份验证,因此不应将其直接暴露在互联网上。

壁挂式家庭助手控制面板,用于管理家庭自动化系统
相关文章:
如何在 Home Assistant 中安装和使用蓝图

如何添加摄像头并配置其视频流

用于存储和处理来自 Frigate 的视频监控系统录像的服务器

添加摄像头之前,请使用 VLC 或其他兼容播放器测试其 RTSP 地址。如果视频流在 Frigate 外部无法播放,则在 Frigate 容器内也无法播放。

您可以使用提供的助手添加摄像头 设置 > 全局设置 > 相机管理您也可以直接编辑文件。 config.yml 保存在挂载的目录中 /config.

最有效的配置通常使用两个数据流:

  • 分辨率较低的子流,用于检测运动和物体。
  • 用于存储录像的更高分辨率主码流。

您还可以在 go2rtc 中声明原始连接,并让 FFmpeg 使用它们的本地转码流。这可以减少与摄像头建立的直接连接数量。

一个简单的例子如下:

mqtt:
  enabled: false

go2rtc:
  streams:
    entrada_principal:
      - rtsp://usuario:{FRIGATE_RTSP_PASSWORD}@192.168.1.50:554/stream1
    entrada_sub:
      - rtsp://usuario:{FRIGATE_RTSP_PASSWORD}@192.168.1.50:554/stream2

cameras:
  entrada:
    enabled: true

    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/entrada_sub
          input_args: preset-rtsp-restream
          roles:
            - detect

        - path: rtsp://127.0.0.1:8554/entrada_principal
          input_args: preset-rtsp-restream
          roles:
            - record

    detect:
      width: 1280
      height: 720

    record:
      enabled: true

您必须将用户名、IP 地址、端口和流路径替换为您摄像头对应的值。go2rtc 中使用的名称也必须与本地 URL 中包含的名称完全一致。

在当前版本中,Frigate 会尝试自动检测分辨率。但是,显式定义分辨率有助于故障排除。如果摄像头提供的是低分辨率子码流,那么使用 4K 视频进行检测效率会很低。

文件保存后,请通过界面验证配置或检查容器日志。如果存在 YAML 缩进错误、RTSP 路径错误或角色重复,Frigate 可能会拒绝该配置。

如何正确使用蒙版、过滤器和区域

运动遮罩并非旨在完全隐藏某个区域,也不能保证物体不再被检测到。它们的作用是防止某些图像变化触发检测过程。

它们可用于以下用途:

  • 相机叠加显示的日期和时间。
  • 天空或树梢。
  • 一面不断飘动的旗帜。
  • 产生运动的反射或重复元素。

即使物体位于运动掩膜内,如果图像的其他部分触发了分析,仍然可以检测到该物体。此外,覆盖面积过大会使物体跟踪变得困难。

独家内容 - 点击这里  连接 USB 驱动器时,如果 Windows 检测到威胁该怎么办?

如果墙壁、树木或其他固定物体反复被识别为人,则必须使用 针对该类型对象的滤镜掩码如果您只想在有人进入花园或靠近门时收到警报,那么正确的做法是创建一个区域并将其用作强制警报区域。

Frigate 允许您从中绘制这些多边形 设置 > 相机设置 > 遮罩和区域添加遮罩之前,请使用调试视图检查运动和检测框出现的位置。

如何将 Frigate 与 MQTT 和 Home Assistant 集成

护卫舰无需使用 MQTT 即可操作和录制摄像头。然而, 与 Home Assistant 集成需要 MQTT 代理就像 Mosquitto 一样,Frigate 和 Home Assistant 必须连接到同一个 MQTT 服务器。

基本配置采用以下格式:

mqtt:
  enabled: true
  host: 192.168.1.20
  user: usuario_mqtt
  password: contraseña_mqtt

确认 Frigate 已正确连接到代理服务器后,请从 HACS 安装官方集成:

  1. 打开 人机交互系统 在 Home Assistant 中。
  2. 搜索并安装集成 护卫舰.
  3. 重启Home Assistant。
  4. 进入 设置 > 设备和服务.
  5. 添加集成 然后选择护卫舰。
  6. 请输入实例地址。

如果 Home Assistant 和 Frigate 共享一个安全的 Docker 网络,则集成可以使用内部端口 5000 进行通信。在其他配置中,最好使用经过身份验证的端口 8971。不要仅仅为了方便集成而将端口 5000 向外部开放。

连接成功后,Home Assistant 可以利用 Frigate 生成的传感器、摄像头和事件数据来创建自动化操作。例如,它可以设置当有人进入特定区域时向您的手机发送快照、打开室外灯或发送录制视频的链接。

如何将 Frigate 与 Home Assistant 结合使用
相关文章:
Frigate 与 Home Assistant 集成完整指南

如何检查和维护安装

用于配置 Frigate 共享内存和卷的 Docker Compose 代码

设置完成后,检查容器状态:

docker compose ps

要查看实时日志,请使用:

docker compose logs -f frigate

具体检查以下内容:

  • 所有RTSP流均能正常打开。
  • FFmpeg 不会频繁重启。
  • 选定的探测器已设置为激活状态。
  • 共享内存不会耗尽。
  • 录音按预期路径保存。
  • 磁盘空间充足。

要使用 Docker Compose 更新 Frigate,请运行:

docker compose pull
docker compose up -d

更新之前,请将已挂载目录的副本保存到 /config在那里您可以找到 YAML 文件、数据库以及重建安装所需的其他设置。录制内容存储在 /media/frigate 如果需要保留这些文件,可以单独备份。

避免直接在互联网上公开端口 5000、1984 或 8554。要从家庭网络外部访问 Frigate,更安全的做法是使用 VPN 或配置正确的反向代理,并通过已认证的端口进行访问。

使用 Docker 安装 Frigate 可以构建一个私有且可定制的视频监控系统,但其稳定性取决于均衡的配置。分离检测流和录制流、调整共享内存、利用可用的加速功能以及限制对内部端口的访问,都能显著降低错误率和资源消耗。

连接到 Home Assistant 后,该系统可以利用检测结果生成比传统运动警报更准确的通知和自动化操作,同时将录像保存在您自己的基础设施内。

相关文章:
视频监控应用