diff --git a/catalog.json b/catalog.json index dc92000487..671046b8bf 100644 --- a/catalog.json +++ b/catalog.json @@ -73,6 +73,25 @@ "title": "Emby Server", "icon_url": "https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png" }, + "sonarr": { + "app_readme": "

Sonarr

\n

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Sonarr directories.\nAfterward, the Sonarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "media", + "series" + ], + "description": "Sonarr is a PVR for Usenet and BitTorrent users.", + "healthy": true, + "healthy_error": null, + "location": "/__w/charts/charts/charts/sonarr", + "latest_version": "1.0.0", + "latest_app_version": "3.0.10.1567", + "latest_human_version": "3.0.10.1567_1.0.0", + "last_update": null, + "name": "sonarr", + "recommended": false, + "title": "Sonarr", + "icon_url": "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" + }, "diskoverdata": { "app_readme": "

DiskOver App for TrueNAS SCALE

", "categories": [ @@ -281,7 +300,7 @@ "latest_version": "1.0.3", "latest_app_version": "4.5.2", "latest_human_version": "4.5.2_1.0.3", - "last_update": "2023-04-04 14:36:31", + "last_update": "2023-04-07 17:25:51", "name": "qbittorrent", "recommended": false, "title": "qBittorrent", @@ -300,7 +319,7 @@ "latest_version": "1.0.3", "latest_app_version": "1.7.1", "latest_human_version": "1.7.1_1.0.3", - "last_update": "2023-03-30 13:03:27", + "last_update": "2023-04-07 17:25:51", "name": "chia", "recommended": false, "title": "Chia", @@ -320,7 +339,7 @@ "latest_version": "1.0.3", "latest_app_version": "v0.19.1", "latest_human_version": "v0.19.1_1.0.3", - "last_update": "2023-04-06 12:43:34", + "last_update": "2023-04-07 17:25:51", "name": "ipfs", "recommended": false, "title": "IPFS", @@ -339,7 +358,7 @@ "latest_version": "1.0.2", "latest_app_version": "1.28.1", "latest_human_version": "1.28.1_1.0.2", - "last_update": "2023-04-06 12:43:34", + "last_update": "2023-04-07 17:25:51", "name": "vaultwarden", "recommended": false, "title": "Vaultwarden", diff --git a/charts/sonarr/1.0.0/Chart.lock b/charts/sonarr/1.0.0/Chart.lock new file mode 100644 index 0000000000..7c09f46050 --- /dev/null +++ b/charts/sonarr/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.3 +digest: sha256:1a090020cfa582aff29906320874ffe9b543fcc6c2423c281f434514f2653e02 +generated: "2023-04-06T11:54:15.069382144Z" diff --git a/charts/sonarr/1.0.0/Chart.yaml b/charts/sonarr/1.0.0/Chart.yaml new file mode 100644 index 0000000000..af414a6482 --- /dev/null +++ b/charts/sonarr/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: sonarr +description: Sonarr is a PVR for Usenet and BitTorrent users. +annotations: + title: Sonarr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '3.0.10.1567' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: + - name: common + repository: file://../../../common + version: 1.0.3 +home: https://github.com/Sonarr/Sonarr +icon: https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png +sources: + - https://github.com/onedr0p/containers/tree/main/apps/sonarr + - https://github.com/truenas/charts/tree/master/charts/sonarr + - https://github.com/Sonarr/Sonarr +keywords: + - media + - series diff --git a/charts/sonarr/1.0.0/README.md b/charts/sonarr/1.0.0/README.md new file mode 100644 index 0000000000..f345ff022a --- /dev/null +++ b/charts/sonarr/1.0.0/README.md @@ -0,0 +1,8 @@ +# Sonarr + +[Sonarr](https://github.com/Sonarr/Sonarr) is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Sonarr` directories. +> Afterward, the `Sonarr` 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/charts/sonarr/1.0.0/app-readme.md b/charts/sonarr/1.0.0/app-readme.md new file mode 100644 index 0000000000..f345ff022a --- /dev/null +++ b/charts/sonarr/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# Sonarr + +[Sonarr](https://github.com/Sonarr/Sonarr) is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Sonarr` directories. +> Afterward, the `Sonarr` 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/charts/sonarr/1.0.0/charts/common-1.0.3.tgz b/charts/sonarr/1.0.0/charts/common-1.0.3.tgz new file mode 100644 index 0000000000..c8d520cf2d Binary files /dev/null and b/charts/sonarr/1.0.0/charts/common-1.0.3.tgz differ diff --git a/charts/sonarr/1.0.0/ci/basic-values.yaml b/charts/sonarr/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..886fe58f92 --- /dev/null +++ b/charts/sonarr/1.0.0/ci/basic-values.yaml @@ -0,0 +1,11 @@ +sonarrNetwork: + webPort: 31000 + +sonarrRunAs: + user: 1000 + group: 1000 + +sonarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/charts/sonarr/1.0.0/ci/extra-values.yaml b/charts/sonarr/1.0.0/ci/extra-values.yaml new file mode 100644 index 0000000000..7ee946f472 --- /dev/null +++ b/charts/sonarr/1.0.0/ci/extra-values.yaml @@ -0,0 +1,21 @@ +sonarrConfig: + additionalEnvs: + - name: SONARR__AUTHENTICATION_METHOD + value: some-long-api-key + - name: SONARR__LOG_LEVEL + value: error + +sonarrNetwork: + webPort: 31000 + +sonarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config + additionalStorages: + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/action_series + mountPath: /action_series + - type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/adventure_series + mountPath: /adventure_series diff --git a/charts/sonarr/1.0.0/ci/hostNet-values.yaml b/charts/sonarr/1.0.0/ci/hostNet-values.yaml new file mode 100644 index 0000000000..a23e799a30 --- /dev/null +++ b/charts/sonarr/1.0.0/ci/hostNet-values.yaml @@ -0,0 +1,8 @@ +sonarrNetwork: + webPort: 30000 + hostNetwork: true + +sonarrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/charts/sonarr/1.0.0/ix_values.yaml b/charts/sonarr/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..504eb02bd8 --- /dev/null +++ b/charts/sonarr/1.0.0/ix_values.yaml @@ -0,0 +1,25 @@ +image: + repository: ghcr.io/onedr0p/sonarr + pullPolicy: IfNotPresent + tag: '3.0.10.1567' + +resources: + limits: + cpu: 4000m + memory: 8Gi + +sonarrConfig: + instanceName: Sonarr + additionalEnvs: [] +sonarrNetwork: + webPort: 30000 + hostNetwork: false +sonarrRunAs: + user: 568 + group: 568 +sonarrStorage: + config: + type: ixVolume + hostPath: '' + datasetName: config + additionalStorages: [] diff --git a/charts/sonarr/1.0.0/questions.yaml b/charts/sonarr/1.0.0/questions.yaml new file mode 100644 index 0000000000..534047fef6 --- /dev/null +++ b/charts/sonarr/1.0.0/questions.yaml @@ -0,0 +1,225 @@ +groups: + - name: Sonarr Configuration + description: Configure Sonarr + - name: User and Group Configuration + description: Configure User and Group for Sonarr + - name: Network Configuration + description: Configure Network for Sonarr + - name: Storage Configuration + description: Configure Storage for Sonarr + - name: Resources Configuration + description: Configure Resources for Sonarr + +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: sonarrConfig + label: "" + group: Sonarr Configuration + schema: + type: dict + attrs: + - variable: instanceName + label: Instance Name + description: The name of the Sonarr instance. + schema: + type: string + default: Sonarr + required: true + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Sonarr. + 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: sonarrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Sonarr will run as. + schema: + type: int + min: 1 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Sonarr will run as. + schema: + type: int + min: 1 + default: 568 + required: true + + - variable: sonarrNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Sonarr Web UI. + schema: + type: int + default: 30000 + 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: sonarrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Sonarr Config Storage + description: The path to store Sonarr 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: additionalStorages + label: Additional Storage + description: Additional storage for Sonarr. + 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 Sonarr. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for Sonarr. + schema: + type: string + default: 8Gi + required: true diff --git a/charts/sonarr/1.0.0/templates/NOTES.txt b/charts/sonarr/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/charts/sonarr/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/charts/sonarr/1.0.0/templates/_portal.tpl b/charts/sonarr/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..88e40c57bc --- /dev/null +++ b/charts/sonarr/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "sonarr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.sonarrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/charts/sonarr/1.0.0/templates/_sonarr.tpl b/charts/sonarr/1.0.0/templates/_sonarr.tpl new file mode 100644 index 0000000000..467001308a --- /dev/null +++ b/charts/sonarr/1.0.0/templates/_sonarr.tpl @@ -0,0 +1,90 @@ +{{- define "sonarr.workload" -}} +workload: + sonarr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.sonarrNetwork.hostNetwork }} + containers: + sonarr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.sonarrRunAs.user }} + runAsGroup: {{ .Values.sonarrRunAs.group }} + {{ with .Values.sonarrConfig.additionalEnvs }} + env: + {{ range $env := . }} + {{ $env.name }}: {{ $env.value }} + {{ end }} + {{ end }} + env: + SONARR__PORT: {{ .Values.sonarrNetwork.webPort }} + SONARR__INSTANCE_NAME: {{ .Values.sonarrConfig.instanceName }} + probes: + liveness: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + readiness: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + startup: + enabled: true + type: http + port: "{{ .Values.sonarrNetwork.webPort }}" + path: /ping + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.sonarrRunAs.user + "GID" .Values.sonarrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + sonarr: + enabled: true + primary: true + type: NodePort + targetSelector: sonarr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.sonarrNetwork.webPort }} + nodePort: {{ .Values.sonarrNetwork.webPort }} + targetSelector: sonarr + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.sonarrStorage.config.type }} + datasetName: {{ .Values.sonarrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.sonarrStorage.config.hostPath | default "" }} + targetSelector: + sonarr: + sonarr: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + {{- range $idx, $storage := .Values.sonarrStorage.additionalStorages }} + {{ printf "sonarr-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + sonarr: + sonarr: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{- end -}} diff --git a/charts/sonarr/1.0.0/templates/common.yaml b/charts/sonarr/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..23242cb8d3 --- /dev/null +++ b/charts/sonarr/1.0.0/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "sonarr.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "sonarr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/charts/sonarr/item.yaml b/charts/sonarr/item.yaml new file mode 100644 index 0000000000..c6f44ed8cd --- /dev/null +++ b/charts/sonarr/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png +categories: + - media + - series