diff --git a/incubator/frigate/8.0.0/CHANGELOG.md b/incubator/frigate/8.0.0/CHANGELOG.md new file mode 100644 index 00000000000..f641b9520f8 --- /dev/null +++ b/incubator/frigate/8.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [frigate-8.0.0](https://github.com/truecharts/charts/compare/frigate-7.0.1...frigate-8.0.0) (2023-06-04) + + + + +## [frigate-7.0.1](https://github.com/truecharts/charts/compare/frigate-7.0.0...frigate-7.0.1) (2023-06-04) + +### Chore + +- update helm general non-major ([#9393](https://github.com/truecharts/charts/issues/9393)) + + + + +## [frigate-7.0.0](https://github.com/truecharts/charts/compare/frigate-6.0.2...frigate-7.0.0) (2023-06-01) + +### Feat + +- hide advanced ingress options behind checbox ([#9203](https://github.com/truecharts/charts/issues/9203)) + - port to new common ([#9141](https://github.com/truecharts/charts/issues/9141)) + + ### Fix + +- fix mistakes on questions.yaml + + + + +## [frigate-6.0.2](https://github.com/truecharts/charts/compare/frigate-6.0.1...frigate-6.0.2) (2023-02-10) + +### Fix + +- ensure new helm deps repo is used in latest releases as well. + + + + +## [frigate-6.0.1](https://github.com/truecharts/charts/compare/frigate-6.0.0...frigate-6.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [frigate-6.0.0](https://github.com/truecharts/charts/compare/frigate-5.0.14...frigate-6.0.0) (2023-01-21) + + + + +## [frigate-5.0.14](https://github.com/truecharts/charts/compare/frigate-5.0.13...frigate-5.0.14) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [frigate-5.0.13](https://github.com/truecharts/charts/compare/frigate-5.0.12...frigate-5.0.13) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [frigate-5.0.12](https://github.com/truecharts/charts/compare/frigate-5.0.11...frigate-5.0.12) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [frigate-5.0.11](https://github.com/truecharts/charts/compare/frigate-5.0.10...frigate-5.0.11) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [frigate-5.0.10](https://github.com/truecharts/charts/compare/frigate-5.0.9...frigate-5.0.10) (2022-12-13) + +### Chore + +- update helm general non-major + diff --git a/incubator/frigate/8.0.0/Chart.yaml b/incubator/frigate/8.0.0/Chart.yaml new file mode 100644 index 00000000000..7f5654dc226 --- /dev/null +++ b/incubator/frigate/8.0.0/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "0.12.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 12.12.1 +deprecated: false +description: NVR With Realtime Object Detection for IP Cameras +home: https://truecharts.org/charts/incubator/frigate +icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png +keywords: + - encode + - nvr + - media + - frigate +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: frigate +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/frigate + - https://github.com/blakeblackshear/frigate +type: application +version: 8.0.0 +annotations: + truecharts.org/catagories: | + - nvr + truecharts.org/SCALE-support: "true" diff --git a/incubator/frigate/8.0.0/README.md b/incubator/frigate/8.0.0/README.md new file mode 100644 index 00000000000..63d5d2c8fdc --- /dev/null +++ b/incubator/frigate/8.0.0/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/incubator/frigate/8.0.0/app-changelog.md b/incubator/frigate/8.0.0/app-changelog.md new file mode 100644 index 00000000000..1d00fbffdaa --- /dev/null +++ b/incubator/frigate/8.0.0/app-changelog.md @@ -0,0 +1,4 @@ + + +## [frigate-8.0.0](https://github.com/truecharts/charts/compare/frigate-7.0.1...frigate-8.0.0) (2023-06-04) + diff --git a/incubator/frigate/8.0.0/app-readme.md b/incubator/frigate/8.0.0/app-readme.md new file mode 100644 index 00000000000..8726f049d47 --- /dev/null +++ b/incubator/frigate/8.0.0/app-readme.md @@ -0,0 +1,8 @@ +NVR With Realtime Object Detection for IP Cameras + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/frigate](https://truecharts.org/charts/incubator/frigate) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/frigate/8.0.0/charts/common-12.12.1.tgz b/incubator/frigate/8.0.0/charts/common-12.12.1.tgz new file mode 100644 index 00000000000..8c9ba8d440e Binary files /dev/null and b/incubator/frigate/8.0.0/charts/common-12.12.1.tgz differ diff --git a/incubator/frigate/8.0.0/ix_values.yaml b/incubator/frigate/8.0.0/ix_values.yaml new file mode 100644 index 00000000000..34f2a107db2 --- /dev/null +++ b/incubator/frigate/8.0.0/ix_values.yaml @@ -0,0 +1,471 @@ +image: + repository: tccr.io/truecharts/frigate + pullPolicy: IfNotPresent + tag: v0.12.0@sha256:6fac983662fc6095ffdc8dd494f0c918192ddab80602f01d50a3569dab868148 + +securityContext: + container: + readOnlyRootFilesystem: false + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 +# -- The "render_config" key is only used internally to "render" or not the configuration +# - Some parts of the config bellow are slightly modified so they can be added on SCALE UI. Mainly lists. +# - Do not blindly copy paste configuration from upstream. As this won't work on all cases +# - Where you see "null" set as default is ignored by the configmap. (Not all keys are supported). +# - Those "nulls" should be replaced with integers (if you want to set a value) +frigate: + mqtt: + # -- Enable it to add the configuration in the config file + render_config: true + # -- Enables MQTT + enabled: false + host: mqtt.server.com + port: 1883 + # -- NOTE: Must be unique if you are running multiple instances + topic_prefix: "" + # -- NOTE: Must be unique if you are running multiple instances + client_id: "" + user: "" + password: "" + stats_interval: 60 + + detectors: + # -- Enable it to add the configuration in the config file + render_config: false + config: [] + # -- Required: Name of the detector + # - name: coral + # # -- Valid values are 'edgetpu' (requires device property below) and 'cpu'. + # type: edgetpu + # # -- Device name as defined here: https://coral.ai/docs/edgetpu/multiple-edgetpu/#using-the-tensorflow-lite-python-api + # device: usb + # # -- This value is only used for CPU types + # num_threads: 3 + + model: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Required: Object detection model input width + width: 320 + # -- Required: Object detection model input height + height: 320 + # -- Optional: Path to the model + path: "" + # -- Optional: Path to the labelmap + labelmap_path: "" + # -- Optional: Label name modifications. + labelmap: [] + # - model: "2" + # name: vehicle + # - model: 3 + # name: vehicle + + logger: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Default log verbosity (default: shown below) + default: info + # -- Optional: Component specific logger overrides + logs: [] + # - component: frigate.event + # verbosity: debug + + birdseye: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Enables birdseye + enabled: true + # -- Optional: Width of the output resolution + width: null + # -- Optional: Height of the output resolution + height: null + # -- Optional: Encoding quality of the mpeg1 feed + # - 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. + quality: null + # -- Optional: Mode of the view. Available options are: objects, motion, and continuous + # - objects - cameras are included if they have had a tracked object within the last 30 seconds + # - motion - cameras are included if motion was detected in the last 30 seconds + # - continuous - all cameras are included always + mode: "" + + ffmpeg: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: global ffmpeg args + global_args: "" + # -- Optional: global input args + input_args: "" + # -- Optional: global hwaccel args + # - NOTE: See hardware acceleration docs for your specific device + hwaccel_args: "" + # -- Optional: global output args + output_args: + # -- Optional: output args for detect streams + detect: "" + # -- Optional: output args for record streams + record: "" + # -- Optional: output args for rtmp streams + rtmp: "" + + detect: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Enables detection for the camera. + # - This value can be set via MQTT and will be updated in startup based on retained value + enabled: true + # -- Optional: width of the frame for the input with the detect role + width: null + # -- Optional: height of the frame for the input with the detect role + height: null + # -- Optional: desired fps for your camera for the input with the detect role + # - NOTE: Recommended value of 5. Ideally, try and reduce your FPS on the camera. + fps: null + # -- Optional: Number of frames without a detection before frigate considers an object to be gone. (default: 5x the frame rate) + max_disappeared: null + # -- Optional: Configuration for stationary object tracking + stationary: + # -- Optional: Frequency for confirming stationary objects + # - When set to 0, object detection will not confirm stationary objects until movement is detected. + # - If set to 10, object detection will run to confirm the object still exists on every 10th frame. + interval: null + # -- Optional: Number of frames without a position change for an object to be considered stationary (default: 10x the frame rate or 10s) + threshold: null + # -- Optional: Define a maximum number of frames for tracking a stationary object (default: not set, track forever) + # - This can help with false positives for objects that should only be stationary for a limited amount of time. + # - It can also be used to disable stationary object tracking. For example, you may want to set a value for person, but leave + # - car at the default. + # - WARNING: Setting these values overrides default behavior and disables stationary object tracking. + # - There are very few situations where you would want it disabled. It is NOT recommended to + # - copy these values from the example config into your config unless you know they are needed. + # max_frames: + # # -- Optional: Default for all object types (default: not set, track forever) + # default: + # # -- Optional: Object specific values + # objects: + # - object: person + # frames: 1000 + + objects: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: list of objects to track from labelmap.txt + track: [] + # - person + # - car + # -- Optional: mask to prevent all object types from being detected in certain areas (default: no mask) + # - Checks based on the bottom center of the bounding box of the object. + # - NOTE: This mask is COMBINED with the object type specific mask below + mask: "" + # - Optional: filters to reduce false positives for specific object types + filters: [] + # - object: person + # # -- Optional: Minimum width*height of the bounding box for the detected object + # min_area: 5000 + # # -- Optional: Maximum width*height of the bounding box for the detected object + # max_area: 100000 + # # -- Optional: Minimum width/height of the bounding box for the detected object + # min_ratio: "0.5" + # # -- Optional: Maximum width/height of the bounding box for the detected object + # max_ratio: "2.0" + # # -- Optional: Minimum score for the object to initiate tracking + # min_score: "0.5" + # # -- Optional: Minimum decimal percentage for tracked object's computed score to be considered a true positive + # threshold: "0.7" + # # -- Optional: Mask to prevent this object type from being detected in certain areas + # # - Checks based on the bottom center of the bounding box of the object + # mask: 0,0,1000,0,1000,200,0,200 + + motion: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. + # - Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive. + # - The value should be between 1 and 255. + threshold: null + # -- Optional: Minimum size in pixels in the resized motion image that counts as motion + # - Increasing this value will prevent smaller areas of motion from being detected. Decreasing will + # - make motion detection more sensitive to smaller moving objects. + # - As a rule of thumb: + # - 15 - high sensitivity + # - 30 - medium sensitivity + # - 50 - low sensitivity + contour_area: null + # -- Optional: Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames + # - Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion. + # - Too low and a fast moving person wont be detected as motion. + delta_alpha: "" + # -- Optional: Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background + # - Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster. + # - Low values will cause things like moving shadows to be detected as motion for longer. + # - https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average/ + frame_alpha: "" + # -- Optional: Height of the resized motion frame (default: 50) + # - This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense + # - of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion. + frame_height: null + # -- Optional: motion mask + # - NOTE: see docs for more detailed info on creating masks + mask: "" + # -- Optional: improve contrast + # - Enables dynamic contrast improvement. This should help improve night detections at the cost of making motion detection more sensitive + # - for daytime. + improve_contrast: false + # -- Optional: Delay when updating camera motion through MQTT from ON -> OFF + mqtt_off_delay: null + + record: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Enable recording + # - WARNING: If recording is disabled in the config, turning it on via + # - the UI or MQTT later will have no effect. + # - WARNING: Frigate does not currently support limiting recordings based + # - on available disk space automatically. If using recordings, + # - you must specify retention settings for a number of days that + # - will fit within the available disk space of your drive or Frigate will crash. + enabled: false + # -- Optional: Number of minutes to wait between cleanup runs + # - This can be used to reduce the frequency of deleting recording segments from disk if you want to minimize i/o + expire_interval: + # -- Optional: Retention settings for recording + retain: + # -- Render retain config + render_config: false + # -- Optional: Number of days to retain recordings regardless of events + # - NOTE: This should be set to 0 and retention should be defined in events section below + # - if you only want to retain recordings of events. + days: + # -- Optional: Mode for retention. Available options are: all, motion, and active_objects + # - all - save all recording segments regardless of activity + # - motion - save all recordings segments with any detected motion + # - active_objects - save all recording segments with active/moving objects + # - NOTE: this mode only applies when the days setting above is greater than 0 + mode: "" + # -- Optional: Event recording settings + events: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Number of seconds before the event to include + pre_capture: null + # -- Optional: Number of seconds after the event to include + post_capture: null + # -- Optional: Objects to save recordings for. Defaults to all + objects: [] + # - person + # -- Optional: Restrict recordings to objects that entered any of the listed zones + required_zones: [] + # -- Optional: Retention settings for recordings of events + retain: + # -- Render retain config + render_config: false + # -- Required: Default retention days + default: 10 + # -- Optional: Mode for retention. + # - all - save all recording segments for events regardless of activity + # - motion - save all recordings segments for events with any detected motion + # - active_objects - save all recording segments for event with active/moving objects + mode: "" + # -- Optional: Per object retention days + objects: [] + # - object: person + # days: 15 + + snapshots: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Enable writing jpg snapshot to /media/frigate/clips + # - This value can be set via MQTT and will be updated in startup based on retained value + enabled: false + # -- Optional: Save a clean PNG copy of the snapshot image + clean_copy: true + # -- Optional: print a timestamp on the snapshots + timestamp: false + # -- Optional: draw bounding box on the snapshots + bounding_box: false + # -- Optional: crop the snapshot + crop: false + # -- Optional: height to resize the snapshot to (default: original size) + height: + # -- Optional: Restrict snapshots to objects that entered any of the listed zones (default: no required zones) + required_zones: [] + # -- Optional: Camera override for retention settings (default: global values) + retain: + # -- Render retain config + render_config: false + # -- Required: Default retention days (default: shown below) + default: 10 + # -- Optional: Per object retention days + objects: [] + # - object: person + # days: 15 + + rtmp: + # -- Enable it to add the configuration in the config file + render_config: false + # - Optional: Enable the RTMP stream + enabled: true + + live: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Set the height of the live stream. (default: 720) + # - This must be less than or equal to the height of the detect stream. Lower resolutions + # - reduce bandwidth required for viewing the live stream. Width is computed to match known aspect ratio. + height: null + # -- Optional: Set the encode quality of the live stream (default: shown below) + # - 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. + quality: null + + timestamp_style: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Position of the timestamp + # - "tl" (top left), "tr" (top right), "bl" (bottom left), "br" (bottom right) + position: "" + # -- Optional: Format specifier conform to the Python package "datetime" + # - Additional Examples: + # - german: "%d.%m.%Y %H:%M:%S" + format: "" + # -- Optional: Color of font + color: + # -- Enable it to add the configuration in the config file + render_config: false + # -- All Required when color is specified (default: shown below) + red: 255 + green: 255 + blue: 255 + # -- Optional: Line thickness of font (default: shown below) + thickness: null + # -- Optional: Effect of lettering (default: shown below) + # - None (No effect), + # - "solid" (solid background in inverse color of font) + # - "shadow" (shadow for font) + effect: "" + + cameras: + # -- Required: name of the camera + - camera_name: back + # -- Required: ffmpeg settings for the camera + ffmpeg: + # -- Required: A list of input streams for the camera. See documentation for more information. + inputs: + # -- Required: the path to the stream + - path: rtsp://viewer:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 + # -- Required: list of roles for this stream. valid values are: detect,record,rtmp + # - NOTICE: In addition to assigning the record, and rtmp roles, + # - they must also be enabled in the camera config. + roles: + - detect + - rtmp + # -- Optional: stream specific global args + global_args: "" + # - Optional: stream specific hwaccel args + hwaccel_args: "" + # - Optional: stream specific input args + input_args: "" + # - Optional: stream specific output args + output_args: + detect: "" + record: "" + rtmp: "" + # -- Optional: camera specific global args + global_args: "" + # -- Optional: camera specific hwaccel args + hwaccel_args: "" + # -- Optional: camera specific input args + input_args: "" + # -- Optional: camera specific output args + output_args: + detect: "" + record: "" + rtmp: "" + # -- Optional: timeout for highest scoring image before allowing it + # - to be replaced by a newer image. + best_image_timeout: 60 + # -- Optional: zones for this camera + zones: + # -- Required: name of the zone + # - NOTE: This must be different than any camera names, but can match with another zone on another camera + - name: front_steps + # -- Required: List of x,y coordinates to define the polygon of the zone. + # - NOTE: Presence in a zone is evaluated only based on the bottom center of the objects bounding box. + coordinates: 545,1077,747,939,788,805 + # -- Optional: List of objects that can trigger this zone (default: all tracked objects) + objects: [] + # - person + # -- Optional: Zone level object filters. + # -NOTE: The global and camera filters are applied upstream. + filters: [] + # - object: person + # min_area: null + # max_area: null + # threshold: "" + # -- Optional: Configuration for the jpg snapshots published via MQTT + mqtt: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Enable publishing snapshot via mqtt for camera + # - NOTE: Only applies to publishing image data to MQTT via 'frigate///snapshot'. + # - All other messages will still be published. + enabled: true + # -- Optional: print a timestamp on the snapshots + timestamp: true + # -- Optional: draw bounding box on the snapshots + bounding_box: true + # -- Optional: crop the snapshot + crop: true + # -- Optional: height to resize the snapshot to + height: null + # -- Optional: jpeg encode quality + quality: null + # -- Optional: Restrict mqtt messages to objects that entered any of the listed zones + required_zones: [] + # -- Optional: Configuration for how camera is handled in the GUI. + ui: + # -- Enable it to add the configuration in the config file + render_config: false + # -- Optional: Adjust sort order of cameras in the UI. Larger numbers come later + # - By default the cameras are sorted alphabetically. + order: null + # -- Optional: Whether or not to show the camera in the Frigate UI + dashboard: true + +ingress: + rtmp: + autoLink: true + +service: + main: + ports: + main: + port: 10500 + protocol: http + targetPort: 5000 + rtmp: + enabled: true + ports: + rtmp: + enabled: true + port: 1935 + targetPort: 1935 + +persistence: + media: + enabled: true + mountPath: /media + db: + enabled: true + mountPath: /db + frigate-config: + enabled: true + mountPath: /config + type: configmap + objectName: frigate-config + items: + - key: config.yml + path: config.yml + +portal: + open: + enabled: true diff --git a/incubator/frigate/8.0.0/questions.yaml b/incubator/frigate/8.0.0/questions.yaml new file mode 100644 index 00000000000..48738cfd0e4 --- /dev/null +++ b/incubator/frigate/8.0.0/questions.yaml @@ -0,0 +1,3499 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + + - variable: frigate + group: App Configuration + label: Frigate Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: mqtt + label: MQTT + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + schema: + type: boolean + show_if: [["enabled", "=", true]] + default: true + - variable: host + label: Host + schema: + type: string + show_if: [["enabled", "=", true]] + required: true + default: "" + - variable: port + label: Port + schema: + type: int + show_if: [["enabled", "=", true]] + default: 1883 + - variable: topic_prefix + label: Topic Prefix + description: Must be unique if you are running multiple instances + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: client_id + label: Client ID + description: Must be unique if you are running multiple instances + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: stats_interval + label: Stats Interval + description: Interval in seconds for publishing stats + schema: + type: int + show_if: [["enabled", "=", true]] + "null": true + default: 60 + - variable: user + label: Username + schema: + type: string + show_if: [["enabled", "=", true]] + default: "" + - variable: password + label: Password + schema: + type: string + show_if: [["enabled", "=", true]] + private: true + default: "" + - variable: detectors + label: Detectors + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: config + label: Detectors Configuration + schema: + type: list + default: [] + items: + - variable: detector_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: Name of the detector + schema: + type: string + required: true + default: "" + - variable: type + label: Type + description: Name of the detector + schema: + type: string + required: true + default: cpu + enum: + - value: cpu + description: CPU + - value: edgetpu + description: Edge TPU + - variable: device + label: Device + description: Device name as defined here - https://coral.ai/docs/edgetpu/multiple-edgetpu/#using-the-tensorflow-lite-python-api + schema: + type: string + default: "" + - variable: num_threads + label: Number of Threads + description: This value is only used for CPU types + schema: + type: int + "null": true + show_if: [["type", "=", "cpu"]] + - variable: model + label: Model + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: width + label: Width + schema: + type: int + required: true + default: 320 + - variable: height + label: Height + schema: + type: int + required: true + default: 320 + - variable: path + label: Path + schema: + type: string + default: "" + - variable: labelmap_path + label: Label Map Path + schema: + type: string + default: "" + - variable: labelmap + label: Label Map Configuration + schema: + type: list + default: [] + items: + - variable: labelmap_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: model + label: Model + schema: + type: string + required: true + default: "" + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: logger + label: Logger + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: default + label: Default Log Verbosity + schema: + type: string + required: true + default: info + enum: + - value: info + description: Info + - value: debug + description: Debug + - value: warning + description: Warning + - value: error + description: Error + - value: critical + description: Critical + - variable: logs + label: Component Specific Logs + schema: + type: list + default: [] + items: + - variable: component_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: component + label: Component + description: Find out the available components here https://docs.frigate.video/configuration/advanced/#logger + schema: + type: string + required: true + default: "" + - variable: verbosity + label: Default Log Verbosity + schema: + type: string + required: true + default: info + enum: + - value: info + description: Info + - value: debug + description: Debug + - value: warning + description: Warning + - value: error + description: Error + - value: critical + description: Critical + - variable: birdseye + label: Birds Eye + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: Enables the birdseye + schema: + type: boolean + default: true + - variable: width + label: Width + description: Width of the output resolution + schema: + type: int + "null": true + - variable: height + label: Height + description: Height of the output resolution + schema: + type: int + "null": true + - variable: quality + label: Quality + description: Encoding quality of the mpeg1 feed. Where 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. + schema: + type: int + min: 1 + max: 31 + "null": true + - variable: mode + label: Mode + description: | + Mode of the view. + Objects - Cameras are included if they have had a tracked object within the last 30 seconds. + Motion - Cameras are included if motion was detected in the last 30 seconds. + Continuous - All cameras are included always. + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: objects + description: Objects + - value: motion + description: Motion + - value: continuous + description: Continuous + - variable: ffmpeg + label: ffmpeg + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: global_args + label: Global Args + schema: + type: string + default: "" + - variable: hwaccel_args + label: HW Acceleration Args + description: See hardware acceleration docs for your specific device + schema: + type: string + default: "" + - variable: input_args + label: Input Args + schema: + type: string + default: "" + - variable: output_args + label: Output Args + schema: + additional_attrs: true + type: dict + attrs: + - variable: detect + label: Detect + schema: + type: string + default: "" + - variable: record + label: Record + schema: + type: string + default: "" + - variable: rtmp + label: RTMP + schema: + type: string + default: "" + - variable: detect + label: Detect + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: Enables detection for the cameras + schema: + type: boolean + default: true + - variable: width + label: Width + description: Width of the frame for the input with the detect role + schema: + type: int + "null": true + - variable: height + label: Height + description: Height of the frame for the input with the detect role + schema: + type: int + "null": true + - variable: fps + label: FPS + description: Desired fps for your camera for the input with the detect role. Recommended value of 5. Ideally, try and reduce your FPS on the camera. + schema: + type: int + "null": true + - variable: max_disappeared + label: Max Disappeared + description: Number of frames without a detection before frigate considers an object to be gone. + schema: + type: int + "null": true + - variable: stationary + label: Stationary + schema: + additional_attrs: true + type: dict + attrs: + - variable: interval + label: Interval + description: | + Frequency for confirming stationary objects + When set to 0, object detection will not confirm stationary objects until movement is detected. + If set to 10, object detection will run to confirm the object still exists on every 10th frame. + schema: + type: int + "null": true + - variable: threshold + label: Threshold + description: Number of frames without a position change for an object to be considered stationary + schema: + type: int + "null": true + - variable: set_max_frames + label: Set Max Frames + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: max_frames + label: Max Frames + schema: + additional_attrs: true + type: dict + attrs: + - variable: default + label: Default + description: Default for all object types + schema: + type: int + "null": true + - variable: objects + label: Objects + schema: + type: list + default: [] + items: + - variable: object_entry + label: Object Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + schema: + type: string + required: true + default: "" + - variable: frames + label: Frames + schema: + type: int + required: true + - variable: objects + label: Objects + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: track + label: Track + description: Objects to track from labelmap.txt + schema: + type: list + default: [] + items: + - variable: track_entry + label: Track Object Entry + schema: + type: string + required: true + default: "" + - variable: mask + label: Mask + description: | + Mask to prevent all object types from being detected in certain areas + Checks based on the bottom center of the bounding box of the object. + This mask is COMBINED with the object type specific mask below + schema: + type: string + default: "" + - variable: filters + label: Filters + description: Filters to reduce false positives for specific object types + schema: + type: list + default: [] + items: + - variable: filter_entry + label: Filter Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example person + schema: + type: string + required: true + default: "" + - variable: min_area + label: Min Area + description: Minimum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: max_area + label: Max Area + description: Maximum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: min_ratio + label: Min Ratio + description: Minimum width/height of the bounding box for the detected object + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: max_ratio + label: Max Ratio + description: Maximum width/height of the bounding box for the detected object + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: min_score + label: Min Score + description: Minimum score for the object to initiate tracking + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: threshold + label: Threshold + description: Minimum decimal percentage for tracked object's computed score to be considered a true positive + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: mask + label: Mask + description: | + Mask to prevent this object type from being detected in certain areas + Checks based on the bottom center of the bounding box of the object + schema: + type: string + default: "" + - variable: motion + label: Motion + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: threshold + label: Threshold + description: | + The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. + Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive. + schema: + type: int + min: 1 + max: 255 + "null": true + - variable: contour_area + label: Contour Area + description: | + Minimum size in pixels in the resized motion image that counts as motion + Increasing this value will prevent smaller areas of motion from being detected. Decreasing will + make motion detection more sensitive to smaller moving objects. + As a rule of thumb: + 15 - high sensitivity + 30 - medium sensitivity + 50 - low sensitivity + schema: + type: int + "null": true + - variable: delta_alpha + label: Delta Alpha + description: | + Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames + Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion. + Too low and a fast moving person wont be detected as motion. + schema: + type: string + default: "" + valid_chars: '^$|^[0-9]+(\.[0-9]*)?$' + - variable: frame_alpha + label: Frame Alpha + description: | + Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background + Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster. + Low values will cause things like moving shadows to be detected as motion for longer. + https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average + schema: + type: string + default: "" + valid_chars: '^$|^[0-9]+(\.[0-9]*)?$' + - variable: frame_height + label: Frame Height + description: | + Height of the resized motion frame + This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense + of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion. + schema: + type: int + "null": true + - variable: mask + label: Mask + description: See docs for more detailed info on creating masks + schema: + type: string + default: "" + - variable: improve_contrast + label: Improve Contrast + description: Improve contrast. Enables dynamic contrast improvement. This should help improve night detections at the cost of making motion detection more sensitive for daytime. + schema: + type: boolean + default: false + - variable: mqtt_off_delay + label: MQTT Off Delay + description: Delay when updating camera motion through MQTT from ON -> OFF + schema: + type: int + "null": true + - variable: record + label: Record + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: | + Enable recording + WARNING: If recording is disabled in the config, turning it on via the UI or MQTT later will have no effect. + WARNING: Frigate does not currently support limiting recordings based on available disk space automatically. + If using recordings,you must specify retention settings for a number of days that will fit within the available disk space of your drive or Frigate will crash. + schema: + type: boolean + default: true + - variable: expire_interval + label: Expire Interval + description: Number of minutes to wait between cleanup runs + schema: + type: int + "null": true + - variable: retain + label: Record > Retain + description: Retention settings for recording + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Retain Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: days + label: Days + description: | + Number of days to retain recordings regardless of events + NOTE: This should be set to 0 and retention should be defined in events section below if you only want to retain recordings of events. + schema: + type: int + "null": true + - variable: mode + label: Mode + description: | + Mode for retention. + All - save all recording segments regardless of activity + Motion - save all recordings segments with any detected motion + Active Objects - save all recording segments with active/moving objects + NOTE: This mode only applies when the days setting above is greater than 0 + schema: + type: string + show_if: [["days", "!=", 0]] + default: "" + enum: + - value: "" + description: Inherit + - value: all + description: All + - value: motion + description: Motion + - value: active_objects + description: Active Objects + - variable: events + label: Record > Events + description: Event recording settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: pre_capture + label: Pre Capture + description: Number of seconds before the event to include + schema: + type: int + "null": true + - variable: post_capture + label: Post Capture + description: Number of seconds after the event to include + schema: + type: int + "null": true + - variable: objects + label: Objects + description: Objects to save recordings for. Defaults to all objects. + schema: + type: list + default: [] + items: + - variable: object_entry + label: "" + schema: + type: string + required: true + default: "" + - variable: required_zones + label: Required Zones + description: Restrict recordings to objects that entered any of the listed zones + schema: + type: list + default: [] + items: + - variable: zone_entry + label: "" + schema: + type: string + required: true + default: "" + - variable: retain + label: Record > Events > Retain + description: Retention settings for recordings of events + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Retain Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: default + label: Default + description: Default retention days + schema: + type: int + required: true + default: 10 + - variable: mode + label: Mode + description: | + Mode for retention. + All - save all recording segments for events regardless of activity + Motion - save all recordings segments for events with any detected motion + Active Objects - save all recording segments for event with active/moving objects + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: all + description: All + - value: motion + description: Motion + - value: active_objects + description: Active Objects + - variable: objects + label: Objects + description: Per object retention days + schema: + type: list + default: [] + items: + - variable: objects_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example Person + schema: + type: string + required: true + default: "" + - variable: days + label: Retention Days + description: Retention days for the object + schema: + type: int + required: true + default: 15 + - variable: snapshots + label: Snapshots + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: | + Optional: Enable writing jpg snapshot to /media/frigate/clips + This value can be set via MQTT and will be updated in startup based on retained value + schema: + type: boolean + default: true + - variable: clean_copy + label: Clean Copy + description: Save a clean PNG copy of the snapshot image + schema: + type: boolean + default: true + - variable: timestamp + label: Timestamp + description: Print a timestamp on the snapshots + schema: + type: boolean + default: false + - variable: bounding_box + label: Bounding Box + description: Draw bounding box on the snapshots + schema: + type: boolean + default: false + - variable: crop + label: Crop + description: Crop the snapshot + schema: + type: boolean + default: false + - variable: height + label: Height + description: Height to resize the snapshot to + schema: + type: int + "null": true + - variable: required_zones + label: Required Zones + description: Restrict recordings to objects that entered any of the listed zones + schema: + type: list + default: [] + items: + - variable: zone_entry + label: Zone Entry + schema: + type: string + required: true + default: "" + - variable: retain + label: Snapshots > Retain + description: Retention settings for snapshots of events + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Retain Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: default + label: Default + description: Default retention days + schema: + type: int + required: true + default: 10 + - variable: objects + label: Objects + description: Per object retention days + schema: + type: list + default: [] + items: + - variable: objects_entry + label: Objects Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example Person + schema: + type: string + required: true + default: "" + - variable: days + label: Retention Days + description: Retention days for the object + schema: + type: int + required: true + default: 15 + - variable: rtmp + label: RTMP + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: Enable the RTMP stream + schema: + type: boolean + default: true + - variable: live + label: Live + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: height + label: Height + description: | + Set the height of the live stream. + This must be less than or equal to the height of the detect stream. Lower resolutions + reduce bandwidth required for viewing the live stream. Width is computed to match known aspect ratio. + schema: + type: int + "null": true + - variable: quality + label: Quality + description: | + Set the encode quality of the live stream + 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. + schema: + type: int + min: 1 + max: 31 + default: 8 + - variable: timestamp_style + label: Timestamp Style + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: position + label: Position + description: Position of the timestamp + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: tl + description: Top Left + - value: tr + description: Top Right + - value: bl + description: Bottom Left + - value: br + description: Bottom Right + - variable: format + label: Format + description: Format specifier conform to the Python package + schema: + type: string + default: "" + - variable: color + label: Timestamp Style > Color + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: red + label: Red + schema: + type: int + default: 255 + required: true + - variable: green + label: Green + schema: + type: int + required: true + default: 255 + - variable: blue + label: Blue + schema: + type: int + required: true + default: 255 + - variable: thickness + label: Thickness + description: Line thickness of font + schema: + type: int + "null": true + - variable: effect + label: Effect + description: | + Effect of lettering + Inherit - Inherit from default configuration + None - No effect + Solid - Solid background in inverse color of font + Shadow - Shadow for font + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: None + description: None + - value: solid + description: Solid + - value: shadow + description: Shadow + - variable: cameras + label: Cameras + schema: + type: list + default: [] + items: + - variable: camera_entry + label: Camera Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: camera_name + label: Camera Name + schema: + type: string + required: true + default: "" + - variable: ffmpeg + label: ffmpeg + description: ffmpeg Settings for the camera + schema: + additional_attrs: true + type: dict + attrs: + - variable: inputs + label: Inputs + description: A list of input streams for the camera. See documentation for more information. + schema: + type: list + required: true + default: [] + items: + - variable: input_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + description: The path to the stream + schema: + type: string + required: true + default: "" + - variable: roles + label: Roles + schema: + type: list + required: true + default: [] + items: + - variable: role_entry + label: "" + schema: + type: string + required: true + default: "" + enum: + - value: detect + description: Detect + - value: rtmp + description: RTMP + - value: record + description: Record + - variable: global_args + label: Global Args + description: Stream specific global args + schema: + type: string + default: "" + - variable: hwaccel_args + label: HW Acceleration Args + description: Stream specific hwaccel args + schema: + type: string + default: "" + - variable: input_args + label: Input Args + description: Stream specific input args + schema: + type: string + default: "" + - variable: output_args + label: Output Args + schema: + additional_attrs: true + type: dict + attrs: + - variable: detect + label: Detect + schema: + type: string + default: "" + - variable: record + label: Record + schema: + type: string + default: "" + - variable: rtmp + label: RTMP + schema: + type: string + default: "" + - variable: global_args + label: Global Args + description: Camera specific global args + schema: + type: string + default: "" + - variable: hwaccel_args + label: HW Acceleration Args + description: Camera specific hwaccel args + schema: + type: string + default: "" + - variable: input_args + label: Input Args + description: Camera specific input args + schema: + type: string + default: "" + - variable: output_args + label: Output Args + schema: + additional_attrs: true + type: dict + attrs: + - variable: detect + label: Detect + schema: + type: string + default: "" + - variable: record + label: Record + schema: + type: string + default: "" + - variable: rtmp + label: RTMP + schema: + type: string + default: "" + - variable: best_image_timeout + label: Best Image Timeout + description: Timeout for highest scoring image before allowing it to be replaced by a newer image. + schema: + type: int + "null": true + - variable: zones + label: Zones + description: Zones for this camera + schema: + type: list + default: [] + items: + - variable: zone_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Zone Name + schema: + type: string + required: true + default: "" + - variable: coordinates + label: Coordinates + description: List of x,y coordinates to define the polygon of the zone. + schema: + type: string + required: true + default: "" + - variable: objects + label: Objects + schema: + type: list + default: [] + items: + - variable: object_entry + label: "" + description: For example person + schema: + type: string + required: true + default: "" + - variable: filters + label: Filters + description: Zone level object filters + schema: + type: list + default: [] + items: + - variable: filter_entry + label: Filter Entry + description: For example person + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example person + schema: + type: string + required: true + default: "" + - variable: min_area + label: Min Area + description: Minimum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: max_area + label: Max Area + description: Maximum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: threshold + label: Threshold + description: Minimum decimal percentage for tracked object's computed score to be considered a true positive + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: mqtt + label: MQTT + description: MQTT Configuration for jpg snapshots published for this camera + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: | + Enable publishing snapshot via mqtt for camera + NOTE: Only applies to publishing image data to MQTT via 'frigate///snapshot'. + All other messages will still be published. + schema: + type: boolean + default: true + - variable: timestamp + label: Timestamp + description: Print a timestamp on the snapshots + schema: + type: boolean + default: true + - variable: bounding_box + label: Bounding Box + description: Draw bounding box on the snapshots + schema: + type: boolean + default: true + - variable: crop + label: Crop + description: Crop the snapshot + schema: + type: boolean + default: true + - variable: height + label: Height + description: Height to resize the snapshot to + schema: + type: int + "null": true + - variable: quality + label: Quality + description: JPEG encode quality + schema: + type: int + "null": true + - variable: required_zones + label: Required Zones + description: Restrict mqtt messages to objects that entered any of the listed zones + schema: + type: list + default: [] + items: + - variable: required_zone + label: Required Zone + schema: + type: string + required: true + default: "" + - variable: ui + label: UI + description: Configuration for how camera is handled in the GUI. + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: order + label: order + description: Adjust sort order of cameras in the UI. Larger numbers come later By default the cameras are sorted alphabetically. + schema: + "null": true + type: int + - variable: dashboard + label: Dashboard + description: Whether or not to show the camera in the Frigate UI + schema: + type: boolean + default: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10500 + editable: true + required: true + - variable: rtmp + label: "RTMP Service" + description: "The service on which nodes connect to." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: rtmp + label: "RTMP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 1935 + editable: true + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: media + label: "App Media" + description: "Stores the Application Media" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: db + label: "App DB" + description: "Stores the Application DB" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/frigate/8.0.0/templates/NOTES.txt b/incubator/frigate/8.0.0/templates/NOTES.txt new file mode 100644 index 00000000000..72e715a3bc5 --- /dev/null +++ b/incubator/frigate/8.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/incubator/frigate/8.0.0/templates/_configmap.tpl b/incubator/frigate/8.0.0/templates/_configmap.tpl new file mode 100644 index 00000000000..d2e871638fd --- /dev/null +++ b/incubator/frigate/8.0.0/templates/_configmap.tpl @@ -0,0 +1,496 @@ +{{/* Define the configmap */}} +{{- define "frigate.configmap" -}} +enabled: true +data: + config.yml: | + database: + path: /db/frigate.db + + mqtt: + {{- include "frigate.mqtt" .Values.frigate.mqtt | indent 6 }} + + {{- if and .Values.frigate.detectors.render_config .Values.frigate.detectors.config }} + detectors: + {{- include "frigate.detectors" .Values.frigate.detectors | indent 6 }} + {{- end }} + + {{- if .Values.frigate.model.render_config }} + model: + {{- include "frigate.model" .Values.frigate.model | indent 6 }} + {{- end }} + + {{- if .Values.frigate.logger.render_config }} + logger: + {{- include "frigate.logger" .Values.frigate.logger | indent 6 }} + {{- end }} + + {{- if .Values.frigate.birdseye.render_config }} + birdseye: + {{- include "frigate.birdseye" .Values.frigate.birdseye | indent 6 }} + {{- end }} + + {{- if .Values.frigate.ffmpeg.render_config }} + ffmpeg: + {{- include "frigate.ffmpeg" .Values.frigate.ffmpeg | indent 6 }} + {{- end }} + + {{- if .Values.frigate.detect.render_config }} + detect: + {{- include "frigate.detect" .Values.frigate.detect | indent 6 }} + {{- end -}} + + {{- if .Values.frigate.objects.render_config }} + objects: + {{- include "frigate.objects" .Values.frigate.objects | indent 6 }} + {{- end }} + + {{- if .Values.frigate.motion.render_config }} + motion: + {{- include "frigate.motion" .Values.frigate.motion | indent 6 }} + {{- end }} + + {{- if .Values.frigate.record.render_config }} + record: + {{- include "frigate.record" .Values.frigate.record | indent 6 }} + {{- end }} + + {{- if .Values.frigate.snapshots.render_config }} + snapshots: + {{- include "frigate.snapshots" .Values.frigate.snapshots | indent 6 }} + {{- end }} + + {{- if .Values.frigate.rtmp.render_config }} + rtmp: + {{- include "frigate.rtmp" .Values.frigate.rtmp | indent 6 }} + {{- end }} + + {{- if .Values.frigate.live.render_config }} + live: + {{- include "frigate.live" .Values.frigate.live | indent 6 }} + {{- end }} + + {{- if .Values.frigate.timestamp_style.render_config }} + timestamp_style: + {{- include "frigate.timestamp_style" .Values.frigate.timestamp_style | indent 6 }} + {{- end }} + + {{- $cameras := .Values.frigate.cameras }} + cameras: + {{- range $cam := $cameras }} + {{ $cam.camera_name | required "You need to provide a camera name" }}: + ffmpeg: + inputs: + {{- range $input := $cam.ffmpeg.inputs }} + - path: {{ $input.path | required "You need to provide a path" }} + roles: + {{- range $role := $input.roles }} + - {{ $role }} + {{- else -}} + {{- fail "You need to provide roles" -}} + {{- end -}} + {{- include "frigate.ffmpeg" $input | indent 14 }} + {{- end -}} {{/* End range $cam.ffmpeg.inputs */}} + {{- include "frigate.ffmpeg" $cam.ffmpeg | indent 10 }} + {{- with $cam.best_image_timeout }} + best_image_timeout: {{ . }} + {{- end -}} + {{- with $cam.zones }} + zones: + {{- range $zone := . }} + {{ $zone.name | required "You have to specify a zone name" }}: + coordinates: {{ required "You have to specify coordinates" .coordinates }} + {{- with $zone.objects }} + objects: + {{- range $obj := . }} + - {{ $obj }} + {{- end -}} + {{- end -}} + {{- with $zone.filters }} + filters: + {{- range $filter := . }} + {{ $filter.object | required "You have to specify an object" }}: + {{- with $filter.min_area }} + min_area: {{ . }} + {{- end -}} + {{- with $filter.max_area }} + max_area: {{ . }} + {{- end -}} + {{- with $filter.threshold }} + threshold: {{ . }} + {{- end -}} + {{- end -}} {{/* end range filters */}} + {{- end -}} {{/* end with filter */}} + {{- end -}} {{/* end range zones */}} + {{- end -}} {{/* end with zones */}} + {{- if $cam.mqtt.render_config -}} + {{- with $cam.mqtt }} + mqtt: + enabled: {{ ternary "True" "False" .enabled }} + timestamp: {{ ternary "True" "False" .timestamp }} + bounding_box: {{ ternary "True" "False" .bounding_box }} + crop: {{ ternary "True" "False" .crop }} + {{- with .height }} + height: {{ . }} + {{- end -}} + {{- with .quality }} + quality: {{ . }} + {{- end -}} + {{- with .required_zones }} + required_zones: + {{- range $zone := . }} + - {{ $zone }} + {{- end -}} + {{- end -}} + {{- end -}} {{/* end with mqtt */}} + {{- end -}} {{/* end if mqtt.render_config */}} + {{- if $cam.ui.render_config -}} + {{- with $cam.ui }} + ui: + {{- if not (kindIs "invalid" .order) }} + order: {{ .order }} + {{- end }} + dashboard: {{ ternary "True" "False" .dashboard }} + {{- end -}} {{/* end with ui */}} + {{- end -}} {{/* end if ui.render_config */}} + {{- end -}} {{/* end range cameras */}} +{{- end }} + +{{- define "frigate.ffmpeg" -}} +{{- $ffmpeg := . -}} + +{{- with $ffmpeg.global_args }} +global_args: {{ . }} +{{- end -}} +{{- with $ffmpeg.input_args }} +input_args: {{ . }} +{{- end -}} +{{- with $ffmpeg.hwaccel_args }} +hwaccel_args: {{ . }} +{{- end -}} +{{- if $ffmpeg.output_args -}} +{{- if or $ffmpeg.output_args.detect $ffmpeg.output_args.record $ffmpeg.output_args.rtmp }} +output_args: + {{- with $ffmpeg.output_args.detect }} + detect: {{ . }} + {{- end -}} + {{- with $ffmpeg.output_args.record }} + record: {{ . }} + {{- end -}} + {{- with $ffmpeg.output_args.rtmp }} + rtmp: {{ . }} + {{- end -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.detect" -}} +{{- $detect := . }} +enabled: {{ ternary "True" "False" $detect.enabled }} +{{- with $detect.width }} +width: {{ . }} +{{- end -}} +{{- with $detect.height }} +height: {{ . }} +{{- end -}} +{{- with $detect.fps }} +fps: {{ . }} +{{- end -}} +{{- with $detect.max_disappeared }} +max_disappeared: {{ . }} +{{- end -}} +{{- if or (not (kindIs "invalid" $detect.stationary.interval)) $detect.stationary.threshold $detect.stationary.set_max_frames }} +stationary: + {{- if not (kindIs "invalid" $detect.stationary.interval) }} {{/* invalid kind means its empty (0 is not empty) */}} + interval: {{ $detect.stationary.interval }} + {{- end -}} + {{- with $detect.stationary.threshold }} + threshold: {{ . }} + {{- end -}} + {{- if (hasKey $detect.stationary "max_frames") }} + {{- if or $detect.stationary.max_frames.default $detect.stationary.max_frames.objects }} + max_frames: + {{- with $detect.stationary.max_frames.default }} + default: {{ . }} + {{- end -}} + {{- with $detect.stationary.max_frames.objects }} + objects: + {{- range $obj := . }} + {{ $obj.object | required "You need to provide an object" }}: {{ $obj.frames | required "You need to provide frames" }} + {{- end -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.motion" -}} +{{- $motion := . -}} + +{{- with $motion.threshold }} +threshold: {{ . }} +{{- end -}} +{{- with $motion.contour_area }} +contour_area: {{ . }} +{{- end -}} +{{- with $motion.delta_alpha }} +delta_alpha: {{ . }} +{{- end -}} +{{- with $motion.frame_alpha }} +frame_alpha: {{ . }} +{{- end -}} +{{- with $motion.frame_height }} +frame_height: {{ . }} +{{- end -}} +{{- with $motion.mask }} +mask: {{ . }} +{{- end }} +improve_contrast: {{ ternary "True" "False" $motion.improve_contrast }} +{{- with $motion.mqtt_off_delay }} +mqtt_off_delay: {{ . }} +{{- end -}} +{{- end -}} + +{{- define "frigate.record" -}} +{{- $record := . }} +enabled: {{ ternary "True" "False" $record.enabled }} +{{- with $record.expire_interval }} +expire_interval: {{ . }} +{{- end -}} +{{- if $record.retain.render_config }} +retain: + {{- if not (kindIs "invalid" $record.retain.days) }} + days: {{ $record.retain.days }} + {{- end -}} + {{- with $record.retain.mode }} + mode: {{ . }} + {{- end -}} +{{- end -}} +{{- if $record.events.render_config }} +events: + {{- if not (kindIs "invalid" $record.events.pre_capture) }} + pre_capture: {{ $record.events.pre_capture }} + {{- end -}} + {{- if not (kindIs "invalid" $record.events.post_capture) }} + post_capture: {{ $record.events.post_capture }} + {{- end -}} + {{- with $record.events.objects }} + objects: + {{- range $obj := . }} + - {{ $obj }} + {{- end -}} + {{- end -}} + {{- with $record.events.required_zones }} + required_zones: + {{- range $zone := . }} + - {{ $zone }} + {{- end -}} + {{- end -}} + {{- if $record.events.retain.render_config }} + retain: + default: {{ $record.events.retain.default | required "You need to provide default retain days" }} + {{- with $record.events.retain.mode }} + mode: {{ . }} + {{- end -}} + {{- with $record.events.retain.objects }} + objects: + {{- range $obj := . }} + {{ $obj.object | required "You need to provide an object" }}: {{ $obj.days | required "You need to provide default retain days" }} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.objects" -}} +{{- $objects := . -}} + +{{- with $objects.track }} +track: + {{- range $track := . }} + - {{ $track }} + {{- end -}} +{{- end -}} +{{- with $objects.mask }} +mask: {{ . }} +{{- end -}} +{{- with $objects.filters }} +filters: + {{- range $filter := . }} + {{ $filter.object | required "You need to provide an object" }}: + {{- with $filter.min_area }} + min_area: {{ . }} + {{- end -}} + {{- with $filter.max_area }} + max_area: {{ . }} + {{- end -}} + {{- with $filter.min_ratio }} + min_ratio: {{ . }} + {{- end -}} + {{- with $filter.max_ratio }} + max_ratio: {{ . }} + {{- end -}} + {{- with $filter.min_score }} + min_score: {{ . }} + {{- end -}} + {{- with $filter.threshold }} + threshold: {{ . }} + {{- end -}} + {{- with $filter.mask }} + mask: {{ . }} + {{- end -}} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.birdseye" -}} +{{- $birdseye := . }} +enabled: {{ ternary "True" "False" $birdseye.enabled }} +{{- with $birdseye.width }} +width: {{ . }} +{{- end -}} +{{- with $birdseye.height }} +height: {{ . }} +{{- end -}} +{{- with $birdseye.quality }} +quality: {{ . }} +{{- end -}} +{{- with $birdseye.mode }} +mode: {{ . }} +{{- end -}} +{{- end -}} + +{{- define "frigate.timestamp_style" -}} +{{- $timestamp_style := . -}} + +{{- with $timestamp_style.position }} +position: {{ . }} +{{- end -}} +{{- with $timestamp_style.format }} +format: {{ . }} +{{- end -}} +{{- if $timestamp_style.color.render_config }} +color: + red: {{ $timestamp_style.color.red }} + green: {{ $timestamp_style.color.green }} + blue: {{ $timestamp_style.color.blue }} +{{- end -}} +{{- with $timestamp_style.thickness }} +thickness: {{ . }} +{{- end -}} +{{- with $timestamp_style.effect }} +effect: {{ $timestamp_style.effect }} +{{- end -}} +{{- end -}} + +{{- define "frigate.live" -}} +{{- $live := . -}} +{{- with $live.height }} +height: {{ . }} +{{- end -}} +{{- with $live.quality }} +quality: {{ . }} +{{- end -}} +{{- end -}} + +{{- define "frigate.rtmp" -}} +{{- $rtmp := . }} +enabled: {{ ternary "True" "False" $rtmp.enabled }} +{{- end -}} + +{{- define "frigate.snapshots" -}} +{{- $snapshots := . }} +enabled: {{ ternary "True" "False" $snapshots.enabled }} +clean_copy: {{ ternary "True" "False" $snapshots.clean_copy }} +timestamp: {{ ternary "True" "False" $snapshots.timestamp }} +bounding_box: {{ ternary "True" "False" $snapshots.bounding_box }} +crop: {{ ternary "True" "False" $snapshots.crop }} +{{- with $snapshots.height }} +height: {{ . }} +{{- end -}} +{{- with $snapshots.required_zones }} +required_zones: + {{- range $zone := . }} + - {{ $zone }} + {{- end -}} +{{- end -}} +{{- if $snapshots.retain.render_config }} +retain: + default: {{ $snapshots.retain.default | required "You need to provide default retain days" }} + {{- with $snapshots.retain.objects }} + objects: + {{- range $obj := . }} + {{ $obj.object | required "You need to provide an object" }}: {{ $obj.days | required "You need to provide default retain days" }} + {{- end -}} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.detectors" -}} +{{- $detectors := . -}} + +{{- range $detector := $detectors.config }} +{{ $detector.name | required "You need to provide a detector name" }}: + type: {{ $detector.type | required "You need to provide a detector type" }} + {{- with $detector.device }} + device: {{ . }} + {{- end -}} + {{- with $detector.num_threads }} + num_threads: {{ . }} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.model" -}} +{{ $model := . }} +width: {{ $model.width | required "You need to provide a model width" }} +height: {{ $model.height | required "You need to provide a model height" }} +{{- with $model.path }} +path: {{ . }} +{{- end -}} +{{- with $model.labelmap_path }} +labelmap_path: {{ . }} +{{- end -}} +{{- with $model.labelmap }} +labelmap: + {{- range $lmap := . }} + {{ $lmap.model | required "You need to provide a labelmap model" }}: {{ $lmap.name | required "You need to provide a labelmap name" }} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.logger" -}} +{{- $logger := . }} +default: {{ $logger.default }} +{{- with $logger.logs }} +logs: + {{- range $log := . }} + {{ $log.component | required "You need to provide a logger cmponent" }}: {{ $log.verbosity | required "You need to provide logger verbosity" }} + {{- end -}} +{{- end -}} +{{- end -}} + +{{- define "frigate.mqtt" -}} +{{- $mqtt := . }} +{{- if $mqtt.render_config }} +enabled: {{ ternary "True" "False" $mqtt.enabled }} +host: {{ required "You need to provide an MQTT host" $mqtt.host }} +{{- with $mqtt.port }} +port: {{ . }} +{{- end -}} +{{- with $mqtt.topic_prefix }} +topic_prefix: {{ . }} +{{- end -}} +{{- with $mqtt.client_id }} +client_id: {{ . }} +{{- end -}} +{{- if not (kindIs "invalid" $mqtt.stats_interval) }} +stats_interval: {{ $mqtt.stats_interval }} +{{- end -}} +{{- with $mqtt.user }} +user: {{ . }} +{{- end -}} +{{- with $mqtt.password }} +password: {{ . }} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/incubator/frigate/8.0.0/templates/common.yaml b/incubator/frigate/8.0.0/templates/common.yaml new file mode 100644 index 00000000000..d1ee5e989de --- /dev/null +++ b/incubator/frigate/8.0.0/templates/common.yaml @@ -0,0 +1,11 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for frigate */}} +{{- $config := include "frigate.configmap" . | fromYaml -}} +{{- if $config -}} + {{- $_ := set .Values.configmap "frigate-config" $config -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/incubator/frigate/8.0.0/values.yaml b/incubator/frigate/8.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d