From 94ed2ab29a7367a63213d77d33138a811d6f3f65 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sun, 28 Nov 2021 16:21:47 +0000 Subject: [PATCH] Commit new App releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/photoprism/6.0.0/CHANGELOG.md | 99 + stable/photoprism/6.0.0/CONFIG.md | 8 + stable/photoprism/6.0.0/Chart.lock | 9 + stable/photoprism/6.0.0/Chart.yaml | 34 + stable/photoprism/6.0.0/README.md | 39 + stable/photoprism/6.0.0/app-readme.md | 3 + .../photoprism/6.0.0/charts/common-8.9.4.tgz | Bin 0 -> 37232 bytes .../6.0.0/charts/mariadb-1.0.14.tgz | Bin 0 -> 42679 bytes stable/photoprism/6.0.0/helm-values.md | 44 + stable/photoprism/6.0.0/ix_values.yaml | 88 + stable/photoprism/6.0.0/questions.yaml | 1945 +++++++++++++++++ stable/photoprism/6.0.0/templates/common.yaml | 1 + stable/photoprism/6.0.0/values.yaml | 0 13 files changed, 2270 insertions(+) create mode 100644 stable/photoprism/6.0.0/CHANGELOG.md create mode 100644 stable/photoprism/6.0.0/CONFIG.md create mode 100644 stable/photoprism/6.0.0/Chart.lock create mode 100644 stable/photoprism/6.0.0/Chart.yaml create mode 100644 stable/photoprism/6.0.0/README.md create mode 100644 stable/photoprism/6.0.0/app-readme.md create mode 100644 stable/photoprism/6.0.0/charts/common-8.9.4.tgz create mode 100644 stable/photoprism/6.0.0/charts/mariadb-1.0.14.tgz create mode 100644 stable/photoprism/6.0.0/helm-values.md create mode 100644 stable/photoprism/6.0.0/ix_values.yaml create mode 100644 stable/photoprism/6.0.0/questions.yaml create mode 100644 stable/photoprism/6.0.0/templates/common.yaml create mode 100644 stable/photoprism/6.0.0/values.yaml diff --git a/stable/photoprism/6.0.0/CHANGELOG.md b/stable/photoprism/6.0.0/CHANGELOG.md new file mode 100644 index 00000000000..f1850be891f --- /dev/null +++ b/stable/photoprism/6.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog
+ + + +### [photoprism-6.0.0](https://github.com/truecharts/apps/compare/photoprism-5.0.12...photoprism-6.0.0) (2021-11-28) + +#### Feat + +* use mariadb instead of sqllite ([#1419](https://github.com/truecharts/apps/issues/1419)) + + + + +### [photoprism-5.0.12](https://github.com/truecharts/apps/compare/photoprism-5.0.11...photoprism-5.0.12) (2021-11-23) + +#### Chore + +* update non-major deps helm releases ([#1386](https://github.com/truecharts/apps/issues/1386)) + + + + +### [photoprism-5.0.11](https://github.com/truecharts/apps/compare/photoprism-5.0.10...photoprism-5.0.11) (2021-11-22) + +#### Chore + +* update non-major deps helm releases ([#1383](https://github.com/truecharts/apps/issues/1383)) + + + + +### [photoprism-5.0.10](https://github.com/truecharts/apps/compare/photoprism-5.0.9...photoprism-5.0.10) (2021-11-16) + +#### Chore + +* update non-major deps helm releases ([#1345](https://github.com/truecharts/apps/issues/1345)) + + + + +### [photoprism-5.0.9](https://github.com/truecharts/apps/compare/photoprism-5.0.8...photoprism-5.0.9) (2021-11-15) + +#### Chore + +* persistence cleanup and small bugfixes ([#1329](https://github.com/truecharts/apps/issues/1329)) +* update non-major deps helm releases ([#1338](https://github.com/truecharts/apps/issues/1338)) + + + + +### [photoprism-5.0.8](https://github.com/truecharts/apps/compare/photoprism-5.0.7...photoprism-5.0.8) (2021-11-14) + +#### Chore + +* fixes around the GUI refactor ([#1316](https://github.com/truecharts/apps/issues/1316)) +* move port above advanced in GUI ([#1326](https://github.com/truecharts/apps/issues/1326)) +* clean up Chart.yaml ([#1322](https://github.com/truecharts/apps/issues/1322)) +* update non-major deps helm releases ([#1328](https://github.com/truecharts/apps/issues/1328)) + +#### Fix + +* split udp and tcp ports ([#1321](https://github.com/truecharts/apps/issues/1321)) +* Allow spaces in paths ([#1306](https://github.com/truecharts/apps/issues/1306)) + + + + +### [photoprism-5.0.7](https://github.com/truecharts/apps/compare/photoprism-5.0.6...photoprism-5.0.7) (2021-11-09) + +#### Chore + +* update non-major deps helm releases ([#1297](https://github.com/truecharts/apps/issues/1297)) + + + + +### [photoprism-5.0.6](https://github.com/truecharts/apps/compare/photoprism-5.0.5...photoprism-5.0.6) (2021-11-07) + +#### Chore + +* update non-major deps helm releases ([#1295](https://github.com/truecharts/apps/issues/1295)) + + + + +### [photoprism-5.0.5](https://github.com/truecharts/apps/compare/photoprism-5.0.4...photoprism-5.0.5) (2021-11-07) + +#### Chore + +* update non-major deps helm releases ([#1291](https://github.com/truecharts/apps/issues/1291)) + +#### Chore + +* Simplify GUI for deployment, persistence and securityContext ([#1289](https://github.com/truecharts/apps/issues/1289)) + +#### Feat + +* Simplify the Services GUI ([#1290](https://github.com/truecharts/apps/issues/1290)) + diff --git a/stable/photoprism/6.0.0/CONFIG.md b/stable/photoprism/6.0.0/CONFIG.md new file mode 100644 index 00000000000..fc9b2fa2d5f --- /dev/null +++ b/stable/photoprism/6.0.0/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Internally" quick-start guide: +https://truecharts.org/manual/Quick-Start%20Guides/14-linking-apps/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/stable/photoprism/6.0.0/Chart.lock b/stable/photoprism/6.0.0/Chart.lock new file mode 100644 index 00000000000..08b1ea4ea16 --- /dev/null +++ b/stable/photoprism/6.0.0/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://truecharts.org + version: 8.9.4 +- name: mariadb + repository: https://truecharts.org/ + version: 1.0.14 +digest: sha256:5e9e690d8f7e690e1c778c5c0138361783600ee28999056697fd662961cee0a6 +generated: "2021-11-28T16:18:50.974338383Z" diff --git a/stable/photoprism/6.0.0/Chart.yaml b/stable/photoprism/6.0.0/Chart.yaml new file mode 100644 index 00000000000..05bdc78ca74 --- /dev/null +++ b/stable/photoprism/6.0.0/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "20211018" +dependencies: +- name: common + repository: https://truecharts.org + version: 8.9.4 +- condition: mariadb.enabled + name: mariadb + repository: https://truecharts.org/ + version: 1.0.14 +description: "PhotoPrism\xC2\xAE is a server-based application for browsing, organizing\ + \ and sharing your personal photo collection" +home: https://github.com/truechartsapps/tree/master/charts/stable/photoprism +icon: https://demo.photoprism.org/static/img/logo-avatar.svg +keywords: +- photos +- photoprism +- pictures +- sharing +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: photoprism +sources: +- https://github.com/photoprism/photoprism +- https://hub.docker.com/r/photoprism/photoprism +version: 6.0.0 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/photoprism/6.0.0/README.md b/stable/photoprism/6.0.0/README.md new file mode 100644 index 00000000000..91da0400e3e --- /dev/null +++ b/stable/photoprism/6.0.0/README.md @@ -0,0 +1,39 @@ +# Introduction + +PhotoPrism® is a server-based application for browsing, organizing and sharing your personal photo collection + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | mariadb | 1.0.14 | +| https://truecharts.org | common | 8.9.4 | + +## Installing the Chart + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/03-Installing-an-App/). + +## Uninstalling the Chart + +To remove this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/07-Deleting-an-App/). + +## Support + +- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/) first. +- See the [Wiki](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +--- +All Rights Reserved - The TrueCharts Project diff --git a/stable/photoprism/6.0.0/app-readme.md b/stable/photoprism/6.0.0/app-readme.md new file mode 100644 index 00000000000..8097993cfff --- /dev/null +++ b/stable/photoprism/6.0.0/app-readme.md @@ -0,0 +1,3 @@ +PhotoPrism® is a server-based application for browsing, organizing and sharing your personal photo collection + +This App is supplied by TrueCharts, for more information please visit https://truecharts.org diff --git a/stable/photoprism/6.0.0/charts/common-8.9.4.tgz b/stable/photoprism/6.0.0/charts/common-8.9.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..18b7c420165b33d9a284ea7a6b392a10a24e429f GIT binary patch literal 37232 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 U|K-pB4FCZD|EJqzApm#-0MP08Gynhq literal 0 HcmV?d00001 diff --git a/stable/photoprism/6.0.0/charts/mariadb-1.0.14.tgz b/stable/photoprism/6.0.0/charts/mariadb-1.0.14.tgz new file mode 100644 index 0000000000000000000000000000000000000000..72c7c04a1b46f4860c60a5c947d7d79a9fc260f5 GIT binary patch literal 42679 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

