From e42bf7a4b1ad876c8b8c425b1189744128b86443 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Tue, 2 May 2023 15:25:00 +0000 Subject: [PATCH] Update catalog information --- catalog.json | 27 ++ community/jellyfin/1.0.0/Chart.lock | 6 + community/jellyfin/1.0.0/Chart.yaml | 26 ++ community/jellyfin/1.0.0/README.md | 8 + community/jellyfin/1.0.0/app-readme.md | 8 + .../jellyfin/1.0.0/charts/common-1.0.6.tgz | Bin 0 -> 54958 bytes community/jellyfin/1.0.0/ci/basic-values.yaml | 22 ++ community/jellyfin/1.0.0/ci/extra-values.yaml | 22 ++ .../jellyfin/1.0.0/ci/hostNet-values.yaml | 13 + community/jellyfin/1.0.0/ix_values.yaml | 36 ++ community/jellyfin/1.0.0/metadata.yaml | 8 + community/jellyfin/1.0.0/questions.yaml | 337 ++++++++++++++++++ community/jellyfin/1.0.0/templates/NOTES.txt | 1 + .../jellyfin/1.0.0/templates/_jellyfin.tpl | 136 +++++++ .../jellyfin/1.0.0/templates/_portal.tpl | 12 + .../jellyfin/1.0.0/templates/common.yaml | 9 + community/jellyfin/item.yaml | 4 + 17 files changed, 675 insertions(+) create mode 100644 community/jellyfin/1.0.0/Chart.lock create mode 100644 community/jellyfin/1.0.0/Chart.yaml create mode 100644 community/jellyfin/1.0.0/README.md create mode 100644 community/jellyfin/1.0.0/app-readme.md create mode 100644 community/jellyfin/1.0.0/charts/common-1.0.6.tgz create mode 100644 community/jellyfin/1.0.0/ci/basic-values.yaml create mode 100644 community/jellyfin/1.0.0/ci/extra-values.yaml create mode 100644 community/jellyfin/1.0.0/ci/hostNet-values.yaml create mode 100644 community/jellyfin/1.0.0/ix_values.yaml create mode 100644 community/jellyfin/1.0.0/metadata.yaml create mode 100644 community/jellyfin/1.0.0/questions.yaml create mode 100644 community/jellyfin/1.0.0/templates/NOTES.txt create mode 100644 community/jellyfin/1.0.0/templates/_jellyfin.tpl create mode 100644 community/jellyfin/1.0.0/templates/_portal.tpl create mode 100644 community/jellyfin/1.0.0/templates/common.yaml create mode 100644 community/jellyfin/item.yaml diff --git a/catalog.json b/catalog.json index 5126f697c5..260d5a90d9 100644 --- a/catalog.json +++ b/catalog.json @@ -673,6 +673,33 @@ "tags": [], "icon_url": "https://avatars.githubusercontent.com/u/48932923" }, + "jellyfin": { + "app_readme": "

Jellyfin

\n

Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.

\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 Jellyfin directories.\nAfterward, the Jellyfin 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", + "streaming" + ], + "description": "Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.", + "healthy": true, + "healthy_error": null, + "location": "/__w/charts/charts/community/jellyfin", + "latest_version": "1.0.0", + "latest_app_version": "10.8.10", + "latest_human_version": "10.8.10_1.0.0", + "last_update": null, + "name": "jellyfin", + "recommended": false, + "title": "Jellyfin", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [], + "icon_url": "https://jellyfin.org/images/logo.svg" + }, "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": [ diff --git a/community/jellyfin/1.0.0/Chart.lock b/community/jellyfin/1.0.0/Chart.lock new file mode 100644 index 0000000000..126ed7af98 --- /dev/null +++ b/community/jellyfin/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.6 +digest: sha256:2f1f31c15fb7f92db141a66adbb8d23a8598727730050a3883a211763a4e5472 +generated: "2023-04-20T01:44:20.846268287+03:00" diff --git a/community/jellyfin/1.0.0/Chart.yaml b/community/jellyfin/1.0.0/Chart.yaml new file mode 100644 index 0000000000..2ca1311019 --- /dev/null +++ b/community/jellyfin/1.0.0/Chart.yaml @@ -0,0 +1,26 @@ +name: jellyfin +description: Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. +annotations: + title: Jellyfin +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '10.8.10' +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.6 +home: https://jellyfin.org/ +icon: https://jellyfin.org/images/logo.svg +sources: + - https://hub.docker.com/r/jellyfin/jellyfin + - https://github.com/truenas/charts/tree/master/community/jellyfin + - https://jellyfin.org/ +keywords: + - media + - streaming diff --git a/community/jellyfin/1.0.0/README.md b/community/jellyfin/1.0.0/README.md new file mode 100644 index 0000000000..e6cc2f8b26 --- /dev/null +++ b/community/jellyfin/1.0.0/README.md @@ -0,0 +1,8 @@ +# Jellyfin + +[Jellyfin](https://jellyfin.org/) is a Free Software Media System that puts you in control of managing and streaming your media. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Jellyfin` directories. +> Afterward, the `Jellyfin` 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/jellyfin/1.0.0/app-readme.md b/community/jellyfin/1.0.0/app-readme.md new file mode 100644 index 0000000000..e6cc2f8b26 --- /dev/null +++ b/community/jellyfin/1.0.0/app-readme.md @@ -0,0 +1,8 @@ +# Jellyfin + +[Jellyfin](https://jellyfin.org/) is a Free Software Media System that puts you in control of managing and streaming your media. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `Jellyfin` directories. +> Afterward, the `Jellyfin` 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/jellyfin/1.0.0/charts/common-1.0.6.tgz b/community/jellyfin/1.0.0/charts/common-1.0.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..701fac6117abc690a81078e5bf7078f26bf31ca6 GIT binary patch literal 54958 zcmV)@K!Lv>iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0POvFcic9zFb>b(`V@FM$}{R*snyzV^u(T{$d1Q1UUa-<-g|xh z_&_AO8zVMBlW55rTi^Y6uo4@WUeu1A<~fPgBv7crQm85vs$w#kkZkvS3=7)7g_HCz z%YO!g!QlAtkpDXv4BUSQ2Zu+0**iSk9}JF94hF}68SL#J9v}S$4DJCJ@0peq7JnHm z+?Gq+H}b$NBNS3hvhs8T0E%gfPQf{!72p}ZEMRd9`0Ut#IsP3LB_`P^xZdA@d0ze8 z+elCu7dWT<_ZdiK)tFTULs9_z{|7IJLmXq6f^$e=N=6$Kh%*XthKllZV+Uk#f=&S~ zrYM8u1_09{Jq2S*^YV0e_vYrNFF*BTGTGe_rNso^ptm_XRjqDZE5!EtgZ}Zx*Y4y$ z@FUm%HB6_dye9_Gvi?u@_YU3lf3m+`|0{X^3U+qDRzl)(_toRGN6#PkCrNK(l#)xB zGKP@COO%$U;Pc%E04B2#Zzec>zp)_F-$raq!cPH!LK0{j)c zdHLw&DR>TVFA*ro1ko|hMgXNH`nzr$PY{_3WB^FbZcjlJv5gImqZ=ESupB=PL0}&=jKlt6fB&EvQcg-bDo`1Orao$jdq@5KW_V$0OB7EF zOmELgM$sqA+KGwWPsJczynXuU6dWD@C;#>K`Pu8=PC+yn@a6z0rrBBff@H4^y zUcW6-QB~!yo)l!78}ATIUS{bntNklZQF&WZG%?`7G$l6|1-`~98llH!3{xoNgCR^y zQ6^WP6Z36};+RbGi-HVsiqwP?d;F_u#wL+uB>Ynhb9jkUOfk}n1t!TUc=ulZN(!Rq zEdV>)t~m$Q<>G-aFC=g*)oG_W??Ck z*zB0U@`@TlinZLT*HW1JD=5dXK%6K26{sbs7^4N#=p=7#KS9^! zcyezjBC=p&VhCd-dG553d-1#X_uU3#yX8_EI!6V?LmWf8B!It@bgGau*DMz# zFQ#ew8pQ>oWhGr!FTF}JCwc;NURwVO@D5g8iEtcJn7hbL$>c8bl~<#TJpVA9W-*sBc0c4y0xC-(aOCqDhg$4EM|*q6w*6;+aD2GGw*Rc+`TTkJNAL>K zX_1v&%*rsWv`9e5kb)upgi2t{1n}eT-Q5PSdJfZ62yJQ#oo;;o3~&~w(*%JCf9hZF z^~Egf!#wXBU?Q-U;FyBw?bAmQQ@ud+ME}Kh&j>^epQs1!?l!oI7iUHf+NFr+TKa2{HD`Qq!)+wwg``38=M819^Uz?yy z_GK%@r2#RD$0)vvdIk(U1R0@VYcehAKVT`*5)f25QE~`z3byhBXLJan3!~f5^$gqr z?^w?_We-WI4Xd6VT0TUCHB_DnluiNQiC#55YU|{{uS-h&B^kMBx4Z1$2xuT>t_s0X`;vSP+}#1b?>!v?{vMZrf7urQfE@DXSwHc8!|IaF zE!F4`Q`ue*?4XZ)E;2@ZcL&~s|MP$Bq9d>96IryTS54Ysfj~?O)~$W;TJ~wb-#5E; zh(B>TuY3^kSyX*PYECtQ$C+;6SNy3FJX?TKVD$JZW=gfy>nw*tx%fI3bmt&L&k;Ov6FKi9ikfI_`>(s1Pvowrx6MrNmLmMX7|Ju^*`kD1< z)&JyS)!fQotNypQKRDTQ^}oG?gSGy*ipSRf^w}iHNdj lHu469R^u%bRM_2IMyU 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

nE2=#c3J$Dn;7fZ$x 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 + It's required for autodiscovery to work. + schema: + type: boolean + default: false + + - variable: jellyfinStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Jellyfin Config Storage + description: The path to store Jellyfin 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: cache + label: Jellyfin Cache Storage + description: The path to store Jellyfin Cache. + 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: "cache" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: transcodes + label: Jellyfin Transcodes Storage + description: The path to store Jellyfin Transcodes. + 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.
+ emptyDir: Is a temporary directory that will be created on the disk or in memory. + 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) + - value: "emptyDir" + description: emptyDir (Temporary directory created on the disk or in memory) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "transcodes" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: medium + label: emptyDir Medium + description: | + Disk: Creates a temporary directory on the disk.
+ Memory: Creates a temporary directory in memory. + schema: + type: string + show_if: [["type", "=", "emptyDir"]] + default: "" + enum: + - value: "" + description: Disk (Temporary directory created on the disk) + - value: "Memory" + description: Memory (Temporary directory created in memory) + - variable: size + label: emptyDir Size Limit + description: | + The maximum size of the temporary directory.
+ For example: 2Gi + schema: + type: string + show_if: [["type", "=", "emptyDir"]] + default: "2Gi" + + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Jellyfin. + 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 Jellyfin. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Jellyfin. + schema: + type: string + default: "8Gi" + required: true + + - variable: jellyfinGPU + group: Resources Configuration + label: GPU Configuration + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] diff --git a/community/jellyfin/1.0.0/templates/NOTES.txt b/community/jellyfin/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/jellyfin/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/jellyfin/1.0.0/templates/_jellyfin.tpl b/community/jellyfin/1.0.0/templates/_jellyfin.tpl new file mode 100644 index 0000000000..b16526e79b --- /dev/null +++ b/community/jellyfin/1.0.0/templates/_jellyfin.tpl @@ -0,0 +1,136 @@ +{{- define "jellyfin.workload" -}} +workload: + jellyfin: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.jellyfinNetwork.hostNetwork }} + containers: + jellyfin: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: {{ .Values.jellyfinRunAs.user }} + runAsGroup: {{ .Values.jellyfinRunAs.group }} + env: + {{ with .Values.jellyfinConfig.publishedServerUrl }} + JELLYFIN_PublishedServerUrl: {{ . | quote }} + {{ end }} + {{ with .Values.jellyfinConfig.additionalEnvs }} + {{ range $env := . }} + {{ $env.name }}: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + port: 8096 + path: /health + readiness: + enabled: true + type: http + port: 8096 + path: /health + startup: + enabled: true + type: http + port: 8096 + path: /health + initContainers: + {{- include "ix.v1.common.app.permissions" (dict "containerName" "01-permissions" + "UID" .Values.jellyfinRunAs.user + "GID" .Values.jellyfinRunAs.group + "mode" "check" + "type" "init") | nindent 8 }} + +{{/* Service */}} +service: + jellyfin: + enabled: true + primary: true + type: NodePort + targetSelector: jellyfin + ports: + webui: + enabled: true + primary: true + port: {{ .Values.jellyfinNetwork.webPort }} + nodePort: {{ .Values.jellyfinNetwork.webPort }} + targetPort: 8096 + targetSelector: jellyfin + +{{/* Persistence */}} +persistence: + config: + enabled: true + type: {{ .Values.jellyfinStorage.config.type }} + datasetName: {{ .Values.jellyfinStorage.config.datasetName | default "" }} + hostPath: {{ .Values.jellyfinStorage.config.hostPath | default "" }} + targetSelector: + jellyfin: + jellyfin: + mountPath: /config + 01-permissions: + mountPath: /mnt/directories/config + cache: + enabled: true + type: {{ .Values.jellyfinStorage.cache.type }} + datasetName: {{ .Values.jellyfinStorage.cache.datasetName | default "" }} + hostPath: {{ .Values.jellyfinStorage.cache.hostPath | default "" }} + targetSelector: + jellyfin: + jellyfin: + mountPath: /cache + 01-permissions: + mountPath: /mnt/directories/cache + transcode: + enabled: true + type: {{ .Values.jellyfinStorage.transcodes.type }} + datasetName: {{ .Values.jellyfinStorage.transcodes.datasetName | default "" }} + hostPath: {{ .Values.jellyfinStorage.transcodes.hostPath | default "" }} + medium: {{ .Values.jellyfinStorage.transcodes.medium | default "" }} + {{/* Size of the emptyDir */}} + size: {{ .Values.jellyfinStorage.transcodes.size | default "" }} + targetSelector: + jellyfin: + jellyfin: + mountPath: /config/transcodes + {{ if ne .Values.jellyfinStorage.transcodes.type "emptyDir" }} + 01-permissions: + mountPath: /mnt/directories/transcodes + {{ end }} + tmp: + enabled: true + type: emptyDir + targetSelector: + jellyfin: + jellyfin: + mountPath: /tmp + {{- range $idx, $storage := .Values.jellyfinStorage.additionalStorages }} + {{ printf "jellyfin-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + jellyfin: + jellyfin: + mountPath: {{ $storage.mountPath }} + 01-permissions: + mountPath: /mnt/directories{{ $storage.mountPath }} + {{- end }} +{{ with .Values.jellyfinGPU }} + {{ if gt (. | len) 1 }} + {{- fail "Jellyfin - Max [1] GPUs allowed" -}} + {{ end }} +scaleGPU: + - gpu: + {{ . | keys | first }}: {{ . | values | first }} + targetSelector: + jellyfin: + - jellyfin +{{ end }} +{{- end -}} diff --git a/community/jellyfin/1.0.0/templates/_portal.tpl b/community/jellyfin/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..73e6083a7b --- /dev/null +++ b/community/jellyfin/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "jellyfin.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.jellyfinNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/jellyfin/1.0.0/templates/common.yaml b/community/jellyfin/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..ee3c3a7796 --- /dev/null +++ b/community/jellyfin/1.0.0/templates/common.yaml @@ -0,0 +1,9 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "jellyfin.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "jellyfin.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/jellyfin/item.yaml b/community/jellyfin/item.yaml new file mode 100644 index 0000000000..a5fbb69e6b --- /dev/null +++ b/community/jellyfin/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://jellyfin.org/images/logo.svg +categories: + - media + - streaming