资讯详情

Frigate 如何挂载正式 TLS 证书,或在反向代理后关闭自带 TLS?

📅 2026/9/10 5:31:46 | 华诺云谱 👁 阅读
Frigate 如何挂载正式 TLS 证书,或在反向代理后关闭自带 TLS?
Frigate 如何挂载正式 TLS 证书或在反向代理后关闭自带 TLS【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigateFrigate 内置的 NGINX 服务器自带 TLS 能力默认情况下它会生成一张自签名证书用于 8971 端口。由此产生两条互斥的配置路径你的 Frigate 运行在与反向代理分离的独立设备上或需要直接暴露到公网——这时应该把正式证书如 Lets Encrypt 签发的挂载进容器替换自签名证书你的 Frigate 跑在一套统一处理 TLS 的反向代理后面——这时应该直接关闭 Frigate 的自带 TLS避免代理把明文 HTTP 转发到 HTTPS 端口。本文基于 TLS 配置文档 和 反向代理指南 给出这两条路径的具体操作。判断当前属于哪种情况Frigate 的 TLS 默认开启enabled缺省为 true。如果你的反向代理负责终结 TLS而 Frigate 仍开着自带 TLS代理发出的明文 HTTP 请求会打到 HTTPS 端口返回 HTTP 400 错误The plain HTTP request was sent to HTTPS port.——看到这个报错就说明应走下面的「路径二」。路径一挂载正式 TLS 证书把证书目录挂载到容器TLS 证书应挂载在容器内的/etc/letsencrypt/live/frigate通过 docker bind mount 或 docker volume 实现。修改 docker-compose.yml 中 frigate 服务的volumesfrigate: ... volumes: - /path/to/your/certificate_folder:/etc/letsencrypt/live/frigate:ro .../path/to/your/certificate_folder替换为你宿主机上证书所在的实际目录:ro表示只读挂载。挂载目录内NGINX 期望固定的文件名私钥为privkey.pem证书链为fullchain.pem见 NGINX 监听模板 中的ssl_certificate/ssl_certificate_key指令。certbot 用户需要额外挂载 archive 目录certbot 的live目录下是符号链接容器无法跟随链接访问其指向的目标文件。因此使用 certbot 时还必须把你这个域名的archive目录一并挂载your.fqdn.net替换为你的实际域名frigate: ... volumes: - /etc/letsencrypt/live/your.fqdn.net:/etc/letsencrypt/live/frigate:ro - /etc/letsencrypt/archive/your.fqdn.net:/etc/letsencrypt/archive/your.fqdn.net:ro ...把 8971 映射到 443拿到有效证书后通常希望用户不带端口号访问https://your-frigate-domain.com。在 compose 文件中把宿主机 443 映射到容器 8971frigate: ... ports: - 443:8971 ...证书续期如何生效不需要手工重启。Frigate 内置的 certsync 服务每分钟比较一次/etc/letsencrypt/live/frigate/fullchain.pem的指纹与 NGINX 当前加载的 TLS 证书指纹实现见 certsync 脚本。两者不一致时它会自动执行nginx -s reload加载新证书容器日志中会出现[INFO] Reloading nginx to refresh TLS certificate及新旧指纹信息。因此 Lets Encrypt 定时续期后新证书会在约一分钟内的下一次检查中被自动加载。路径二在反向代理后关闭自带 TLS如果反向代理Apache2、Nginx、Traefik、Caddy 等负责 TLS需要在 Frigate 配置中关闭内置 TLS让 8971 端口以明文 HTTP 提供服务。YAML 方式tls: enabled: false也可以通过 Web 界面操作进入Settings System TLS将Enable TLS设为 off该项默认 on。关闭后反向代理侧按各代理的正常方式转发即可。Frigate 依赖 WebSocket 完成实时通信摄像头开关、直播回放等实时更新的 UI 部分代理配置必须转发Upgrade和Connection头否则这些功能不会正常工作部分代理默认禁用 WebSocket 支持例如 Nginx Proxy Manager 需要打开 Websockets Support 开关。各代理的完整配置示例见 反向代理指南。可选由 Frigate 托管 ACME challenge 文件如果证书申请使用 HTTP-01 验证方式且希望由 Frigate 的 NGINX 直接提供 challenge 文件把 challenge 文件目录挂载到/etc/letsencrypt/www。NGINX 已内置对应 location# ACME challenge location location /.well-known/acme-challenge/ { default_type text/plain; root /etc/letsencrypt/www; }结果验证路径一容器重启后浏览器直接访问https://your-frigate-domain.com443 端口应能正常打开 Frigate 界面且证书为正式证书而非自签名。证书轮换后检查容器日志确认出现[INFO] Reloading nginx to refresh TLS certificate说明指纹比对已触发了 NGINX 重载。路径二经反向代理访问不再出现HTTP 400: The plain HTTP request was sent to HTTPS port.错误实时功能直播、摄像头开关正常说明 WebSocket 头转发配置生效。限制与注意事项关闭 TLS 是二选一的场景决策不要混用既开代理 TLS 又留 Frigate TLS 会直接产生 400 错误。若反向代理直接对接仍开着自签名证书的 Frigate文档给出的替代做法是让代理允许自签名证书但这不如直接tls.enabled: false干净。certbot 的符号链接问题只在用 certbot 管理证书时出现证书目录里直接放privkey.pem/fullchain.pem实体文件时只需单条挂载。开启 TLS 的 NGINX 配置还包含 HSTS 头Strict-Transport-Securitymax-age63072000见 listen.gotmpl和仅启用TLSv1.3的设置。【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。