ynz&U0 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 H0Qv&}bh>mc literal 0 HcmV?d00001 diff --git a/stable/photoprism/6.0.0/helm-values.md b/stable/photoprism/6.0.0/helm-values.md new file mode 100644 index 00000000000..e770f3aed8a --- /dev/null +++ b/stable/photoprism/6.0.0/helm-values.md @@ -0,0 +1,44 @@ +# Default Helm-Values + +TrueCharts is primarily build to supply TrueNAS SCALE Apps. +However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file. + +Most of our Apps also consume our "common" Helm Chart. +If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart. +You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document. + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| env | object | See below | environment variables. See [image docs](https://docs.photoprism.org/getting-started/config-options/) for more details. | +| env.GID | string | `nil` | Sets GID Photoprism runs under. | +| env.PHOTOPRISM_ADMIN_PASSWORD | string | `"please-change"` | Initial admin password. **BE SURE TO CHANGE THIS!** | +| env.PHOTOPRISM_CACHE_PATH | string | `"/assets/cache"` | Photoprism cache path | +| env.PHOTOPRISM_CONFIG_PATH | string | `"/assets/config"` | Photoprism config path | +| env.PHOTOPRISM_IMPORT_PATH | string | `"/photoprism/import"` | Photoprism import path | +| env.PHOTOPRISM_ORIGINALS_PATH | string | `"/photoprism/originals"` | Photoprism originals path | +| env.PHOTOPRISM_PUBLIC | string | `"false"` | Disable authentication / password protection | +| env.PHOTOPRISM_SIDECAR_PATH | string | `"/assets/sidecar"` | Photoprism sidecar path | +| env.PHOTOPRISM_STORAGE_PATH | string | `"/assets/storage"` | Photoprism storage path | +| env.PHOTOPRISM_TEMP_PATH | string | `"/photoprism/temp"` | Photoprism temp path | +| env.PROTOPRISM_BACKUP_PATH | string | `"/assets/backup"` | Photoprism backup path | +| env.TZ | string | `"UTC"` | Set the container timezone | +| env.UID | string | `nil` | Sets UID Photoprism runs under. | +| env.UMASK | string | `nil` | Sets UMASK. | +| envValueFrom.PHOTOPRISM_DATABASE_PASSWORD.secretKeyRef.key | string | `"mariadb-password"` | | +| envValueFrom.PHOTOPRISM_DATABASE_PASSWORD.secretKeyRef.name | string | `"mariadbcreds"` | | +| envValueFrom.PHOTOPRISM_DATABASE_SERVER.secretKeyRef.key | string | `"plainporthost"` | | +| envValueFrom.PHOTOPRISM_DATABASE_SERVER.secretKeyRef.name | string | `"mariadbcreds"` | | +| image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| image.repository | string | `"docker.io/photoprism/photoprism"` | image repository | +| image.tag | string | `"20211018@sha256:f61fb623187faa33d1e3f4d86e384cdf401442d4ba6bec96897f42fa4fbb84b4"` | image tag | +| mariadb.enabled | bool | `true` | | +| mariadb.existingSecret | string | `"mariadbcreds"` | | +| mariadb.mariadbDatabase | string | `"photoprism"` | | +| mariadb.mariadbUsername | string | `"photoprism"` | | +| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. | +| securityContext.readOnlyRootFilesystem | bool | `false` | | +| service | object | See values.yaml | Configures service settings for the chart. | + +All Rights Reserved - The TrueCharts Project diff --git a/stable/photoprism/6.0.0/ix_values.yaml b/stable/photoprism/6.0.0/ix_values.yaml new file mode 100644 index 00000000000..8867e1ad8a5 --- /dev/null +++ b/stable/photoprism/6.0.0/ix_values.yaml @@ -0,0 +1,88 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: docker.io/photoprism/photoprism + # -- image tag + tag: 20211018@sha256:f61fb623187faa33d1e3f4d86e384cdf401442d4ba6bec96897f42fa4fbb84b4 + # -- image pull policy + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + +# -- environment variables. See [image docs](https://docs.photoprism.org/getting-started/config-options/) for more details. +# @default -- See below +env: + # -- Set the container timezone + TZ: UTC + # -- Photoprism originals path + PHOTOPRISM_ORIGINALS_PATH: /photoprism/originals + # -- Photoprism import path + PHOTOPRISM_IMPORT_PATH: /photoprism/import + # -- Photoprism temp path + PHOTOPRISM_TEMP_PATH: /photoprism/temp + # -- Photoprism storage path + PHOTOPRISM_STORAGE_PATH: /assets/storage + # -- Photoprism sidecar path + PHOTOPRISM_SIDECAR_PATH: /assets/sidecar + # -- Photoprism cache path + PHOTOPRISM_CACHE_PATH: /assets/cache + # -- Photoprism config path + PHOTOPRISM_CONFIG_PATH: /assets/config + # -- Photoprism backup path + PROTOPRISM_BACKUP_PATH: /assets/backup + # -- Initial admin password. **BE SURE TO CHANGE THIS!** + PHOTOPRISM_ADMIN_PASSWORD: "please-change" + # -- Disable authentication / password protection + PHOTOPRISM_PUBLIC: "false" + # -- Sets UID Photoprism runs under. + UID: # 1000 + # -- Sets GID Photoprism runs under. + GID: # 1000 + # -- Sets UMASK. + UMASK: # 0000 + PHOTOPRISM_DATABASE_DRIVER: "mysql" # Use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance + PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name + PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name + +envValueFrom: + PHOTOPRISM_DATABASE_SERVER: + secretKeyRef: + name: mariadbcreds + key: plainporthost + PHOTOPRISM_DATABASE_PASSWORD: + secretKeyRef: + name: mariadbcreds + key: mariadb-password + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + main: + port: 2342 + targetPort: 2342 + +# -- Configure persistence settings for the chart under this key. +# @default -- See values.yaml +persistence: + storage: + enabled: true + mountPath: "/assets" + temp: + enabled: true + mountPath: "/photoprism/temp" + type: emptyDir + +mariadb: + enabled: true + mariadbUsername: photoprism + mariadbDatabase: photoprism + existingSecret: "mariadbcreds" diff --git a/stable/photoprism/6.0.0/questions.yaml b/stable/photoprism/6.0.0/questions.yaml new file mode 100644 index 00000000000..858c56013ae --- /dev/null +++ b/stable/photoprism/6.0.0/questions.yaml @@ -0,0 +1,1945 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - 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" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "Controller" + label: "" + schema: + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: argItem + label: "Arg" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: TZ + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: UMASK + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + - variable: PUID + label: "PUID" + description: "Sets the userID inside the container" + schema: + type: string + default: "568" + - variable: PHOTOPRISM_ORIGINALS_PATH + label: "PHOTOPRISM_ORIGINALS_PATH" + description: "Photoprism originals path" + schema: + type: string + default: "/photoprism/originals" + - variable: PHOTOPRISM_IMPORT_PATH + label: "PHOTOPRISM_IMPORT_PATH" + description: "Photoprism import path" + schema: + type: string + default: "/photoprism/import" + - variable: PHOTOPRISM_TEMP_PATH + label: "PHOTOPRISM_TEMP_PATH" + description: "Photoprism temp path" + schema: + hidden: true + editable: false + type: string + default: "/photoprism/temp" + - variable: PHOTOPRISM_STORAGE_PATH + label: "PHOTOPRISM_STORAGE_PATH" + description: "Photoprism storage path" + schema: + hidden: true + editable: false + type: string + default: "/assets/storage" + - variable: PHOTOPRISM_SIDECAR_PATH + label: "PHOTOPRISM_SIDECAR_PATH" + description: "Photoprism sidecar path" + schema: + hidden: true + editable: false + type: string + default: "/assets/sidecar" + - variable: PHOTOPRISM_CACHE_PATH + label: "PHOTOPRISM_CACHE_PATH" + description: "Photoprism cache path" + schema: + hidden: true + editable: false + type: string + default: "/assets/cache" + - variable: PHOTOPRISM_CONFIG_PATH + label: "PHOTOPRISM_CONFIG_PATH" + description: "Photoprism config path" + schema: + hidden: true + editable: false + type: string + default: "/assets/config" + - variable: PROTOPRISM_BACKUP_PATH + label: "PROTOPRISM_BACKUP_PATH" + description: "Photoprism backup path" + schema: + hidden: true + editable: false + type: string + default: "/assets/backup" + - variable: PHOTOPRISM_ADMIN_PASSWORD + label: "PHOTOPRISM_ADMIN_PASSWORD" + description: "Initial admin password. **BE SURE TO CHANGE THIS!**" + schema: + type: string + required: true + default: "" + - variable: PHOTOPRISM_PUBLIC + label: "PHOTOPRISM_PUBLIC" + description: "Disable authentication / password protection" + schema: + type: boolean + default: false + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "ClusterIP" + description: "ClusterIP" + - value: "NodePort" + description: "NodePort (Advanced)" + - value: "LoadBalancer" + description: "LoadBalancer (Advanced)" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2342 + editable: true + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 2342 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + + - variable: dnsPolicy + group: "Networking and Services" + label: "dnsPolicy" + schema: + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "ClusterFirst" + description: "ClusterFirst" + - value: "ClusterFirstWithHostNet" + description: "ClusterFirstWithHostNet" + - value: "None" + description: "None" + + - variable: dnsConfig + label: "DNS Configuration" + group: "Networking and Services" + description: "Specify custom DNS configuration which will be applied to the pod" + schema: + type: dict + attrs: + - variable: nameservers + label: "Nameservers" + schema: + default: [] + type: list + items: + - variable: nameserver + label: "Nameserver" + schema: + type: string + - variable: options + label: "options" + schema: + default: [] + type: list + items: + - variable: option + label: "Option Entry" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: searches + label: "Searches" + schema: + default: [] + type: list + items: + - variable: search + label: "Search Entry" + schema: + type: string + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + 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, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + 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: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + type: dict + attrs: + - variable: storage + label: "App Storage" + description: "Stores the Application Configuration." + schema: + 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: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/assets" + hidden: 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: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: temp + label: "App temp mount" + description: "Stores some temporary files" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + hidden: true + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "emptyDir" + hidden: true + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/photoprism/temp" + hidden: true + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + 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: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingress + label: "" + group: "Ingress" + schema: + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + 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: + 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: + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + + - variable: tls + label: "TLS-Settings" + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: "Host" + schema: + type: dict + attrs: + - variable: hosts + label: "Certificate Hosts" + schema: + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + $ref: + - "definitions/certificate" + + - 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: 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: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: "These middlewares enforce a number of best practices." + label: "Enable Default Middlewares" + schema: + type: boolean + default: true + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + 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: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + 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: + type: dict + attrs: + - variable: path + label: "path" + schema: + type: string + required: true + default: "/" + - variable: pathType + label: "pathType" + schema: + type: string + required: true + default: "Prefix" + - variable: service + label: "Linked Service" + schema: + type: dict + attrs: + - variable: name + label: "Service Name" + schema: + type: string + default: "" + - variable: port + label: "Service Port" + schema: + type: int + - variable: tls + label: "TLS-Settings" + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: "Host" + schema: + type: dict + attrs: + - variable: hosts + label: "Certificate Hosts" + schema: + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + $ref: + - "definitions/certificate" + - 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: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Advanced Request minimum resources required" + schema: + type: dict + attrs: + - variable: cpu + label: "CPU" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "Memory RAM" + schema: + type: string + default: "50Mi" + 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: + 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: "hostPath" + 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" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + + - variable: autoscaling + group: "Advanced" + label: "(Advanced) Horizontal Pod Autoscaler" + schema: + type: dict + attrs: + - 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: addons + group: "Addons" + label: "" + schema: + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - 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 ipv4 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: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + type: dict + attrs: + - variable: codeserver + label: "" + schema: + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + 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: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + 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: + 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: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/stable/photoprism/6.0.0/templates/common.yaml b/stable/photoprism/6.0.0/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/stable/photoprism/6.0.0/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/stable/photoprism/6.0.0/values.yaml b/stable/photoprism/6.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d