From 062cd7effba010df53ebb7347cc799dc570028fc Mon Sep 17 00:00:00 2001 From: sonicaj Date: Tue, 11 Jul 2023 14:03:44 +0000 Subject: [PATCH] Publish new changes in catalog --- community/homarr/1.0.0/Chart.lock | 6 + community/homarr/1.0.0/Chart.yaml | 25 ++ community/homarr/1.0.0/README.md | 8 + community/homarr/1.0.0/app-readme.md | 8 + .../homarr/1.0.0/charts/common-1.0.10.tgz | Bin 0 -> 56381 bytes community/homarr/1.0.0/ci/basic-values.yaml | 14 + community/homarr/1.0.0/ci/extra-values.yaml | 23 ++ community/homarr/1.0.0/ci/hostNet-values.yaml | 11 + community/homarr/1.0.0/ix_values.yaml | 30 ++ community/homarr/1.0.0/metadata.yaml | 8 + community/homarr/1.0.0/questions.yaml | 288 ++++++++++++++++++ community/homarr/1.0.0/templates/NOTES.txt | 1 + community/homarr/1.0.0/templates/_homarr.tpl | 51 ++++ .../homarr/1.0.0/templates/_persistence.tpl | 45 +++ community/homarr/1.0.0/templates/_portal.tpl | 12 + community/homarr/1.0.0/templates/_service.tpl | 15 + community/homarr/1.0.0/templates/common.yaml | 11 + community/homarr/item.yaml | 9 + 18 files changed, 565 insertions(+) create mode 100644 community/homarr/1.0.0/Chart.lock create mode 100644 community/homarr/1.0.0/Chart.yaml create mode 100644 community/homarr/1.0.0/README.md create mode 100644 community/homarr/1.0.0/app-readme.md create mode 100644 community/homarr/1.0.0/charts/common-1.0.10.tgz create mode 100644 community/homarr/1.0.0/ci/basic-values.yaml create mode 100644 community/homarr/1.0.0/ci/extra-values.yaml create mode 100644 community/homarr/1.0.0/ci/hostNet-values.yaml create mode 100644 community/homarr/1.0.0/ix_values.yaml create mode 100644 community/homarr/1.0.0/metadata.yaml create mode 100644 community/homarr/1.0.0/questions.yaml create mode 100644 community/homarr/1.0.0/templates/NOTES.txt create mode 100644 community/homarr/1.0.0/templates/_homarr.tpl create mode 100644 community/homarr/1.0.0/templates/_persistence.tpl create mode 100644 community/homarr/1.0.0/templates/_portal.tpl create mode 100644 community/homarr/1.0.0/templates/_service.tpl create mode 100644 community/homarr/1.0.0/templates/common.yaml create mode 100644 community/homarr/item.yaml diff --git a/community/homarr/1.0.0/Chart.lock b/community/homarr/1.0.0/Chart.lock new file mode 100644 index 0000000000..e39396c531 --- /dev/null +++ b/community/homarr/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.10 +digest: sha256:06709bd6d9a8dbb721eec437a52f8c24aeecefbbc57e6f8617e53b29570d5512 +generated: "2023-07-07T16:19:50.063524071+03:00" diff --git a/community/homarr/1.0.0/Chart.yaml b/community/homarr/1.0.0/Chart.yaml new file mode 100644 index 0000000000..a0dd6efc66 --- /dev/null +++ b/community/homarr/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: homarr +description: Homarr is a sleek, modern dashboard that puts all of your apps and services at your fingertips. +annotations: + title: Homarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '0.12.3' +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.0.10 +home: https://homarr.dev/ +icon: https://homarr.dev/img/logo.svg +sources: + - https://homarr.dev/ + - https://github.com/truenas/charts/tree/master/community/homarr + - https://github.com/ajnart/homarr +keywords: + - dashboard diff --git a/community/homarr/1.0.0/README.md b/community/homarr/1.0.0/README.md new file mode 100644 index 0000000000..c7d12681db --- /dev/null +++ b/community/homarr/1.0.0/README.md @@ -0,0 +1,8 @@ +# Homarr + +[Homarr](https://github.com/ajnart/homarr) is a sleek, modern dashboard that puts all of your apps and services at your fingertips. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Homarr` directories. +> Afterward, the `Homarr` 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/homarr/1.0.0/app-readme.md b/community/homarr/1.0.0/app-readme.md new file mode 100644 index 0000000000..c7d12681db --- /dev/null +++ b/community/homarr/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# Homarr + +[Homarr](https://github.com/ajnart/homarr) is a sleek, modern dashboard that puts all of your apps and services at your fingertips. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Homarr` directories. +> Afterward, the `Homarr` 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/homarr/1.0.0/charts/common-1.0.10.tgz b/community/homarr/1.0.0/charts/common-1.0.10.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2487b8153c8ffb67c630b31b86f6ec353113767b GIT binary patch literal 56381 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 LBNN4-07?e{QfmYT literal 0 HcmV?d00001 diff --git a/community/homarr/1.0.0/ci/basic-values.yaml b/community/homarr/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..4a600280d8 --- /dev/null +++ b/community/homarr/1.0.0/ci/basic-values.yaml @@ -0,0 +1,14 @@ +homarrNetwork: + webPort: 31000 + +homarrRunAs: + user: 1000 + group: 1000 + +homarrStorage: + configs: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/configs + icons: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/icons diff --git a/community/homarr/1.0.0/ci/extra-values.yaml b/community/homarr/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..e2d978dd86 --- /dev/null +++ b/community/homarr/1.0.0/ci/extra-values.yaml @@ -0,0 +1,23 @@ +homarrConfig: + password: secret + additionalEnvs: + - name: DISABLE_EDIT_MODE + value: true + +homarrNetwork: + webPort: 31000 + +homarrStorage: + configs: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/configs + icons: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/icons + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/data1 + mountPath: /data1 + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/data2 + mountPath: /data2 diff --git a/community/homarr/1.0.0/ci/hostNet-values.yaml b/community/homarr/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..7aba0604f9 --- /dev/null +++ b/community/homarr/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,11 @@ +homarrNetwork: + webPort: 30000 + hostNetwork: true + +homarrStorage: + configs: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/configs + icons: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/icons diff --git a/community/homarr/1.0.0/ix_values.yaml b/community/homarr/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..63f58324b1 --- /dev/null +++ b/community/homarr/1.0.0/ix_values.yaml @@ -0,0 +1,30 @@ +image: + repository: ghcr.io/ajnart/homarr + pullPolicy: IfNotPresent + tag: '0.12.3' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +homarrConfig: + password: '' + additionalEnvs: [] + +homarrNetwork: + webPort: 30052 + hostNetwork: false + +homarrRunAs: + user: 568 + group: 568 + +homarrStorage: + configs: + type: ixVolume + datasetName: configs + icons: + type: ixVolume + datasetName: icons + additionalStorages: [] diff --git a/community/homarr/1.0.0/metadata.yaml b/community/homarr/1.0.0/metadata.yaml new file mode 100644 index 0000000000..e5a8806b57 --- /dev/null +++ b/community/homarr/1.0.0/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: homarr + groupName: homarr + gid: 568 + uid: 568 + description: Homarr can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/community/homarr/1.0.0/questions.yaml b/community/homarr/1.0.0/questions.yaml new file mode 100644 index 0000000000..73b7074de4 --- /dev/null +++ b/community/homarr/1.0.0/questions.yaml @@ -0,0 +1,288 @@ +groups: + - name: Homarr Configuration + description: Configure Homarr + - name: User and Group Configuration + description: Configure User and Group for Homarr + - name: Network Configuration + description: Configure Network for Homarr + - name: Storage Configuration + description: Configure Storage for Homarr + - name: Resources Configuration + description: Configure Resources for Homarr + +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: TZ + group: Homarr Configuration + label: Timezone + schema: + type: string + default: Etc/UTC + required: true + $ref: + - definitions/timezone + + - variable: homarrConfig + label: "" + group: Homarr Configuration + schema: + type: dict + attrs: + - variable: password + label: Password (Optional) + description: Password for Homarr. + schema: + type: string + default: "" + private: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Homarr. + 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: homarrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Homarr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Homarr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: homarrNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Homarr Web UI. + schema: + type: int + default: 30052 + 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: homarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: configs + label: Homarr Config Storage + description: The path to store Homarr 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: "configs" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: icons + label: Homarr Icon Storage + description: The path to store Homarr Icons. + 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: "icons" + $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 Homarr. + 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 Homarr. + 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 Homarr. + 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/homarr/1.0.0/templates/NOTES.txt b/community/homarr/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/homarr/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/homarr/1.0.0/templates/_homarr.tpl b/community/homarr/1.0.0/templates/_homarr.tpl new file mode 100644 index 0000000000..fe9d3b7b8b --- /dev/null +++ b/community/homarr/1.0.0/templates/_homarr.tpl @@ -0,0 +1,51 @@ +{{- define "homarr.workload" -}} +workload: + homarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.homarrNetwork.hostNetwork }} + containers: + homarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.homarrRunAs.user }} + runAsGroup: {{ .Values.homarrRunAs.group }} + env: + PORT: {{ .Values.homarrNetwork.webPort }} + {{ with .Values.homarrConfig.password }} + PASSWORD: {{ . }} + {{ end }} + {{ with .Values.homarrConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + port: "{{ .Values.homarrNetwork.webPort }}" + path: /api/configs + readiness: + enabled: true + type: http + port: "{{ .Values.homarrNetwork.webPort }}" + path: /api/configs + startup: + enabled: true + type: http + port: "{{ .Values.homarrNetwork.webPort }}" + path: /api/configs + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.homarrRunAs.user + "GID" .Values.homarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} +{{- end -}} diff --git a/community/homarr/1.0.0/templates/_persistence.tpl b/community/homarr/1.0.0/templates/_persistence.tpl new file mode 100644 index 0000000000..f072f45b23 --- /dev/null +++ b/community/homarr/1.0.0/templates/_persistence.tpl @@ -0,0 +1,45 @@ +{{- define "homarr.persistence" -}} +persistence: + configs: + enabled: true + type: {{ .Values.homarrStorage.configs.type }} + datasetName: {{ .Values.homarrStorage.configs.datasetName | default "" }} + hostPath: {{ .Values.homarrStorage.configs.hostPath | default "" }} + targetSelector: + homarr: + homarr: + mountPath: /app/data/configs + 01-permissions: + mountPath: /mnt/directories/configs + icons: + enabled: true + type: {{ .Values.homarrStorage.icons.type }} + datasetName: {{ .Values.homarrStorage.icons.datasetName | default "" }} + hostPath: {{ .Values.homarrStorage.icons.hostPath | default "" }} + targetSelector: + homarr: + homarr: + mountPath: /app/data/icons + 01-permissions: + mountPath: /mnt/directories/icons + tmp: + enabled: true + type: emptyDir + targetSelector: + homarr: + homarr: + mountPath: /tmp + {{- range $idx, $storage := .Values.homarrStorage.additionalStorages }} + {{ printf "homarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + homarr: + homarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/community/homarr/1.0.0/templates/_portal.tpl b/community/homarr/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..a412338c77 --- /dev/null +++ b/community/homarr/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "homarr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.homarrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/homarr/1.0.0/templates/_service.tpl b/community/homarr/1.0.0/templates/_service.tpl new file mode 100644 index 0000000000..d35269e62e --- /dev/null +++ b/community/homarr/1.0.0/templates/_service.tpl @@ -0,0 +1,15 @@ +{{- define "homarr.service" -}} +service: + homarr: + enabled: true + primary: true + type: NodePort + targetSelector: homarr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.homarrNetwork.webPort }} + nodePort: {{ .Values.homarrNetwork.webPort }} + targetSelector: homarr +{{- end -}} diff --git a/community/homarr/1.0.0/templates/common.yaml b/community/homarr/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..db1e93103b --- /dev/null +++ b/community/homarr/1.0.0/templates/common.yaml @@ -0,0 +1,11 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "homarr.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "homarr.persistence" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "homarr.service" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "homarr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/homarr/item.yaml b/community/homarr/item.yaml new file mode 100644 index 0000000000..1965dd0c9c --- /dev/null +++ b/community/homarr/item.yaml @@ -0,0 +1,9 @@ +icon_url: https://homarr.dev/img/logo.svg +categories: + - productivity +screenshots: + - https://homarr.dev/assets/images/add-app-modal-151ae6d1969d242acde705b33d160c0b.webp + - https://homarr.dev/assets/images/widgets-select-type-28beaddc83c6aef18f715b034b4f38b6.webp + - https://homarr.dev/assets/images/app-integration-d80d859a281f8bef01dbf1e2d7f95b45.webp +tags: + - dashboard