diff --git a/charts/stable/double-take/.helmignore b/charts/stable/double-take/.helmignore new file mode 100644 index 00000000..4379e2b3 --- /dev/null +++ b/charts/stable/double-take/.helmignore @@ -0,0 +1,26 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl diff --git a/charts/stable/double-take/Chart.yaml b/charts/stable/double-take/Chart.yaml new file mode 100644 index 00000000..3ac1937c --- /dev/null +++ b/charts/stable/double-take/Chart.yaml @@ -0,0 +1,22 @@ +--- +apiVersion: v2 +appVersion: 1.6.0 +description: Unified UI and API for processing and training images for facial recognition. +name: double-take +version: 1.0.0 +kubeVersion: ">=1.16.0-0" +keywords: + - double-take + - frigate + - nvr +home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/double-take +icon: https://double-take.org/icon +sources: + - https://github.com/jakowenko/double-take +maintainers: + - name: crutonjohn + email: crutonjohn@pm.me +dependencies: + - name: common + repository: https://library-charts.k8s-at-home.com + version: 4.0.1 diff --git a/charts/stable/double-take/README.md b/charts/stable/double-take/README.md new file mode 100644 index 00000000..721e6fb0 --- /dev/null +++ b/charts/stable/double-take/README.md @@ -0,0 +1,116 @@ +# double-take + +![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: 1.6.0](https://img.shields.io/badge/AppVersion-1.6.0-informational?style=flat-square) + +Unified UI and API for processing and training images for facial recognition. + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.k8s-at-home.com | common | 4.0.1 | + +## TL;DR + +```console +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install double-take k8s-at-home/double-take +``` + +## Installing the Chart + +To install the chart with the release name `double-take` + +```console +helm install double-take k8s-at-home/double-take +``` + +## Uninstalling the Chart + +To uninstall the `double-take` deployment + +```console +helm uninstall double-take +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. + +## Configuration + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install double-take \ + --set env.TZ="America/New York" \ + k8s-at-home/double-take +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install double-take k8s-at-home/double-take -f values.yaml +``` + +## Custom configuration + +**Note**: Configuration file defined in `Values.config` will be copied into the container's persistent storage at first run only. Further configuration should be done in the application itself! See [project documentation](https://github.com/jakowenko/double-take#configuration) for more information. + +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| config | object | See values.yaml | double-take configuration settings. This will be copied into the container's persistent storage at first run only. Further configuration should be done in the application itself! See [project documentation](https://github.com/jakowenko/double-take#configuration) for more information. | +| image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| image.repository | string | `"jakowenko/double-take"` | image repository | +| image.tag | string | `"1.6.0"` | image tag | +| ingress.main | object | See values.yaml | Enable and configure ingress settings for the chart under this key. | +| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. See [API Images](https://github.com/jakowenko/double-take#api-images) for explaination on what data is stored where. | +| service | object | See values.yaml | Configures service settings for the chart. | + +## Changelog + +All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog). + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +### [1.0.0] + +#### Added + +- Initial version + +#### Changed + +- N/A + +#### Removed + +- N/A + +[1.0.0]: #100 + +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/charts/stable/double-take/README.md.gotmpl b/charts/stable/double-take/README.md.gotmpl new file mode 100644 index 00000000..358abe31 --- /dev/null +++ b/charts/stable/double-take/README.md.gotmpl @@ -0,0 +1,146 @@ +{{- define "custom.repository.organization" -}} +k8s-at-home +{{- end -}} + +{{- define "custom.repository.url" -}} +https://github.com/k8s-at-home/charts +{{- end -}} + +{{- define "custom.helm.url" -}} +https://k8s-at-home.com/charts/ +{{- end -}} + +{{- define "custom.helm.path" -}} +{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }} +{{- end -}} + +{{- define "custom.notes" -}} +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** +{{- end -}} + +{{- define "custom.requirements" -}} +## Requirements + +{{ template "chart.kubeVersionLine" . }} +{{- end -}} + +{{- define "custom.dependencies" -}} +## Dependencies + +{{ template "chart.requirementsTable" . }} +{{- end -}} + +{{- define "custom.install.tldr" -}} +## TL;DR + +```console +helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }} +helm repo update +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.install" -}} +## Installing the Chart + +To install the chart with the release name `{{ template "chart.name" . }}` + +```console +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.uninstall" -}} +## Uninstalling the Chart + +To uninstall the `{{ template "chart.name" . }}` deployment + +```console +helm uninstall {{ template "chart.name" . }} +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. +{{- end -}} + +{{- define "custom.configuration.header" -}} +## Configuration +{{- end -}} + +{{- define "custom.configuration.readValues" -}} +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). +{{- end -}} + +{{- define "custom.configuration.example.set" -}} +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install {{ template "chart.name" . }} \ + --set env.TZ="America/New York" \ + {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.configuration.example.file" -}} +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml +``` +{{- end -}} + +{{- define "custom.valuesSection" -}} +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +{{ template "chart.valuesTable" . }} +{{- end -}} + +{{- define "custom.support" -}} +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community +{{- end -}} + +{{ template "chart.header" . }} + +{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }} + +{{ template "chart.description" . }} + +{{ template "custom.notes" . }} + +{{ template "chart.sourcesSection" . }} + +{{ template "custom.requirements" . }} + +{{ template "custom.dependencies" . }} + +{{ template "custom.install.tldr" . }} + +{{ template "custom.install" . }} + +{{ template "custom.uninstall" . }} + +{{ template "custom.configuration.header" . }} + +{{ template "custom.configuration.readValues" . }} + +{{ template "custom.configuration.example.set" . }} + +{{ template "custom.configuration.example.file" . }} + +{{ template "custom.custom.configuration" . }} + +{{ template "custom.valuesSection" . }} + +{{ template "custom.changelog" . }} + +{{ template "custom.support" . }} + +{{ template "helm-docs.versionFooter" . }} +{{ "" }} diff --git a/charts/stable/double-take/README_CHANGELOG.md.gotmpl b/charts/stable/double-take/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..06ad5fb3 --- /dev/null +++ b/charts/stable/double-take/README_CHANGELOG.md.gotmpl @@ -0,0 +1,27 @@ +{{- define "custom.changelog.header" -}} +## Changelog +{{- end -}} + +{{- define "custom.changelog" -}} +{{ template "custom.changelog.header" . }} + +All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog). + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +### [1.0.0] + +#### Added + +- Initial version + +#### Changed + +- N/A + +#### Removed + +- N/A + +[1.0.0]: #100 +{{- end -}} diff --git a/charts/stable/double-take/README_CONFIG.md.gotmpl b/charts/stable/double-take/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..d77a4be4 --- /dev/null +++ b/charts/stable/double-take/README_CONFIG.md.gotmpl @@ -0,0 +1,9 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +**Note**: Configuration file defined in `Values.config` will be copied into the container's persistent storage at first run only. Further configuration should be done in the application itself! See [project documentation](https://github.com/jakowenko/double-take#configuration) for more information. +{{- end -}} diff --git a/charts/stable/double-take/templates/NOTES.txt b/charts/stable/double-take/templates/NOTES.txt new file mode 100644 index 00000000..90f7b653 --- /dev/null +++ b/charts/stable/double-take/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/charts/stable/double-take/templates/common.yaml b/charts/stable/double-take/templates/common.yaml new file mode 100644 index 00000000..9cf4bc5d --- /dev/null +++ b/charts/stable/double-take/templates/common.yaml @@ -0,0 +1,17 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Append the configMap volume to the volumes */}} +{{- define "double-take.settingsVolume" -}} +enabled: "true" +mountPath: "/.storage/config/config.yml" +subPath: "config.yml" +type: "custom" +volumeSpec: + configMap: + name: {{ include "common.names.fullname" . }}-settings +{{- end -}} +{{- $_ := set .Values.persistence "double-take-settings" (include "double-take.settingsVolume" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/charts/stable/double-take/templates/configmap.yaml b/charts/stable/double-take/templates/configmap.yaml new file mode 100644 index 00000000..3b09a0e4 --- /dev/null +++ b/charts/stable/double-take/templates/configmap.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "common.names.fullname" . }}-settings + labels: + {{- include "common.labels" . | nindent 4 }} +data: + config.yml: | +{{- with .Values.config }} + {{- toYaml . | nindent 4 }} +{{- end }} diff --git a/charts/stable/double-take/values.yaml b/charts/stable/double-take/values.yaml new file mode 100644 index 00000000..7768ea32 --- /dev/null +++ b/charts/stable/double-take/values.yaml @@ -0,0 +1,284 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: jakowenko/double-take + # -- image tag + tag: 1.6.0 + # -- image pull policy + pullPolicy: IfNotPresent + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 3000 + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +# -- Configure persistence settings for the chart under this key. +# See [API Images](https://github.com/jakowenko/double-take#api-images) for explaination on what data is stored where. +# @default -- See values.yaml +persistence: + data: + enabled: false + mountPath: /.storage + +# -- double-take configuration settings. +# This will be copied into the container's persistent storage at first run only. +# Further configuration should be done in the application itself! +# See [project documentation](https://github.com/jakowenko/double-take#configuration) for more information. +# @default -- See values.yaml +config: + # enable authentication for ui and api (default: false) + auth: false + + # if authentication is enabled + # age of access token in api response and mqtt topics (default: shown below) + # expressed in seconds or a string describing a time span zeit/ms + # https://github.com/vercel/ms + token: + image: 24h + + # enable mqtt subscribing and publishing (default: shown below) + mqtt: + host: + username: + password: + + topics: + # mqtt topic for frigate message subscription + frigate: frigate/events + # mqtt topic for home assistant discovery subscription + homeassistant: homeassistant + # mqtt topic where matches are published by name + matches: double-take/matches + # mqtt topic where matches are published by camera name + cameras: double-take/cameras + + # global detect settings (default: shown below) + detect: + match: + # save match images + save: true + # include base64 encoded string in api results and mqtt messages + # options: true, false, box + base64: false + # minimum confidence needed to consider a result a match + confidence: 60 + # hours to keep match images until they are deleted + purge: 168 + # minimum area in pixels to consider a result a match + min_area: 10000 + + unknown: + # save unknown images + save: true + # include base64 encoded string in api results and mqtt messages + # options: true, false, box + base64: false + # minimum confidence needed before classifying a name as unknown + confidence: 40 + # hours to keep unknown images until they are deleted + purge: 8 + # minimum area in pixels to keep an unknown result + min_area: 0 + + # frigate settings (default: shown below) + frigate: + url: + + # object labels that are allowed for facial recognition + labels: + - person + + attempts: + # number of times double take will request a frigate latest.jpg for facial recognition + latest: 10 + # number of times double take will request a frigate snapshot.jpg for facial recognition + snapshot: 10 + # process frigate images from frigate/+/person/snapshot topics + mqtt: true + # add a delay expressed in seconds between each detection loop + delay: 0 + + image: + # height of frigate image passed for facial recognition + height: 500 + + # only process images from specific cameras + cameras: + # - front-door + # - garage + + # only process images from specific zones + zones: + # - camera: garage + # zone: driveway + + # override frigate attempts and image per camera + events: + # front-door: + # attempts: + # # number of times double take will request a frigate latest.jpg for facial recognition + # latest: 5 + # # number of times double take will request a frigate snapshot.jpg for facial recognition + # snapshot: 5 + # # process frigate images from frigate//person/snapshot topic + # mqtt: false + # # add a delay expressed in seconds between each detection loop + # delay: 1 + + # image: + # # height of frigate image passed for facial recognition (only if using default latest.jpg and snapshot.jpg) + # height: 1000 + # # custom image that will be used in place of latest.jpg + # latest: http://camera-url.com/image.jpg + # # custom image that will be used in place of snapshot.jpg + # snapshot: http://camera-url.com/image.jpg + + # camera settings (default: shown below) + cameras: + front-door: + # apply masks before processing image + # masks: + # # list of x,y coordinates to define the polygon of the zone + # coordinates: + # - 1920,0,1920,328,1638,305,1646,0 + # # show the mask on the final saved image (helpful for debugging) + # visible: false + # # size of camera stream used in resizing masks + # size: 1920x1080 + + # override global detect variables per camera + # detect: + # match: + # # save match images + # save: true + # # include base64 encoded string in api results and mqtt messages + # # options: true, false, box + # base64: false + # # minimum confidence needed to consider a result a match + # confidence: 60 + # # minimum area in pixels to consider a result a match + # min_area: 10000 + + # unknown: + # # save unknown images + # save: true + # # include base64 encoded string in api results and mqtt messages + # # options: true, false, box + # base64: false + # # minimum confidence needed before classifying a match name as unknown + # confidence: 40 + # # minimum area in pixels to keep an unknown result + # min_area: 0 + + # snapshot: + # # process any jpeg encoded mqtt topic for facial recognition + # topic: + # # process any http image for facial recognition + # url: + + # detector settings (default: shown below) + detectors: + compreface: + url: + # recognition api key + key: + # number of seconds before the request times out and is aborted + timeout: 15 + # minimum required confidence that a recognized face is actually a face + # value is between 0.0 and 1.0 + det_prob_threshold: 0.8 + # comma-separated slugs of face plugins + # https://github.com/exadel-inc/CompreFace/blob/master/docs/Face-services-and-plugins.md) + # face_plugins: mask,gender,age + + # deepstack: + # url: + # key: + # # number of seconds before the request times out and is aborted + # timeout: 15 + + # facebox: + # url: + # # number of seconds before the request times out and is aborted + # timeout: 15 + + # schedule settings (default: shown below) + schedule: + # disable recognition if conditions are met + disable: + # - days: + # - monday + # - tuesday + # times: + # - 20:00-23:59 + # cameras: + # - office + # - days: + # - tuesday + # - wednesday + # times: + # - 13:00-15:00 + # - 18:00-20:00 + # cameras: + # - living-room + + # notify settings (default: shown below) + notify: + gotify: + url: + token: + priority: 5 + + # only notify from specific cameras + # cameras: + # - front-door + # - garage + + # only notify from specific zones + # zones: + # - camera: garage + # zone: driveway + + # time settings (default: shown below) + time: + # defaults to iso 8601 format with support for token-based formatting + # https://github.com/moment/luxon/blob/master/docs/formatting.md#table-of-tokens + format: + # time zone used in logs + timezone: UTC + + # log settings (default: shown below) + # options: silent, error, warn, info, http, verbose, debug, silly + logs: + level: info + + # ui settings (default: shown below) + ui: + pagination: + # number of results per page + limit: 50 + + thumbnails: + # value between 0-100 + quality: 95 + # value in pixels + width: 500 + + logs: + # number of lines displayed + lines: 500