
更新 FrigateDocker 与 Home Assistant 部署的完整升级、回滚与配置迁移指南【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigateFrigate 是一款面向 IP 摄像头的 NVR网络录像机核心能力是本地实时目标检测。本文基于当前仓库 docs/docs/frigate/updating.md 编写系统讲解 Frigate 0.18.0 的升级流程从更新前备份、Docker 与 Home Assistant 两种主流安装方式的升级步骤到失败后的回滚策略与常见故障排查并深入仓库源码解析升级过程中配置自动迁移机制的底层实现帮助你安全、可预期地完成每一次版本升级。读完本文你将掌握如何在不同安装方式下正确升级 Frigate、如何验证新版本是否正常运行、如何在升级失败时回滚以及理解 Frigate 为何能在升级时自动迁移旧版配置文件而不破坏现有监控配置。升级前的准备工作无论采用哪种安装方式升级前都应完成以下三项准备这是整个升级过程安全可控的前提停止 Frigate大多数安装方式下需要在备份和升级之前先停止正在运行的 Frigate 实例。备份配置目录始终备份你的/config目录包括config.ymlFrigate 的主配置文件和frigate.dbSQLite 数据库。配置和录像数据库是系统运行的核心资产备份后即使升级出错也能完整回滚。阅读发布说明仔细查看 Frigate 的 GitHub Releases 页面确认新版本是否有破坏性变更breaking changes或需要调整的配置项。需要特别强调的是Frigate 的升级并不仅仅是拉取一个新镜像那么简单——版本之间的配置结构变化由 Frigate 内置的迁移机制自动处理但了解迁移机制的原理能让你在升级后遇到异常时迅速定位问题。这部分内容将在后文升级后的配置自动迁移机制一节详细展开。使用 Docker 更新 FrigateDocker 是 Frigate 官方推荐的安装方式。升级过程分为停止容器、拉取新镜像、重新启动、验证四个步骤。第一步停止容器使用 Docker Compose 时docker compose down frigate使用docker run直接运行时docker stop frigate第二步更新并拉取最新镜像使用 Docker Compose编辑docker-compose.yml将镜像标签改为目标版本例如把0.17.1改为0.18.0services: frigate: image: ghcr.io/blakeblackshear/frigate:0.18.0然后拉取镜像docker pull ghcr.io/blakeblackshear/frigate:0.18.0使用stable标签的用户如果你的docker-compose.yml使用的是stable标签例如ghcr.io/blakeblackshear/frigate:stable则无需手动修改标签——stable标签在拉取后始终指向最新的稳定版。使用docker run按所需标签拉取镜像例如0.18.0、0.18.0-tensorrt或stabledocker pull ghcr.io/blakeblackshear/frigate:0.18.0关于镜像变体的说明当前仓库的docker/目录下维护了多套硬件加速构建方案包括 docker/main/Dockerfile主镜像、docker/rockchip/Dockerfile、docker/rocm/Dockerfile、docker/rpi/Dockerfile、docker/synaptics/Dockerfile、docker/tensorrt、docker/hailo8l、docker/memryx 等。其中0.18.0-tensorrt这类后缀标签对应带特定硬件加速支持的镜像选择标签时应与你的加速卡Coral、GPU、NPU 等匹配升级前后保持一致。第三步启动容器使用 Docker Composedocker compose up -d使用docker run以更新后的镜像标签重新运行你原来的启动命令参考 安装指南 中的完整命令。第四步验证更新查看容器日志确认 Frigate 正常启动docker logs frigate访问 Frigate Web UI默认http://your-ip:5000确认新版本正在运行。版本号显示在System Metrics页面顶部。关于版本号的显示从源码可以看到 Web 前端通过系统状态接口获取版本信息在 web/src/pages/System.tsx 中System 页面渲染statsSnapshot.service.version而后端 frigate/api/app.py 引入from frigate.version import VERSION并提供版本接口启动日志也会打印版本号见 frigate/app.py 中的Starting Frigate ({VERSION})。因此System Metrics 页面顶部显示版本号这一验证方式有明确的源码链路支撑。注意事项如果你自定义过其他设置例如shm-size升级后请确认这些设置仍然适用。当前仓库根目录的 docker-compose.yml 就是一个参考示例其中设置了shm_size: 256mb以及 render/video/plugdev 设备组并注释了 GPU 预留、USB Coral 设备等可选配置。只要你拉取了正确的镜像版本Docker 会在重启容器时自动使用更新后的镜像。更新 Home Assistant App原 Addon对于以 Home Assistant App 形式运行 Frigate 的用户检查更新在 Home Assistant 中进入Settings Apps找到已安装的 Frigate App例如 Frigate NVR 或 Frigate NVR (Full Access)。如有可用更新会出现 Update 按钮。更新 App先备份当前版本的 App然后点击 Update 按钮并等待完成。Home Assistant 会自动处理新版本的下载与安装。重启 App更新完成后进入 App 页面点击 Restart 使变更生效。验证更新在 Log 标签页检查 App 日志确认 Frigate 无错误启动并通过 Frigate Web UI 确认新版本正在运行。注意事项确保/config/frigate.yml与新版本兼容可对照发布说明逐项检查。如果使用了自定义硬件如 Coral 或 GPU请确认相关配置仍然有效——App 更新不会修改你的硬件设置。升级后的配置自动迁移机制这是 Frigate 升级中最具价值的技术细节旧版本配置如何平滑过渡到新版本。从仓库源码看这一机制实现在 frigate/util/config.py 中。Frigate 的配置文件头部带有一个版本标识当前版本为CURRENT_CONFIG_VERSION 0.18-0见 frigate/util/config.py。当 Frigate 启动时会调用migrate_frigate_config()见 frigate/util/config.py检查配置是否需要迁移若配置中的version与当前版本一致直接跳过迁移若不一致先把现有配置复制为backup_config.yaml存入/config目录然后按版本号从小到大依次执行迁移函数migrate_014→migrate_015_0→migrate_015_1→migrate_016_0→migrate_017_0→migrate_018_0每步迁移后更新配置中的版本号直至与当前版本对齐。以 0.18.0 的迁移函数migrate_018_0见 frigate/util/config.py为例它处理了以下变更GenAI 配置迁移将旧式genai.provider格式转换为新的genai默认角色格式roles: [descriptions, chat]并包一层default键移除废弃的sync_recordings从全局record及各摄像头的record配置中删除移除废弃的timelapse_args从record.export中删除若该段变空则一并清理mask 配置格式迁移将全局 motion mask、objects mask、object filters mask 以及各摄像头对应的 mask 从旧的点序列格式非 dict转换为带 ID 的字典格式_convert_legacy_mask_to_dict。这意味着升级后旧配置文件会被自动改写为新结构同时生成一份backup_config.yaml供回滚或对照。这也解释了一个常见的运维困惑——升级后我的 config.yml 怎么变了——这是 Frigate 的设计行为而不是配置丢失。迁移前请确保/config目录可写若文件只读迁移函数会记录错误并跳过见 frigate/util/config.py。回滚Rolling Back如果升级引发了问题可以按以下步骤回滚到旧版本停止 Frigate。恢复你之前备份的配置文件与数据库config.yml和frigate.db如果当时没有手动备份也可以利用迁移机制自动生成的backup_config.yaml还原配置。恢复到之前的镜像版本Docker在docker run命令中指定更旧的标签例如ghcr.io/blakeblackshear/frigate:0.17.1Docker Compose编辑docker-compose.yml指定旧版本标签例如ghcr.io/blakeblackshear/frigate:0.16.4然后重新执行docker compose up -dHome Assistant从升级前对 App/Addon 所做的备份中恢复。验证旧版本恢复正常运行。需要补充的是回滚到旧版本后配置文件的version字段会高于旧版本期望的配置版本。从 frigate/util/config.py 中resolve_ffmpeg_path的注释可以看到Frigate 对旧版本同样考虑了一定的兼容性例如不再随附的 ffmpeg 版本别名会回退到默认版本让旧配置在降级后依然可用但最稳妥的做法仍是恢复升级前备份的配置。故障排查容器无法启动检查日志docker logs frigate查找错误信息。UI 无法加载确认端口映射仍然正确例如 5000、8971并确认服务在运行。硬件问题如果升级后检测或解码失败重新检查硬件相关配置如 Coral、GPU。不同的硬件加速镜像变体-tensorrt、-rocm、-rknn等对设备透传、驱动版本有不同要求升级前后应保持硬件配套一致。常见问题通常可以在项目支持讨论区置顶的 FAQ 中找到答案。总结Frigate 的升级流程虽然在不同安装方式下略有差异但核心路径是一致的先备份再停止拉取新镜像启动并验证。理解源码中配置自动迁移机制frigate/util/config.py能让你在升级后从容应对配置结构的自动变化而升级前备份配置与数据库、升级后核对版本号与日志这两条原则则是任何一次升级都能安全完成的保障。【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考