高级配置选项
日志配置
Frigate 日志设置
可调整日志级别用于故障排查。
logger:
# 可选:默认日志级别(默认如下)
default: info
# 可选:按模块设置日志级别
logs:
frigate.mqtt: error可用日志级别:debug、info、warning、error、critical
可配置模块示例:
frigate.appfrigate.mqttfrigate.object_detection.basedetector.<检测器名称>watchdog.<摄像头名称>ffmpeg.<摄像头名称>.<功能>注意:所有 FFmpeg 日志均以error级别记录
Go2RTC 日志设置
参考 go2rtc 文档配置日志
go2rtc:
streams:
# ...
log:
exec: traceenvironment_vars
此配置项适用于无法直接修改容器环境的情况(如 Home Assistant OS)。Docker 用户应在 docker run 命令(-e FRIGATE_MQTT_PASSWORD=secret)或 docker-compose.yml 文件(environment: 部分)中设置环境变量。注意,此处设置的值以明文形式存储在配置文件中,因此如果目的是保护凭据安全,请改用 Docker 环境变量或 Docker secrets。
以 FRIGATE_ 为前缀的变量可以在支持环境变量替换的配置字段(如 MQTT 主机和凭据、摄像头流 URL、ONVIF 主机和凭据)中使用 {FRIGATE_VARIABLE_NAME} 语法引用。
environment_vars:
FRIGATE_MQTT_USER: my_mqtt_user
FRIGATE_MQTT_PASSWORD: my_mqtt_password
mqtt:
host: "{FRIGATE_MQTT_HOST}"
user: "{FRIGATE_MQTT_USER}"
password: "{FRIGATE_MQTT_PASSWORD}"TensorFlow 线程配置
如果在分类模型训练过程中遇到线程创建错误,可以限制 TensorFlow 的线程使用量:
environment_vars:
TF_INTRA_OP_PARALLELISM_THREADS: "2" # 单个运算内部的线程数(0 = 使用默认值)
TF_INTER_OP_PARALLELISM_THREADS: "2" # 不同运算之间的线程数(0 = 使用默认值)
TF_DATASET_THREAD_POOL_SIZE: "2" # 数据管道线程池大小(0 = 使用默认值)database
追踪的目标信息和录像信息存储在 /config/frigate.db 的 SQLite 数据库中。若删除该数据库,录像文件将变为孤立文件需手动清理,且不会显示在 Home Assistant 的媒体浏览器中。
若使用网络存储(SMB/NFS 等),启动时可能出现 database is locked 错误。可自定义数据库路径:
如果使用网络存储作为媒体文件夹,数据库可能需要放在自定义位置。
database:
path: /自定义路径/frigate.dbmodel
使用自定义模型时需指定宽高尺寸。
自定义模型可能需要不同的输入张量格式。支持 RGB、BGR 或 YUV 色彩空间转换。输入张量形状参数需与模型要求匹配。
| 张量维度 | 描述 |
|---|---|
| N | 批量大小 |
| H | 模型高度 |
| W | 模型宽度 |
| C | 色彩通道数 |
| 可用输入张量形状 |
|---|
| "nhwc" |
| "nchw" |
model:
path: /模型路径
width: 320
height: 320
input_tensor: "nhwc"
input_pixel_format: "bgr"labelmap
警告
自定义标签映射后需同步调整警报标签配置
可自定义标签映射,常见场景是合并易混淆的目标类型(如 car/truck)。默认已将 truck 重命名为 car。你无法添加新的目标类型,但可以更改模型中已有目标的名称。
model:
labelmap:
2: vehicle
3: vehicle
5: vehicle
7: vehicle
15: animal
16: animal
17: animal注意,如果在标签映射中重命名了目标,还需要更新 objects -> track 列表。
警告
部分标签有特殊处理逻辑,修改可能禁用相关功能:
person关联face和amazoncar关联license_plate、ups、fedex、amazon
网络配置
可通过绑定挂载 nginx.conf 文件修改内部网络配置:
services:
frigate:
container_name: frigate
...
volumes:
...
- /自定义路径/nginx.conf:/usr/local/nginx/conf/nginx.conf启用 IPv6
默认禁用 IPv6,可在 Frigate 配置中启用:
networking:
ipv6:
enabled: True监听不同端口
可以更改 Nginx 使用的监听端口。内部端口(未认证)和外部端口(已认证)可以独立更改。还可以使用 ip:port 格式指定 IP 地址,将端口绑定到特定接口。例如,这可用于防止内部端口暴露在容器外部。
networking:
listen:
internal: 127.0.0.1:5000
external: 8971警告
此设置面向高级用户。对于大多数用例,建议更改 Docker Compose 文件的 ports 部分或使用 Docker run 的 --publish 选项,例如 -p 443:8971。更改 Frigate 的端口可能会导致某些集成失效。
基础路径
默认情况下,Frigate 运行在根路径(/)。但某些设置需要让 Frigate 运行在自定义路径前缀下(例如 /frigate),特别是当 Frigate 位于需要基于路径路由的反向代理后面时。
通过 HTTP 头设置基础路径
推荐方式是在上游反向代理中设置 X-Ingress-Path HTTP 头:
Nginx 示例:
location /frigate {
proxy_set_header X-Ingress-Path /frigate;
proxy_pass http://frigate_backend;
}通过环境变量设置基础路径
当无法通过 HTTP 头设置基础路径时,也可以通过 Docker Compose 文件中的 FRIGATE_BASE_PATH 环境变量设置:
services:
frigate:
image: blakeblackshear/frigate:latest
environment:
- FRIGATE_BASE_PATH=/frigate这可用于例如通过 Tailscale agent(https)访问 Frigate,只需将所有请求转发到基础路径(http):
tailscale serve --https=443 --bg --set-path /frigate http://localhost:5000/frigate自定义依赖
自定义 FFmpeg
将静态编译的 ffmpeg 和 ffprobe 放入 /config/custom-ffmpeg/bin:
- 下载 FFmpeg 并解压到
/config/custom-ffmpeg。确认ffmpeg和ffprobe二进制文件位于/config/custom-ffmpeg/bin。 - 更新 Frigate 配置中的
ffmpeg.path:
ffmpeg:
path: /config/custom-ffmpeg- 重启 Frigate
自定义 go2rtc 版本
Frigate 目前内置的 go2rtc 版本为 v1.9.13,在某些特定情况下,你可能希望运行不同版本的 go2rtc。
操作步骤如下:
- 下载你系统对应的 go2rtc 二进制文件到
/config目录 - 将文件重命名为
go2rtc - 添加执行权限(在文件目录下执行
chmod +x ./go2rtc) - 重启 Frigate,自定义版本将被使用,你可以通过检查 go2rtc 日志来验证
配置文件验证
Frigate 启动时会检查配置文件是否合法;若不合法,进程会直接退出。为减少更新配置时的中断,你有三种方式:
- 通过内置校验的网页编辑配置
- 使用配置 API
- 或通过 Frigate Docker 容器在命令行中进行验证
通过 API 验证
Frigate 可通过 /api/config/save 接口接收 JSON 格式的新配置文件。通过此方式更新配置时,Frigate 会在保存前先验证配置的有效性;若配置无效,接口将返回 400 状态码。
curl -X POST http://frigate_host:5000/api/config/save -d @config.json或使用 yq 转换 YAML:
yq -o=json '.' config.yaml | curl -X POST 'http://frigate_host:5000/api/config/save?save_option=saveonly' --data-binary @-命令行验证
你也可以使用 Docker 容器本身在命令行中验证配置。在 CI/CD 中,你可以利用返回码判断配置是否有效——Frigate 在配置无效时返回 1,有效时返回 0。
docker run \
-v $(pwd)/config.yml:/config/config.yml \
--entrypoint python3 \
docker.cnb.cool/frigate-cn/frigate:stable \
-u -m frigate \
--validate-config