跳到主要内容

TLS

Frigate 的集成 NGINX 服务器支持 TLS 证书。默认情况下,Frigate 会生成一个自签名证书,用于 8971 端口。Frigate 的设计宗旨是让你可以轻松使用任何你喜欢的工具来管理证书。

Frigate 通常在反向代理后面运行,该代理负责管理多个服务的 TLS 证书。你可能需要将反向代理设置为允许自签名证书,或者在 Frigate 配置中禁用 TLS。但是,如果您在独立于代理的专用设备上运行,或者如果您将 Frigate 直接暴露于互联网,您可能需要使用有效证书配置 TLS。

在许多部署中,TLS 是不必要的。可以使用以下 yaml 在配置中禁用 TLS:

tls:
enabled: False

证书

可以使用绑定挂载或 docker volume 将 TLS 证书挂载到 /etc/letsencrypt/live/frigate

frigate:
...
volumes:
- /path/to/your/certificate_folder:/etc/letsencrypt/live/frigate:ro
...

在文件夹中,私钥应命名为 privkey.pem,证书应命名为 fullchain.pem

请注意,certbot 使用符号链接,除非容器也能访问目标,否则容器无法跟踪这些链接,因此,如果使用 certbot,还必须挂载域的 archive 文件夹,例如:

frigate:
...
volumes:
- /etc/letsencrypt/live/frigate:/etc/letsencrypt/live/frigate:ro
- /etc/letsencrypt/archive/frigate:/etc/letsencrypt/archive/frigate:ro
...

Frigate 每分钟都会自动将 /etc/letsencrypt/live/frigate/fullchain.pem中的证书指纹与 NGINX 中的 TLS 证书指纹进行比较。如果两者不一致,NGINX 配置将重新加载,以获取更新后的证书。

如果向 Frigate 颁发有效证书,则可能需要将其配置为在 443 端口运行,这样就可以通过将 8971 映射到 443,在没有端口号(如 "https://your-frigate-domain.com")的情况下访问它。

frigate:
...
ports:
- "443:8971"
...

ACME Challenge

ACME Challenge 是指由 ACME 协议定义的验证机制,用于确认域名控制权。ACME(Automated Certificate Management Environment)是 Let's Encrypt 等证书颁发机构(CA)使用的协议,用于自动化 SSL/TLS 证书的签发和管理。

Frigate 还支持在需要时托管用于 HTTP Challenge方法的 ACME Challenge文件。Challenge 文件应挂载到 /etc/letsencrypt/www 目录。