From 13138af5e41e84e2ab5b7e19acc2fb795f115ebe Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 18 Oct 2023 09:27:32 +0000 Subject: [PATCH] Publish new changes in catalog --- community/transmission/1.0.0/Chart.lock | 6 + community/transmission/1.0.0/Chart.yaml | 27 ++ community/transmission/1.0.0/README.md | 9 + community/transmission/1.0.0/app-readme.md | 9 + .../1.0.0/charts/common-1.1.1.tgz | Bin 0 -> 61732 bytes .../transmission/1.0.0/ci/basic-values.yaml | 15 + .../transmission/1.0.0/ci/extra-values.yaml | 29 ++ .../transmission/1.0.0/ci/hostNet-values.yaml | 12 + community/transmission/1.0.0/ix_values.yaml | 38 +++ community/transmission/1.0.0/metadata.yaml | 8 + community/transmission/1.0.0/questions.yaml | 318 ++++++++++++++++++ .../transmission/1.0.0/templates/NOTES.txt | 1 + .../1.0.0/templates/_configuration.tpl | 13 + .../1.0.0/templates/_persistence.tpl | 49 +++ .../transmission/1.0.0/templates/_portal.tpl | 12 + .../transmission/1.0.0/templates/_service.tpl | 32 ++ .../1.0.0/templates/_transmission.tpl | 47 +++ .../transmission/1.0.0/templates/common.yaml | 12 + community/transmission/item.yaml | 7 + 19 files changed, 644 insertions(+) create mode 100644 community/transmission/1.0.0/Chart.lock create mode 100644 community/transmission/1.0.0/Chart.yaml create mode 100644 community/transmission/1.0.0/README.md create mode 100644 community/transmission/1.0.0/app-readme.md create mode 100644 community/transmission/1.0.0/charts/common-1.1.1.tgz create mode 100644 community/transmission/1.0.0/ci/basic-values.yaml create mode 100644 community/transmission/1.0.0/ci/extra-values.yaml create mode 100644 community/transmission/1.0.0/ci/hostNet-values.yaml create mode 100644 community/transmission/1.0.0/ix_values.yaml create mode 100644 community/transmission/1.0.0/metadata.yaml create mode 100644 community/transmission/1.0.0/questions.yaml create mode 100644 community/transmission/1.0.0/templates/NOTES.txt create mode 100644 community/transmission/1.0.0/templates/_configuration.tpl create mode 100644 community/transmission/1.0.0/templates/_persistence.tpl create mode 100644 community/transmission/1.0.0/templates/_portal.tpl create mode 100644 community/transmission/1.0.0/templates/_service.tpl create mode 100644 community/transmission/1.0.0/templates/_transmission.tpl create mode 100644 community/transmission/1.0.0/templates/common.yaml create mode 100644 community/transmission/item.yaml diff --git a/community/transmission/1.0.0/Chart.lock b/community/transmission/1.0.0/Chart.lock new file mode 100644 index 0000000000..403ea38467 --- /dev/null +++ b/community/transmission/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-16T17:29:21.813857406+03:00" diff --git a/community/transmission/1.0.0/Chart.yaml b/community/transmission/1.0.0/Chart.yaml new file mode 100644 index 0000000000..171cfc8371 --- /dev/null +++ b/community/transmission/1.0.0/Chart.yaml @@ -0,0 +1,27 @@ +name: transmission +description: Transmission is designed for easy, powerful use. +annotations: + title: Transmission +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 4.0.4 +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://transmissionbt.com/ +icon: https://media.sys.truenas.net/apps/transmission/icons/icon.png +sources: + - https://github.com/onedr0p/containers/tree/main/apps/transmission + - https://github.com/truenas/charts/tree/master/community/transmission + - https://transmissionbt.com/ +keywords: + - media + - torrent + - download diff --git a/community/transmission/1.0.0/README.md b/community/transmission/1.0.0/README.md new file mode 100644 index 0000000000..bd24652324 --- /dev/null +++ b/community/transmission/1.0.0/README.md @@ -0,0 +1,9 @@ +# Transmission + +[Transmission](https://transmissionbt.com/) is designed for easy, powerful use. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the Transmission directories. +> Afterward, the `Transmission` container will run as a **non**-root user (Default: `568`). + +For additional configuration via environment variables, see [Container's source env var list](https://github.com/onedr0p/containers/tree/main/apps/transmission). diff --git a/community/transmission/1.0.0/app-readme.md b/community/transmission/1.0.0/app-readme.md new file mode 100644 index 0000000000..bd24652324 --- /dev/null +++ b/community/transmission/1.0.0/app-readme.md @@ -0,0 +1,9 @@ +# Transmission + +[Transmission](https://transmissionbt.com/) is designed for easy, powerful use. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the Transmission directories. +> Afterward, the `Transmission` container will run as a **non**-root user (Default: `568`). + +For additional configuration via environment variables, see [Container's source env var list](https://github.com/onedr0p/containers/tree/main/apps/transmission). diff --git a/community/transmission/1.0.0/charts/common-1.1.1.tgz b/community/transmission/1.0.0/charts/common-1.1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..40f6fac48385463b42589453df16f27a7ed4170c GIT binary patch literal 61732 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 bpfw!IP=+#;j^%#>00960nKa-O00IaA0wy}M literal 0 HcmV?d00001 diff --git a/community/transmission/1.0.0/ci/basic-values.yaml b/community/transmission/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..9803c056c5 --- /dev/null +++ b/community/transmission/1.0.0/ci/basic-values.yaml @@ -0,0 +1,15 @@ +transmissionNetwork: + webPort: 31000 + peerPort: 31001 + +transmissionRunAs: + user: 1000 + group: 1000 + +transmissionStorage: + config: + type: pvc + downloadsComplete: + type: pvc + downloadsIncomplete: + type: pvc diff --git a/community/transmission/1.0.0/ci/extra-values.yaml b/community/transmission/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..6640d7fdad --- /dev/null +++ b/community/transmission/1.0.0/ci/extra-values.yaml @@ -0,0 +1,29 @@ +sonarrConfig: + additionalEnvs: + - name: TRANSMISSION__SPEED_LIMIT_DOWN + value: 200 + - name: TRANSMISSION__SPEED_LIMIT_UP + value: 100 + - name: TRANSMISSION__RPC_PASSWORD + value: "password" + - name: TRANSMISSION__RPC_USERNAME + value: "username" + - name: TRANSMISSION__RPC_AUTHENTICATION_REQUIRED + value: "true" + +transmissionNetwork: + webPort: 31000 + peerPort: 31001 + +transmissionStorage: + config: + type: pvc + downloadsComplete: + type: pvc + downloadsIncomplete: + type: pvc + additionalStorages: + - type: pvc + mountPath: /data1 + - type: pvc + mountPath: /data2 diff --git a/community/transmission/1.0.0/ci/hostNet-values.yaml b/community/transmission/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..d84333132f --- /dev/null +++ b/community/transmission/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,12 @@ +transmissionNetwork: + webPort: 31000 + peerPort: 31001 + hostNetwork: true + +transmissionStorage: + config: + type: pvc + downloadsComplete: + type: pvc + downloadsIncomplete: + type: pvc diff --git a/community/transmission/1.0.0/ix_values.yaml b/community/transmission/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..51d729ae8a --- /dev/null +++ b/community/transmission/1.0.0/ix_values.yaml @@ -0,0 +1,38 @@ +image: + repository: ghcr.io/onedr0p/transmission + pullPolicy: IfNotPresent + tag: 4.0.4 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +transmissionConfig: + additionalEnvs: [] + +transmissionNetwork: + webPort: 30096 + peerPort: 50413 + hostNetwork: false + +transmissionRunAs: + user: 568 + group: 568 + +transmissionStorage: + config: + type: ixVolume + datasetName: config + downloadsComplete: + type: ixVolume + datasetName: downloads-complete + downloadsIncomplete: + type: ixVolume + datasetName: downloads-incomplete + additionalStorages: [] + +notes: + custom: | + Settings can be configured via Environment Variables. + See https://github.com/onedr0p/containers/tree/main/apps/transmission for available options. diff --git a/community/transmission/1.0.0/metadata.yaml b/community/transmission/1.0.0/metadata.yaml new file mode 100644 index 0000000000..a63091a1bc --- /dev/null +++ b/community/transmission/1.0.0/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: transmission + groupName: transmission + gid: 568 + uid: 568 + description: Transmission can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/community/transmission/1.0.0/questions.yaml b/community/transmission/1.0.0/questions.yaml new file mode 100644 index 0000000000..7e6fcaadb9 --- /dev/null +++ b/community/transmission/1.0.0/questions.yaml @@ -0,0 +1,318 @@ +groups: + - name: Transmission Configuration + description: Configure Transmission + - name: User and Group Configuration + description: Configure User and Group for Transmission + - name: Network Configuration + description: Configure Network for Transmission + - name: Storage Configuration + description: Configure Storage for Transmission + - name: Resources Configuration + description: Configure Resources for Transmission + +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: transmissionConfig + label: "" + group: Transmission Configuration + schema: + type: dict + attrs: + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Transmission. + 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: transmissionRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Transmission will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Transmission will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: transmissionNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Transmission Web UI. + schema: + type: int + default: 30096 + min: 9000 + max: 65535 + required: true + - variable: peerPort + label: Peer Port + description: The port for the Transmission Torrent protocol. Both TCP and UDP + schema: + type: int + default: 50413 + 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: transmissionStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Transmission Config Storage + description: The path to store Transmission 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: downloadsComplete + label: Transmission Complete Downloads Storage + description: The path to store Transmission Complete Downloads. + 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: "downloads-complete" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: downloadsIncomplete + label: Transmission Incomplete Downloads Storage + description: The path to store Transmission Incomplete Downloads. + 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: "downloads-incomplete" + $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: Transmission additional storage + 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 + label: Resources Configuration + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Transmission. + 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 Transmission. + 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/transmission/1.0.0/templates/NOTES.txt b/community/transmission/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/transmission/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/transmission/1.0.0/templates/_configuration.tpl b/community/transmission/1.0.0/templates/_configuration.tpl new file mode 100644 index 0000000000..3e608dc4d2 --- /dev/null +++ b/community/transmission/1.0.0/templates/_configuration.tpl @@ -0,0 +1,13 @@ +{{- define "transmission.configuration" -}} +configmap: + transmission-config: + enabled: true + data: + TRANSMISSION__RPC_ENABLED: "true" + TRANSMISSION__RPC_BIND_ADDRESS: "0.0.0.0" + TRANSMISSION__RPC_PORT: {{ .Values.transmissionNetwork.webPort | quote }} + TRANSMISSION__PEER_PORT: {{ .Values.transmissionNetwork.peerPort | quote }} + TRANSMISSION__DOWNLOAD_DIR: "/downloads/complete" + TRANSMISSION__INCOMPLETE_DIR_ENABLED: "true" + TRANSMISSION__INCOMPLETE_DIR: "/downloads/incomplete" +{{- end -}} diff --git a/community/transmission/1.0.0/templates/_persistence.tpl b/community/transmission/1.0.0/templates/_persistence.tpl new file mode 100644 index 0000000000..0dcb88c98f --- /dev/null +++ b/community/transmission/1.0.0/templates/_persistence.tpl @@ -0,0 +1,49 @@ +{{- define "transmission.persistence" -}} +persistence: + config: + enabled: true + type: {{ .Values.transmissionStorage.config.type }} + datasetName: {{ .Values.transmissionStorage.config.datasetName | default "" }} + hostPath: {{ .Values.transmissionStorage.config.hostPath | default "" }} + targetSelector: + transmission: + transmission: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + download-complete: + enabled: true + type: {{ .Values.transmissionStorage.downloadsComplete.type }} + datasetName: {{ .Values.transmissionStorage.downloadsComplete.datasetName | default "" }} + hostPath: {{ .Values.transmissionStorage.downloadsComplete.hostPath | default "" }} + targetSelector: + transmission: + transmission: + mountPath: /downloads/complete + 01-permissions: + mountPath: /mnt/directories/complete + download-incomplete: + enabled: true + type: {{ .Values.transmissionStorage.downloadsIncomplete.type }} + datasetName: {{ .Values.transmissionStorage.downloadsIncomplete.datasetName | default "" }} + hostPath: {{ .Values.transmissionStorage.downloadsIncomplete.hostPath | default "" }} + targetSelector: + transmission: + transmission: + mountPath: /downloads/incomplete + 01-permissions: + mountPath: /mnt/directories/incomplete + {{- range $idx, $storage := .Values.transmissionStorage.additionalStorages }} + {{ printf "transmission-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + transmission: + transmission: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/community/transmission/1.0.0/templates/_portal.tpl b/community/transmission/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..29d7477190 --- /dev/null +++ b/community/transmission/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "transmission.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/transmission/web" + port: {{ .Values.transmissionNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/transmission/1.0.0/templates/_service.tpl b/community/transmission/1.0.0/templates/_service.tpl new file mode 100644 index 0000000000..3c8440ffe4 --- /dev/null +++ b/community/transmission/1.0.0/templates/_service.tpl @@ -0,0 +1,32 @@ +{{- define "transmission.service" -}} +service: + transmission: + enabled: true + primary: true + type: NodePort + targetSelector: transmission + ports: + webui: + enabled: true + primary: true + port: {{ .Values.transmissionNetwork.webPort }} + nodePort: {{ .Values.transmissionNetwork.webPort }} + targetSelector: transmission + transmission-peer: + enabled: true + type: NodePort + targetSelector: transmission + ports: + tcp: + enabled: true + primary: true + port: {{ .Values.transmissionNetwork.peerPort }} + nodePort: {{ .Values.transmissionNetwork.peerPort }} + targetSelector: transmission + udp: + enabled: true + port: {{ .Values.transmissionNetwork.peerPort }} + nodePort: {{ .Values.transmissionNetwork.peerPort }} + protocol: udp + targetSelector: transmission +{{- end -}} diff --git a/community/transmission/1.0.0/templates/_transmission.tpl b/community/transmission/1.0.0/templates/_transmission.tpl new file mode 100644 index 0000000000..63244c5380 --- /dev/null +++ b/community/transmission/1.0.0/templates/_transmission.tpl @@ -0,0 +1,47 @@ +{{- define "transmission.workload" -}} +workload: + transmission: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.transmissionNetwork.hostNetwork }} + containers: + transmission: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.transmissionRunAs.user }} + runAsGroup: {{ .Values.transmissionRunAs.group }} + {{ with .Values.transmissionConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + envFrom: + - configMapRef: + name: transmission-config + probes: + liveness: + enabled: true + type: tcp + port: {{ .Values.transmissionNetwork.webPort }} + readiness: + enabled: true + type: tcp + port: {{ .Values.transmissionNetwork.webPort }} + startup: + enabled: true + type: tcp + port: {{ .Values.transmissionNetwork.webPort }} + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.transmissionRunAs.user + "GID" .Values.transmissionRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{- end -}} diff --git a/community/transmission/1.0.0/templates/common.yaml b/community/transmission/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..177a4472a0 --- /dev/null +++ b/community/transmission/1.0.0/templates/common.yaml @@ -0,0 +1,12 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "transmission.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "transmission.configuration" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "transmission.service" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "transmission.persistence" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "transmission.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/transmission/item.yaml b/community/transmission/item.yaml new file mode 100644 index 0000000000..346878b356 --- /dev/null +++ b/community/transmission/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://media.sys.truenas.net/apps/transmission/icons/icon.png +categories: + - media +screenshots: [] +tags: + - torrent + - download