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
目录。