No introduction found. Create it?
frigate from bjw-s-labs/charts is more popular with 28 repositories.
Install with:
helm repo add frigate oci://ghcr.io/bjw-s-labs/charts/
helm install frigate frigate/frigate -f values.yamlSee examples from other people.
| Name | Repo | Stars | Version | Timestamp |
|---|---|---|---|---|
| frigate | deedee-ops/home-ops | 36 | 5.3.0 | 6 days ago |
| frigate | blackjid/home-ops | 97 | 5.3.0 | 10 days ago |
| frigate | bjw-s-labs/home-ops | 867 | 5.3.0 | 21 days ago |
See the most popular values for this chart:
| Key | Types |
|---|---|
| string | |
| string | |
persistence.cache.type (15) emptyDir | string |
| string | |
| boolean | |
| string | |
| string | |
| string | |
| boolean | |
persistence.config.accessMode (1) ReadWriteOnce | string |
persistence.config.forceRename (1) frigate-config | string |
| string | |
| string | |
persistence.media.globalMounts[].path (12) /media/frigate | string |
| string | |
| string | |
persistence.media.path (9) /mnt/tank/apps/frigate | string |
persistence.media.server (9) 10.10.99.100 | string |
persistence.media.existingClaim (3) frigate-media-nfs | string |
persistence.media.advancedMounts.frigate.app[].path (1) /media/frigate | string |
| boolean | |
persistence.media.volumeSpec.nfs.path (1) /warehouse/services/nvr | string |
persistence.media.volumeSpec.nfs.server (1) ${NFS_SERVER} | string |
persistence.config-file.globalMounts[].path (7) /config/config.yml | string |
| boolean | |
| string | |
persistence.config-file.type (7) configMap | string |
persistence.config-file.name (6) frigate-configmap | string |
| boolean | |
| string | |
| string | |
| string | |
persistence.tmpfs.type (4) emptyDir | string |
persistence.usb.globalMounts[].path (4) /dev/bus/usb | string |
persistence.usb.hostPath (4) /dev/bus/usb | string |
persistence.usb.type (4) hostPath | string |
persistence.usb.hostPathType (3) Directory | string |
| string | |
| string | |
persistence.shm.type (3) emptyDir | string |
| string | |
| string | |
persistence.cameras.globalMounts[].path (2) /media/frigate | string |
| string | |
persistence.cameras.volumeSpec.csi.driver (2) nfs.csi.k8s.io | string |
persistence.cameras.volumeSpec.csi.volumeAttributes.mountOptions (2) noac,nfsvers=4.1,nconnect=16,hard,noatime | string |
persistence.cameras.volumeSpec.csi.volumeAttributes.server (2) nas-k8s.internal | string |
persistence.cameras.volumeSpec.csi.volumeAttributes.share (2) /mnt/fast/cameras | string |
| string | |
| string | |
persistence.configfile.name (2) frigate-configmap | string |
persistence.configfile.type (2) configMap | string |
persistence.coral.hostPath (2) /dev/apex_0 | string |
persistence.coral.type (2) hostPath | string |
| boolean | |
persistence.coral.globalMounts[].path (1) /dev/apex_0 | string |
persistence.coral.hostPathType (1) CharDevice | string |
persistence.tmp.type (2) emptyDir | string |
persistence.config-src.globalMounts[].path (1) /config-src/config.yml | string |
| boolean | |
| string | |
| string | |
persistence.config-src.type (1) configMap | string |
| string | |
| string | |
| string | |
persistence.dshm.type (1) emptyDir | string |
| string | |
| boolean | |
persistence.export-requirements.name (1) frigate-export-requirements | string |
| string | |
| string | |
| boolean | |
| string | |
| string | |
persistence.models.volumeSpec.image.reference (1) ghcr.io/blackjid/yolov9-onnx:1.0.0 | string |
| string | |
controllers.frigate.containers.app.image.repository (12) ghcr.io/blakeblackshear/frigate | string |
controllers.frigate.containers.app.image.tag (12) 0.18.2@sha256:fd60f99ffd4eb6c42360ed4e14953e270586f239309ab3983e55b2e97ffac09a | string |
| boolean | |
| number | |
| number | |
| number | |
| string | |
| number | |
| number | |
| boolean | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| number | |
| boolean | |
| string | |
| number | |
| string, number | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| boolean | |
| boolean | |
controllers.frigate.containers.app.securityContext.capabilities.add[] (1) - SETUID | string |
| string | |
| boolean | |
| string | |
controllers.frigate.containers.frigate.envFrom[].secretRef.name (1) frigate-secret | string |
| boolean | |
controllers.frigate.containers.frigate.image.repository (1) ghcr.io/blakeblackshear/frigate | string |
| string | |
| boolean | |
| boolean | |
| boolean | |
| number | |
| number | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.frigate.pod.annotations."k8s.v1.cni.cncf.io/networks" (1) [{"name":"cam","namespace":"kube-system","ips":["10.10.62.20/24"]}] | string |
| string | |
| string | |
| string | |
| number | |
| string | |
| boolean | |
controllers.frigate.type (4) statefulset | string |
| string | |
controllers.frigate.initContainers.init-config.image.repository (2) docker.io/mikefarah/yq | string |
| string | |
controllers.frigate.initContainers.init-config.args[] (1) - # -s not -f: a zero-byte config.yml must fall through to the
# copy below, or yq merges against nothing and clobbers it
# with another empty file forever. Same guard on its output.
if [ -s /config/config.yml ] \
&& yq eval-all 'select(fileIndex==0) * select(fileIndex==1)' \
/config/config.yml /config-src/config.yml > /config/config.yml.tmp \
&& [ -s /config/config.yml.tmp ]; then
mv /config/config.yml.tmp /config/config.yml
else
cp /config-src/config.yml /config/config.yml
fi
| string |
| string | |
controllers.frigate.initContainers.01-init-db.image.repository (1) ghcr.io/home-operations/postgres-init | string |
| string | |
controllers.frigate.initContainers.model.args[] (1) - out=/config/model_cache/yolov9-s-320.onnx
[ -f "$out" ] && exit 0
# Fail on permissions now, not after the downloads and export.
mkdir -p "$(dirname "$out")"
touch "$out.tmp"
git clone https://github.com/WongKinYiu/yolov9.git /tmp/yolov9
cd /tmp/yolov9
git checkout 5b1ea9a8b3f0ffe4fe0e203ec6232d788bb3fcff
python3 -m venv /tmp/venv
. /tmp/venv/bin/activate
# Locked in resources/export-requirements.txt: CPU-only torch
# and headless OpenCV, so no CUDA download and no libGL.
pip install --no-cache-dir --require-hashes --extra-index-url https://download.pytorch.org/whl/cpu -r /export/export-requirements.txt
curl -fsSLo yolov9-s.pt https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-s-converted.pt
echo "09bf9ca4adef37944f4406455b5b81b451c1e67307916e4702da68cda4d3e46d yolov9-s.pt" | sha256sum -c -
sed -i "s/ckpt = torch.load(attempt_download(w), map_location='cpu')/ckpt = torch.load(attempt_download(w), map_location='cpu', weights_only=False)/g" models/experimental.py
python3 export.py --weights ./yolov9-s.pt --imgsz 320 --simplify --include onnx
# Rename last, so a failed copy never leaves a file that skips the export.
cp yolov9-s.onnx "$out.tmp"
mv "$out.tmp" "$out"
| string |
controllers.frigate.initContainers.model.command[] (1) - /bin/sh | string |
| string | |
controllers.frigate.initContainers.model.image.repository (1) docker.io/library/python | string |
controllers.frigate.initContainers.model.image.tag (1) 3.11.18-bookworm@sha256:84fa927127b46670e768371d1ad1be271d57ba93a6fbb3479045c7c6c452432f | string |
| string | |
| boolean | |
| string | |
| number | |
| boolean | |
| number | |
| number | |
controllers.frigate.strategy (1) Recreate | string |
controllers.main.annotations.glance/icon (2) di:frigate-light | string |
| string | |
controllers.main.annotations.glance/url (2) https://frigate.${ROOT_DOMAIN} | string |
| string | |
controllers.main.containers.app.env.TZ (2) Europe/Warsaw | string |
| string | |
controllers.main.containers.app.image.repository (2) ghcr.io/blakeblackshear/frigate | string |
controllers.main.containers.app.image.tag (2) 0.18.2@sha256:fd60f99ffd4eb6c42360ed4e14953e270586f239309ab3983e55b2e97ffac09a | string |
| boolean | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| string | |
controllers.main.initContainers.01-set-config.command[] (2) - /bin/sh | string |
controllers.main.initContainers.01-set-config.image.repository (2) ghcr.io/home-operations/busybox | string |
controllers.main.initContainers.01-set-config.image.tag (2) 1.38.0@sha256:ff88728f0d5fe50a9984f6cc04d7d1185590b628f29ef4e6a3ec8cae7169e0c8 | string |
| string | |
| string | |
| boolean | |
| string | |
| boolean | |
| number | |
service.app.ports.http.appProtocol (3) kubernetes.io/wss | string |
| boolean | |
| number | |
| number | |
| boolean | |
| number | |
| string | |
| number | |
| boolean | |
| number | |
| string | |
| number | |
| string | |
| boolean | |
| number | |
| boolean | |
| boolean | |
| number | |
| boolean | |
| string | |
| boolean | |
| number | |
| boolean | |
| string | |
service.app.controller (4) frigate | string |
| number | |
service.frigate.ports.http.appProtocol (4) kubernetes.io/ws | string |
| boolean | |
| number | |
| number | |
| number | |
| string | |
| number | |
| string | |
| string | |
service.frigate.type (3) LoadBalancer | string |
route.app.hostnames[] (8) - frigate.${ROOT_DOMAIN} | string |
route.app.parentRefs[].name (8) envoy-internal | string |
| string | |
| string | |
| number | |
| string | |
| string | |
route.app.rules[].filters[].responseHeaderModifier.set[].name (2) Content-Security-Policy | string |
route.app.rules[].filters[].responseHeaderModifier.set[].value (2) default-src 'self'; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; | string |
route.app.rules[].filters[].type (2) ResponseHeaderModifier | string |
route.app.annotations."gatus.home-operations.com/endpoint" (2) path: /api/version | string |
| string | |
route.app.annotations."gethomepage.dev/description" (1) NVR & Object Detection | string |
| string | |
| string | |
| string | |
| string | |
| string | |
route.app.annotations."gethomepage.dev/widget.url" (1) http://frigate.home.svc.cluster.local:5000 | string |
route.app.labels.auth (1) authentik | string |
route.frigate.hostnames[] (5) - frigate.aresu.eu | string |
route.frigate.parentRefs[].name (5) envoy-internal | string |
| string | |
| string | |
| string, number | |
route.frigate.rules[].filters[].requestHeaderModifier.set[].name (1) x-forwarded-groups | string |
| string | |
route.frigate.rules[].filters[].type (1) RequestHeaderModifier | string |
route.go2rtc.hostnames[] (5) - frigate-go2rtc.aresu.eu | string |
route.go2rtc.parentRefs[].name (5) envoy-internal | string |
| string | |
| string | |
| string, number | |
| string | |
| string | |
route.schema.hostnames[] (1) - frigate.${DOMAIN} | string |
route.schema.parentRefs[].name (1) envoy-internal | string |
| string | |
| string | |
| number | |
route.schema.rules[].filters[].requestHeaderModifier.remove[] (1) - x-forwarded-groups | string |
route.schema.rules[].filters[].type (1) RequestHeaderModifier | string |
| string | |
route.schema.rules[].matches[].path.value (1) /api/config/schema.json | string |
| string | |
| string | |
| number | |
| string | |
| number | |
| number | |
| number | |
| string | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| number | |
| string | |
| string | |
| string | |
| string | |
defaultPodOptions.annotations."k8s.v1.cni.cncf.io/networks" (2) [{
"name": "cameras",
"namespace": "kube-system",
"ips": ["192.168.4.32/24"],
"mac": "02:00:c0:a8:04:20"
}] | string |
| boolean | |
| boolean | |
| string | |
| string | |
defaultPodOptions.tolerations[].key (1) node.kubernetes.io/low-power | string |
| string | |
defaultPodOptions.tolerations[].value (1) raspberry-pi | string |
externalSecrets.frigate.dataFrom[].extract.key (4) Reolink PoE Doorbell - Frigate | string |
| string | |
externalSecrets.frigate.dataFrom[].rewrite[].regexp.target (2) reolink_$1 | string |
externalSecrets.frigate.secretStoreRef.kind (4) ClusterSecretStore | string |
externalSecrets.frigate.secretStoreRef.name (4) onepassword-connect | string |
| string | |
| string | |
| string | |
externalSecrets.frigate.target.template.data.FRIGATE_DOORBELL_PASSWORD (2) {{ .reolink_password }} | string |
externalSecrets.frigate.target.template.data.FRIGATE_DOORBELL_USERNAME (2) {{ .reolink_username }} | string |
externalSecrets.frigate.target.template.data.FRIGATE_MQTT_PASSWORD (1) {{ .mosquitto_mqtt_pass }} | string |
externalSecrets.frigate.target.template.data.FRIGATE_MQTT_USERNAME (1) {{ .mosquitto_mqtt_user }} | string |
| string | |
| string | |
| string | |
externalSecrets.frigate.target.template.data.FRIGATE_TAPO_RTSP_PASSWORD (1) {{ .tapo_rtsp_password }} | string |
externalSecrets.frigate.target.template.data.FRIGATE_TAPO_RTSP_USERNAME (1) {{ .tapo_rtsp_username }} | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
externalSecrets.env.dataFrom[].extract.key (1) frigate | string |
externalSecrets.env.secretStoreRef.kind (1) ClusterSecretStore | string |
externalSecrets.env.secretStoreRef.name (1) onepassword-connect | string |
| string | |
externalSecrets.env.target.template.data.FRIGATE_RTSP_PASSWORD (1) {{ .FRIGATE_RTSP_PASSWORD }} | string |
configMaps.config.data."config.yml" (2) mqtt:
enabled: true
host: mosquitto.home.svc.cluster.local
port: 1883
client_id: frigate
topic_prefix: frigate
detectors:
ov:
type: openvino
device: GPU
# Mounted read-only from the yolov9-onnx image volume. t, s and m are all
# in that image, so trying another variant is a path change here.
model:
model_type: yolo-generic
width: 320
height: 320
input_tensor: nchw
input_dtype: float
# Back to s: m ran 70-76ms per inference, so at ~14 detections/sec the
# detector was at ~100% duty cycle and Frigate was dropping ~3fps of
# frames it never got to look at. The dog/cat confusion m was meant to
# fix needs Frigate+ retraining instead, not a bigger COCO detector.
path: /models/yolov9-s-320.onnx
labelmap_path: /labelmap/coco-80.txt
ffmpeg:
hwaccel_args: preset-vaapi
detect:
enabled: true
fps: 5
objects:
track:
- person
- car
- dog
- cat
# Enrichments share the same iGPU as the detector: OpenVINO picks it up
# automatically in the default image, so no device key is needed.
# Models are downloaded once into /config/model_cache on the config PVC.
semantic_search:
enabled: true
model: jinav1
model_size: large
face_recognition:
enabled: true
model_size: large
record:
enabled: true
continuous:
days: 0
motion:
days: 0
alerts:
retain:
days: 14
detections:
retain:
days: 7
snapshots:
enabled: true
retain:
default: 14
go2rtc:
streams:
# 192.168.20.238 is HA's "Quincho Fluent" — it was called backyard
# here, which left the actual backyard camera without the name
quincho:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.238:554/h264Preview_01_main
quincho_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.238:554/h264Preview_01_sub
# 192.168.20.223 is HA's "Greengarden Fluent", area Backyard. It was
# configured as entrance, so entrance pointed at the wrong garden
backyard:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.223:554/h264Preview_01_main
backyard_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.223:554/h264Preview_01_sub
backyard_pool:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.42:554/h264Preview_01_main
backyard_pool_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.42:554/h264Preview_01_sub
# The real entrance: Reolink Duo 2 PoE, dual lens stitched into one
# ultra-wide frame (main 4608x1728 HEVC, sub 1536x576 h264)
entrance:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.250:554/h264Preview_01_main
entrance_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.250:554/h264Preview_01_sub
living_room:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.231:554/h264Preview_01_main
living_room_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.231:554/h264Preview_01_sub
family_room:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.84:554/h264Preview_01_main
family_room_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.84:554/h264Preview_01_sub
# Service Yard is the Reolink exposed in HA at 192.168.20.91.
service_yard:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.91:554/h264Preview_01_main
service_yard_sub:
- rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.20.91:554/h264Preview_01_sub
cameras:
quincho:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/quincho
input_args: preset-rtsp-restream
roles: [record]
- path: rtsp://127.0.0.1:8554/quincho_sub
input_args: preset-rtsp-restream
roles: [detect]
live:
streams:
Main: quincho
Sub: quincho_sub
backyard:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/backyard
input_args: preset-rtsp-restream
roles: [record]
- path: rtsp://127.0.0.1:8554/backyard_sub
input_args: preset-rtsp-restream
roles: [detect]
live:
streams:
Main: backyard
Sub: backyard_sub
backyard_pool:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/backyard_pool
input_args: preset-rtsp-restream
roles: [record]
- path: rtsp://127.0.0.1:8554/backyard_pool_sub
input_args: preset-rtsp-restream
roles: [detect]
live:
streams:
Main: backyard_pool
Sub: backyard_pool_sub
entrance:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/entrance
input_args: preset-rtsp-restream
roles: [record]
- path: rtsp://127.0.0.1:8554/entrance_sub
input_args: preset-rtsp-restream
roles: [detect]
live:
streams:
Main: entrance
Sub: entrance_sub
living_room:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/living_room
input_args: preset-rtsp-restream
roles: [record, detect]
detect:
width: 1920
height: 1080
fps: 5
live:
streams:
Main: living_room
Sub: living_room_sub
family_room:
# Re-enabled after verifying a stable RTSP stream from 192.168.20.84.
enabled: true
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/family_room
input_args: preset-rtsp-restream
roles: [record]
- path: rtsp://127.0.0.1:8554/family_room_sub
input_args: preset-rtsp-restream
roles: [detect]
live:
streams:
Main: family_room
Sub: family_room_sub
service_yard:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/service_yard
input_args: preset-rtsp-restream
roles: [record]
- path: rtsp://127.0.0.1:8554/service_yard_sub
input_args: preset-rtsp-restream
roles: [detect]
live:
streams:
Main: service_yard
Sub: service_yard_sub | string |
| boolean | |
ingress.app.annotations."gatus.home-operations.com/endpoint" (1) path: /api/version
| string |
| string | |
| string | |
| boolean | |
ingress.app.hosts[].host (1) {{ .Release.Name }}.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
| string | |
ingress.app.tls[].hosts[] (1) - {{ .Release.Name }}.${SECRET_DOMAIN} | string |
ingress.main.className (1) nginx-internal | string |
| boolean | |
ingress.main.hosts[].host (1) frigate.${SECRET_DOMAIN} | string |
| string | |
| string | |
| string | |
ingress.main.tls[].hosts[] (1) - frigate.${SECRET_DOMAIN} | string |
ingress.main.tls[].secretName (1) tls.frigate | string |
| string | |
serviceMonitor.frigate.endpoints[].path (1) /api/metrics | string |
| string |