From 0c2bef0be67becbf5cb7f00cfb9a173d3b634473 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Tue, 27 Jun 2023 21:45:50 +0300 Subject: [PATCH] NAS-122593 / 23.10 / add `jellyseerr` to `community` train (#1285) * add jellyseerr * change default port --- .../ix-dev/community/jellyseerr/Chart.lock | 6 + .../ix-dev/community/jellyseerr/Chart.yaml | 25 +++ library/ix-dev/community/jellyseerr/README.md | 8 + .../ix-dev/community/jellyseerr/app-readme.md | 8 + .../jellyseerr/charts/common-1.0.8.tgz | Bin 0 -> 55446 bytes .../community/jellyseerr/ci/basic-values.yaml | 11 ++ .../jellyseerr/ci/hostNet-values.yaml | 8 + library/ix-dev/community/jellyseerr/item.yaml | 10 + .../ix-dev/community/jellyseerr/metadata.yaml | 8 + .../community/jellyseerr/questions.yaml | 178 ++++++++++++++++++ .../community/jellyseerr/templates/NOTES.txt | 1 + .../jellyseerr/templates/_overseerr.tpl | 84 +++++++++ .../jellyseerr/templates/_portal.tpl | 12 ++ .../jellyseerr/templates/common.yaml | 9 + .../community/jellyseerr/upgrade_info.json | 1 + .../community/jellyseerr/upgrade_strategy | 31 +++ .../ix-dev/community/jellyseerr/values.yaml | 25 +++ 17 files changed, 425 insertions(+) create mode 100644 library/ix-dev/community/jellyseerr/Chart.lock create mode 100644 library/ix-dev/community/jellyseerr/Chart.yaml create mode 100644 library/ix-dev/community/jellyseerr/README.md create mode 100644 library/ix-dev/community/jellyseerr/app-readme.md create mode 100644 library/ix-dev/community/jellyseerr/charts/common-1.0.8.tgz create mode 100644 library/ix-dev/community/jellyseerr/ci/basic-values.yaml create mode 100644 library/ix-dev/community/jellyseerr/ci/hostNet-values.yaml create mode 100644 library/ix-dev/community/jellyseerr/item.yaml create mode 100644 library/ix-dev/community/jellyseerr/metadata.yaml create mode 100644 library/ix-dev/community/jellyseerr/questions.yaml create mode 100644 library/ix-dev/community/jellyseerr/templates/NOTES.txt create mode 100644 library/ix-dev/community/jellyseerr/templates/_overseerr.tpl create mode 100644 library/ix-dev/community/jellyseerr/templates/_portal.tpl create mode 100644 library/ix-dev/community/jellyseerr/templates/common.yaml create mode 100644 library/ix-dev/community/jellyseerr/upgrade_info.json create mode 100755 library/ix-dev/community/jellyseerr/upgrade_strategy create mode 100644 library/ix-dev/community/jellyseerr/values.yaml diff --git a/library/ix-dev/community/jellyseerr/Chart.lock b/library/ix-dev/community/jellyseerr/Chart.lock new file mode 100644 index 0000000000..44d8198f07 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.8 +digest: sha256:254efaa1285f634b7a80b7baadeadbd20a680f7fee49d1d9d3c4618aa0d657ad +generated: "2023-06-22T16:50:21.570951209+03:00" diff --git a/library/ix-dev/community/jellyseerr/Chart.yaml b/library/ix-dev/community/jellyseerr/Chart.yaml new file mode 100644 index 0000000000..3200cdd06e --- /dev/null +++ b/library/ix-dev/community/jellyseerr/Chart.yaml @@ -0,0 +1,25 @@ +name: jellyseerr +description: Jellyseerr is a free and open source software application for managing requests for your media library. +annotations: + title: Jellyseerr +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 1.5.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.0.8 +home: https://github.com/Fallenbagel/jellyseerr +icon: https://github.com/Fallenbagel/jellyseerr/raw/develop/public/logo_full.svg +sources: + - https://github.com/Fallenbagel/jellyseerr + - https://github.com/truenas/charts/tree/master/community/jellyseerr + - https://hub.docker.com/r/fallenbagel/jellyseerr +keywords: + - media diff --git a/library/ix-dev/community/jellyseerr/README.md b/library/ix-dev/community/jellyseerr/README.md new file mode 100644 index 0000000000..68e1f980c7 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/README.md @@ -0,0 +1,8 @@ +# Jellyseerr + +[Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is a free and open source software application for managing requests for your media library. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Jellyseerr` directories. +> Afterward, the `Jellyseerr` 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/library/ix-dev/community/jellyseerr/app-readme.md b/library/ix-dev/community/jellyseerr/app-readme.md new file mode 100644 index 0000000000..68e1f980c7 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/app-readme.md @@ -0,0 +1,8 @@ +# Jellyseerr + +[Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is a free and open source software application for managing requests for your media library. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Jellyseerr` directories. +> Afterward, the `Jellyseerr` 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/library/ix-dev/community/jellyseerr/charts/common-1.0.8.tgz b/library/ix-dev/community/jellyseerr/charts/common-1.0.8.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ad7c8d5e89c6d598626e35567df068861bc42407 GIT binary patch literal 55446 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 z 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

}Nr;Z_Y-If^1b-@+#Ua;P^kZgT|*4 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 bZ#CSPec6|NaV&oZ00960zI_qj03HVb1f}d! literal 0 HcmV?d00001 diff --git a/library/ix-dev/community/jellyseerr/ci/basic-values.yaml b/library/ix-dev/community/jellyseerr/ci/basic-values.yaml new file mode 100644 index 0000000000..b36db557e1 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/ci/basic-values.yaml @@ -0,0 +1,11 @@ +jellyseerrNetwork: + webPort: 31000 + +jellyseerrRunAs: + user: 1000 + group: 1000 + +jellyseerrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/library/ix-dev/community/jellyseerr/ci/hostNet-values.yaml b/library/ix-dev/community/jellyseerr/ci/hostNet-values.yaml new file mode 100644 index 0000000000..beddfd4de4 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/ci/hostNet-values.yaml @@ -0,0 +1,8 @@ +jellyseerrNetwork: + webPort: 30000 + hostNetwork: true + +jellyseerrStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Namespace }}/config diff --git a/library/ix-dev/community/jellyseerr/item.yaml b/library/ix-dev/community/jellyseerr/item.yaml new file mode 100644 index 0000000000..d243bdb8ae --- /dev/null +++ b/library/ix-dev/community/jellyseerr/item.yaml @@ -0,0 +1,10 @@ +icon_url: https://github.com/Fallenbagel/jellyseerr/raw/develop/public/logo_full.svg +categories: + - media +screenshots: + - https://github.com/Fallenbagel/jellyseerr/raw/develop/public/preview.jpg +tags: + - tv + - movies + - requests + - series diff --git a/library/ix-dev/community/jellyseerr/metadata.yaml b/library/ix-dev/community/jellyseerr/metadata.yaml new file mode 100644 index 0000000000..84c7cfaf69 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/metadata.yaml @@ -0,0 +1,8 @@ +runAsContext: + - userName: jellyseerr + groupName: jellyseerr + gid: 568 + uid: 568 + description: Jellyseerr can run as any non-root user. +capabilities: [] +hostMounts: [] diff --git a/library/ix-dev/community/jellyseerr/questions.yaml b/library/ix-dev/community/jellyseerr/questions.yaml new file mode 100644 index 0000000000..7fbc6fd3ed --- /dev/null +++ b/library/ix-dev/community/jellyseerr/questions.yaml @@ -0,0 +1,178 @@ +groups: + - name: Jellyseerr Configuration + description: Configure Jellyseerr + - name: User and Group Configuration + description: Configure User and Group for Jellyseerr + - name: Network Configuration + description: Configure Network for Jellyseerr + - name: Storage Configuration + description: Configure Storage for Jellyseerr + - name: Resources Configuration + description: Configure Resources for Jellyseerr + +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: Jellyseerr Configuration + label: Timezone + schema: + type: string + default: Etc/UTC + required: true + $ref: + - definitions/timezone + + - variable: jellyseerrConfig + label: "" + group: Jellyseerr Configuration + schema: + type: dict + attrs: + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Jellyseerr. + 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: jellyseerrRunAs + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Jellyseerr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Jellyseerr will run as. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: jellyseerrNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Jellyseerr Web UI. + schema: + type: int + default: 30042 + 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: jellyseerrStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Jellyseerr Config Storage + description: The path to store Jellyseerr 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: 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 Jellyseerr. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Jellyseerr. + schema: + type: string + default: "8Gi" + required: true diff --git a/library/ix-dev/community/jellyseerr/templates/NOTES.txt b/library/ix-dev/community/jellyseerr/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/library/ix-dev/community/jellyseerr/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/library/ix-dev/community/jellyseerr/templates/_overseerr.tpl b/library/ix-dev/community/jellyseerr/templates/_overseerr.tpl new file mode 100644 index 0000000000..1c42753db7 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/templates/_overseerr.tpl @@ -0,0 +1,84 @@ +{{- define "jellyseerr.workload" -}} +workload: + jellyseerr: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.jellyseerrNetwork.hostNetwork }} + containers: + jellyseerr: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.jellyseerrRunAs.user }} + runAsGroup: {{ .Values.jellyseerrRunAs.group }} + env: + PORT: {{ .Values.jellyseerrNetwork.webPort }} + {{ with .Values.jellyseerrConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + port: {{ .Values.jellyseerrNetwork.webPort }} + path: /api/v1/status + readiness: + enabled: true + type: http + port: {{ .Values.jellyseerrNetwork.webPort }} + path: /api/v1/status + startup: + enabled: true + type: http + port: {{ .Values.jellyseerrNetwork.webPort }} + path: /api/v1/status + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.jellyseerrRunAs.user + "GID" .Values.jellyseerrRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + jellyseerr: + enabled: true + primary: true + type: NodePort + targetSelector: jellyseerr + ports: + webui: + enabled: true + primary: true + port: {{ .Values.jellyseerrNetwork.webPort }} + nodePort: {{ .Values.jellyseerrNetwork.webPort }} + targetSelector: jellyseerr + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.jellyseerrStorage.config.type }} + datasetName: {{ .Values.jellyseerrStorage.config.datasetName | default "" }} + hostPath: {{ .Values.jellyseerrStorage.config.hostPath | default "" }} + targetSelector: + jellyseerr: + jellyseerr: + mountPath: /app/config + 01-permissions: + mountPath: /mnt/directories/config + tmp: + enabled: true + type: emptyDir + targetSelector: + jellyseerr: + jellyseerr: + mountPath: /tmp +{{- end -}} diff --git a/library/ix-dev/community/jellyseerr/templates/_portal.tpl b/library/ix-dev/community/jellyseerr/templates/_portal.tpl new file mode 100644 index 0000000000..c98797db8b --- /dev/null +++ b/library/ix-dev/community/jellyseerr/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "jellyseerr.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.jellyseerrNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/library/ix-dev/community/jellyseerr/templates/common.yaml b/library/ix-dev/community/jellyseerr/templates/common.yaml new file mode 100644 index 0000000000..d135b481c7 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "jellyseerr.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "jellyseerr.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/library/ix-dev/community/jellyseerr/upgrade_info.json b/library/ix-dev/community/jellyseerr/upgrade_info.json new file mode 100644 index 0000000000..767388094a --- /dev/null +++ b/library/ix-dev/community/jellyseerr/upgrade_info.json @@ -0,0 +1 @@ +{"filename": "values.yaml", "keys": ["image"]} diff --git a/library/ix-dev/community/jellyseerr/upgrade_strategy b/library/ix-dev/community/jellyseerr/upgrade_strategy new file mode 100755 index 0000000000..41e9448b21 --- /dev/null +++ b/library/ix-dev/community/jellyseerr/upgrade_strategy @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import re +import sys + +from catalog_update.upgrade_strategy import semantic_versioning + + +RE_STABLE_VERSION = re.compile(r'[0-9]+\.[0-9]+\.[0-9]+') + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + if not version: + return {} + + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValueError('Invalid json specified') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/library/ix-dev/community/jellyseerr/values.yaml b/library/ix-dev/community/jellyseerr/values.yaml new file mode 100644 index 0000000000..398ec94c3d --- /dev/null +++ b/library/ix-dev/community/jellyseerr/values.yaml @@ -0,0 +1,25 @@ +image: + repository: fallenbagel/jellyseerr + pullPolicy: IfNotPresent + tag: 1.5.0 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +jellyseerrConfig: + additionalEnvs: [] + +jellyseerrNetwork: + webPort: 30042 + hostNetwork: false + +jellyseerrRunAs: + user: 568 + group: 568 + +jellyseerrStorage: + config: + type: ixVolume + datasetName: config