From 9a7cc9dda0bcdf19c5b475aa154f9ccd407e4bb4 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Tue, 24 Oct 2023 19:02:20 +0000 Subject: [PATCH] Publish new changes in catalog --- community/pigallery2/1.0.0/Chart.lock | 6 + community/pigallery2/1.0.0/Chart.yaml | 26 ++ community/pigallery2/1.0.0/README.md | 8 + community/pigallery2/1.0.0/app-readme.md | 8 + .../pigallery2/1.0.0/charts/common-1.1.1.tgz | Bin 0 -> 61731 bytes .../pigallery2/1.0.0/ci/basic-values.yaml | 16 + .../pigallery2/1.0.0/ci/extra-values.yaml | 25 ++ .../pigallery2/1.0.0/ci/hostNet-values.yaml | 13 + community/pigallery2/1.0.0/ix_values.yaml | 42 +++ community/pigallery2/1.0.0/metadata.yaml | 8 + community/pigallery2/1.0.0/questions.yaml | 354 ++++++++++++++++++ .../pigallery2/1.0.0/templates/NOTES.txt | 1 + .../1.0.0/templates/_configuration.tpl | 18 + .../1.0.0/templates/_persistence.tpl | 60 +++ .../1.0.0/templates/_pigallery2.tpl | 49 +++ .../pigallery2/1.0.0/templates/_portal.tpl | 12 + .../pigallery2/1.0.0/templates/_service.tpl | 15 + .../pigallery2/1.0.0/templates/common.yaml | 12 + community/pigallery2/item.yaml | 16 + 19 files changed, 689 insertions(+) create mode 100644 community/pigallery2/1.0.0/Chart.lock create mode 100644 community/pigallery2/1.0.0/Chart.yaml create mode 100644 community/pigallery2/1.0.0/README.md create mode 100644 community/pigallery2/1.0.0/app-readme.md create mode 100644 community/pigallery2/1.0.0/charts/common-1.1.1.tgz create mode 100644 community/pigallery2/1.0.0/ci/basic-values.yaml create mode 100644 community/pigallery2/1.0.0/ci/extra-values.yaml create mode 100644 community/pigallery2/1.0.0/ci/hostNet-values.yaml create mode 100644 community/pigallery2/1.0.0/ix_values.yaml create mode 100644 community/pigallery2/1.0.0/metadata.yaml create mode 100644 community/pigallery2/1.0.0/questions.yaml create mode 100644 community/pigallery2/1.0.0/templates/NOTES.txt create mode 100644 community/pigallery2/1.0.0/templates/_configuration.tpl create mode 100644 community/pigallery2/1.0.0/templates/_persistence.tpl create mode 100644 community/pigallery2/1.0.0/templates/_pigallery2.tpl create mode 100644 community/pigallery2/1.0.0/templates/_portal.tpl create mode 100644 community/pigallery2/1.0.0/templates/_service.tpl create mode 100644 community/pigallery2/1.0.0/templates/common.yaml create mode 100644 community/pigallery2/item.yaml diff --git a/community/pigallery2/1.0.0/Chart.lock b/community/pigallery2/1.0.0/Chart.lock new file mode 100644 index 0000000000..78c2b02885 --- /dev/null +++ b/community/pigallery2/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.1.1 +digest: sha256:a7dbe3e4d42dbcd4325776e5e01a1d630c7f185f79e7ebf22b1b9cc80f56eed7 +generated: "2023-10-23T17:17:47.575239321+03:00" diff --git a/community/pigallery2/1.0.0/Chart.yaml b/community/pigallery2/1.0.0/Chart.yaml new file mode 100644 index 0000000000..87f509002f --- /dev/null +++ b/community/pigallery2/1.0.0/Chart.yaml @@ -0,0 +1,26 @@ +name: pigallery2 +description: PiGallery2 is a fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers +annotations: + title: PiGallery2 +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 2.0.0 +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.1.1 +home: https://bpatrik.github.io/pigallery2 +icon: https://media.sys.truenas.net/apps/pigallery2/icons/icon.png +sources: + - https://hub.docker.com/r/bpatrik/pigallery2 + - https://github.com/truenas/charts/tree/master/library/ix-dev/community/pigallery2 + - https://github.com/bpatrik/pigallery2 +keywords: + - media + - photo diff --git a/community/pigallery2/1.0.0/README.md b/community/pigallery2/1.0.0/README.md new file mode 100644 index 0000000000..5500845f1c --- /dev/null +++ b/community/pigallery2/1.0.0/README.md @@ -0,0 +1,8 @@ +# PiGallery2 + +[PiGallery2](https://bpatrik.github.io/pigallery2) is a fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `PiGallery2` directories. +> Afterward, the `PiGallery2` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/community/pigallery2/1.0.0/app-readme.md b/community/pigallery2/1.0.0/app-readme.md new file mode 100644 index 0000000000..5500845f1c --- /dev/null +++ b/community/pigallery2/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# PiGallery2 + +[PiGallery2](https://bpatrik.github.io/pigallery2) is a fast directory-first photo gallery website, with rich UI, optimized for running on low resource servers + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `PiGallery2` directories. +> Afterward, the `PiGallery2` container will run as a **non**-root user (Default: `568`). +> All mounted storage(s) will be `chown`ed only if the parent directory does not match the configured user. diff --git a/community/pigallery2/1.0.0/charts/common-1.1.1.tgz b/community/pigallery2/1.0.0/charts/common-1.1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..75add4209b8634104131faaa0026bc3f33bb8754 GIT binary patch literal 61731 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 T9n1d&00960fZl-W00IaAJOl}B literal 0 HcmV?d00001 diff --git a/community/pigallery2/1.0.0/ci/basic-values.yaml b/community/pigallery2/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..ff1cf503b2 --- /dev/null +++ b/community/pigallery2/1.0.0/ci/basic-values.yaml @@ -0,0 +1,16 @@ +pigalleryNetwork: + webPort: 31000 + +pigalleryRunAs: + user: 1000 + group: 1000 + +pigalleryStorage: + config: + type: pvc + db: + type: pvc + media: + type: pvc + thumbnails: + type: pvc diff --git a/community/pigallery2/1.0.0/ci/extra-values.yaml b/community/pigallery2/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..e939cf8f5b --- /dev/null +++ b/community/pigallery2/1.0.0/ci/extra-values.yaml @@ -0,0 +1,25 @@ +pigalleryConfig: + applicationTitle: PiGallery Test 2 + additionalEnvs: + - name: Server-Log-level + value: debug + - name: Server-Log-sqlLevel + value: all + +pigalleryNetwork: + webPort: 31000 + +pigalleryStorage: + config: + type: pvc + db: + type: pvc + media: + type: pvc + thumbnails: + type: pvc + additionalStorages: + - type: pvc + mountPath: /data1 + - type: pvc + mountPath: /data2 diff --git a/community/pigallery2/1.0.0/ci/hostNet-values.yaml b/community/pigallery2/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..2fd8b34248 --- /dev/null +++ b/community/pigallery2/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,13 @@ +pigalleryNetwork: + webPort: 30000 + hostNetwork: true + +pigalleryStorage: + config: + type: pvc + db: + type: pvc + media: + type: pvc + thumbnails: + type: pvc diff --git a/community/pigallery2/1.0.0/ix_values.yaml b/community/pigallery2/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..f300217a31 --- /dev/null +++ b/community/pigallery2/1.0.0/ix_values.yaml @@ -0,0 +1,42 @@ +image: + repository: bpatrik/pigallery2 + pullPolicy: IfNotPresent + tag: 2.0.0 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +pigalleryConfig: + applicationTitle: PiGallery 2 + additionalEnvs: [] + +pigalleryNetwork: + webPort: 30099 + hostNetwork: false + +pigalleryRunAs: + user: 568 + group: 568 + +pigalleryStorage: + config: + type: ixVolume + datasetName: config + db: + type: ixVolume + datasetName: db + media: + type: ixVolume + datasetName: media + thumbnails: + type: ixVolume + datasetName: thumbnails + additionalStorages: [] + +notes: + custom: | + Default credentials: + - Username: `admin` + - Password: `admin` diff --git a/community/pigallery2/1.0.0/metadata.yaml b/community/pigallery2/1.0.0/metadata.yaml new file mode 100644 index 0000000000..7d00dae43e --- /dev/null +++ b/community/pigallery2/1.0.0/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: pigallery + groupName: pigallery + gid: 568 + uid: 568 + description: PiGallery2 can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/community/pigallery2/1.0.0/questions.yaml b/community/pigallery2/1.0.0/questions.yaml new file mode 100644 index 0000000000..db7e4b1aa8 --- /dev/null +++ b/community/pigallery2/1.0.0/questions.yaml @@ -0,0 +1,354 @@ +groups: + - name: PiGallery2 Configuration + description: Configure PiGallery2 + - name: User and Group Configuration + description: Configure User and Group for PiGallery2 + - name: Network Configuration + description: Configure Network for PiGallery2 + - name: Storage Configuration + description: Configure Storage for PiGallery2 + - name: Resources Configuration + description: Configure Resources for PiGallery2 + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: pigalleryConfig + label: "" + group: PiGallery2 Configuration + schema: + type: dict + attrs: + - variable: applicationTitle + label: Application Title + description: The title of the PiGallery2 application. + schema: + type: string + default: "PiGallery 2" + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for PiGallery2. + schema: + type: list + default: [] + items: + - variable: env + 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: pigalleryRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that PiGallery2 will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that PiGallery2 will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: pigalleryNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the PiGallery2 Web UI. + schema: + type: int + default: 30099 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: pigalleryStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: PiGallery2 Config Storage + description: The path to store PiGallery2 Configuration. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "config" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: db + label: PiGallery2 Database Storage + description: The path to store PiGallery2 Database. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "db" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: media + label: PiGallery2 Media Storage + description: The path to store PiGallery2 Media. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "media" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: thumbnails + label: PiGallery2 Thumbnails Storage + description: The path to store PiGallery2 Thumbnails. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "thumbnails" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: additionalStorages + label: Additional Storage + description: Additional storage for PiGallery2. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for PiGallery2. + schema: + type: string + max_length: 6 + valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' + valid_chars_error: | + Valid CPU limit formats are
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for PiGallery2. + schema: + type: string + max_length: 12 + valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' + valid_chars_error: | + Valid Memory limit formats are
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true diff --git a/community/pigallery2/1.0.0/templates/NOTES.txt b/community/pigallery2/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/pigallery2/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/pigallery2/1.0.0/templates/_configuration.tpl b/community/pigallery2/1.0.0/templates/_configuration.tpl new file mode 100644 index 0000000000..d71c873338 --- /dev/null +++ b/community/pigallery2/1.0.0/templates/_configuration.tpl @@ -0,0 +1,18 @@ +{{- define "pigallery.configuration" -}} +configmap: + pigallery-config: + enabled: true + data: + # While its marked as temporary folder, it is not to be thrown away. + # It stores the thumbnails and other generated files. + Media-tempFolder: /app/data/thumbnails + Media-folder: /app/data/media + Database-sqlite-DBFileName: sqlite.db + Database-dbFolder: /app/data/db + Database-type: sqlite + Server-applicationTitle: {{ .Values.pigalleryConfig.applicationTitle | quote }} + Server-port: {{ .Values.pigalleryNetwork.webPort | quote }} + PORT: {{ .Values.pigalleryNetwork.webPort | quote }} + PI_DOCKER: "true" + NODE_ENV: production +{{- end -}} diff --git a/community/pigallery2/1.0.0/templates/_persistence.tpl b/community/pigallery2/1.0.0/templates/_persistence.tpl new file mode 100644 index 0000000000..2a0583d74e --- /dev/null +++ b/community/pigallery2/1.0.0/templates/_persistence.tpl @@ -0,0 +1,60 @@ +{{- define "pigallery.persistence" -}} +persistence: + config: + enabled: true + type: {{ .Values.pigalleryStorage.config.type }} + datasetName: {{ .Values.pigalleryStorage.config.datasetName | default "" }} + hostPath: {{ .Values.pigalleryStorage.config.hostPath | default "" }} + targetSelector: + pigallery: + pigallery: + mountPath: /app/data/config + 01-permissions: + mountPath: /mnt/directories/config + db: + enabled: true + type: {{ .Values.pigalleryStorage.db.type }} + datasetName: {{ .Values.pigalleryStorage.db.datasetName | default "" }} + hostPath: {{ .Values.pigalleryStorage.db.hostPath | default "" }} + targetSelector: + pigallery: + pigallery: + mountPath: /app/data/db + 01-permissions: + mountPath: /mnt/directories/db + media: + enabled: true + type: {{ .Values.pigalleryStorage.media.type }} + datasetName: {{ .Values.pigalleryStorage.media.datasetName | default "" }} + hostPath: {{ .Values.pigalleryStorage.media.hostPath | default "" }} + targetSelector: + pigallery: + pigallery: + mountPath: /app/data/media + 01-permissions: + mountPath: /mnt/directories/media + thumbnails: + enabled: true + type: {{ .Values.pigalleryStorage.thumbnails.type }} + datasetName: {{ .Values.pigalleryStorage.thumbnails.datasetName | default "" }} + hostPath: {{ .Values.pigalleryStorage.thumbnails.hostPath | default "" }} + targetSelector: + pigallery: + pigallery: + mountPath: /app/data/thumbnails + 01-permissions: + mountPath: /mnt/directories/thumbnails + {{- range $idx, $storage := .Values.pigalleryStorage.additionalStorages }} + {{ printf "pigallery-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + pigallery: + pigallery: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/community/pigallery2/1.0.0/templates/_pigallery2.tpl b/community/pigallery2/1.0.0/templates/_pigallery2.tpl new file mode 100644 index 0000000000..f9f2ceafed --- /dev/null +++ b/community/pigallery2/1.0.0/templates/_pigallery2.tpl @@ -0,0 +1,49 @@ +{{- define "pigallery.workload" -}} +workload: + pigallery: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.pigalleryNetwork.hostNetwork }} + containers: + pigallery: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.pigalleryRunAs.user }} + runAsGroup: {{ .Values.pigalleryRunAs.group }} + envFrom: + - configMapRef: + name: pigallery-config + {{ with .Values.pigalleryConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + port: {{ .Values.pigalleryNetwork.webPort }} + path: /heartbeat + readiness: + enabled: true + type: http + port: {{ .Values.pigalleryNetwork.webPort }} + path: /heartbeat + startup: + enabled: true + type: http + port: {{ .Values.pigalleryNetwork.webPort }} + path: /heartbeat + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.pigalleryRunAs.user + "GID" .Values.pigalleryRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} +{{- end -}} diff --git a/community/pigallery2/1.0.0/templates/_portal.tpl b/community/pigallery2/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..21f529b469 --- /dev/null +++ b/community/pigallery2/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "pigallery.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.pigalleryNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/pigallery2/1.0.0/templates/_service.tpl b/community/pigallery2/1.0.0/templates/_service.tpl new file mode 100644 index 0000000000..d9c2bf8e38 --- /dev/null +++ b/community/pigallery2/1.0.0/templates/_service.tpl @@ -0,0 +1,15 @@ +{{- define "pigallery.service" -}} +service: + pigallery: + enabled: true + primary: true + type: NodePort + targetSelector: pigallery + ports: + webui: + enabled: true + primary: true + port: {{ .Values.pigalleryNetwork.webPort }} + nodePort: {{ .Values.pigalleryNetwork.webPort }} + targetSelector: pigallery +{{- end -}} diff --git a/community/pigallery2/1.0.0/templates/common.yaml b/community/pigallery2/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..35dbaf9425 --- /dev/null +++ b/community/pigallery2/1.0.0/templates/common.yaml @@ -0,0 +1,12 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "pigallery.configuration" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "pigallery.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "pigallery.service" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "pigallery.persistence" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "pigallery.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/pigallery2/item.yaml b/community/pigallery2/item.yaml new file mode 100644 index 0000000000..db68f77bc8 --- /dev/null +++ b/community/pigallery2/item.yaml @@ -0,0 +1,16 @@ +icon_url: https://media.sys.truenas.net/apps/pigallery2/icons/icon.png +categories: + - media +screenshots: + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot1.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot2.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot3.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot4.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot5.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot6.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot7.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot8.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot9.png + - https://media.sys.truenas.net/apps/pigallery2/screenshots/screenshot10.png +tags: + - photo