From 1518cc406e5dff07f632448104e053c360c1fb84 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Mon, 20 May 2024 12:27:08 +0300 Subject: [PATCH] navidrome: allow passing in soundcard device (#2488) --- library/ix-dev/community/navidrome/Chart.yaml | 2 +- library/ix-dev/community/navidrome/questions.yaml | 11 +++++++++++ .../community/navidrome/templates/_navidrome.tpl | 9 +++++++++ .../community/navidrome/templates/_persistence.tpl | 10 ++++++++++ library/ix-dev/community/navidrome/values.yaml | 3 ++- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/library/ix-dev/community/navidrome/Chart.yaml b/library/ix-dev/community/navidrome/Chart.yaml index f8a85b8440..8e453e7426 100644 --- a/library/ix-dev/community/navidrome/Chart.yaml +++ b/library/ix-dev/community/navidrome/Chart.yaml @@ -3,7 +3,7 @@ description: Navidrome is a personal streaming service annotations: title: Navidrome type: application -version: 1.2.9 +version: 1.2.10 apiVersion: v2 appVersion: 0.52.5 kubeVersion: '>=1.16.0-0' diff --git a/library/ix-dev/community/navidrome/questions.yaml b/library/ix-dev/community/navidrome/questions.yaml index ea7291d7a3..9558c0479d 100644 --- a/library/ix-dev/community/navidrome/questions.yaml +++ b/library/ix-dev/community/navidrome/questions.yaml @@ -33,6 +33,17 @@ questions: schema: type: string default: "" + - variable: localPlayback + label: Enable Local Playback + description: | + Enable local playback for Navidrome.
+ This will allow you to play music from your local machine, by mounting
+ the sound card to the container.
+ Keep in mind that this will make the container to run with elevated privileges
+ and privilege escalation. Use with caution. + schema: + type: boolean + default: false - variable: additionalEnvs label: Additional Environment Variables description: Configure additional environment variables for Navidrome. diff --git a/library/ix-dev/community/navidrome/templates/_navidrome.tpl b/library/ix-dev/community/navidrome/templates/_navidrome.tpl index cf549cfded..26f7a6bd86 100644 --- a/library/ix-dev/community/navidrome/templates/_navidrome.tpl +++ b/library/ix-dev/community/navidrome/templates/_navidrome.tpl @@ -6,6 +6,11 @@ workload: type: Deployment podSpec: hostNetwork: {{ .Values.navidromeNetwork.hostNetwork }} + securityContext: + {{- if .Values.navidromeConfig.localPlayback }} + supplementalGroups: + - 29 + {{- end }} containers: navidrome: enabled: true @@ -15,6 +20,10 @@ workload: runAsUser: {{ .Values.navidromeRunAs.user }} runAsGroup: {{ .Values.navidromeRunAs.group }} readOnlyRootFilesystem: false + {{- if .Values.navidromeConfig.localPlayback }} + privileged: true + allowPrivilegeEscalation: true + {{- end }} env: ND_MUSICFOLDER: /music ND_DATAFOLDER: /data diff --git a/library/ix-dev/community/navidrome/templates/_persistence.tpl b/library/ix-dev/community/navidrome/templates/_persistence.tpl index 23b792e01f..9d7ed0f5ed 100644 --- a/library/ix-dev/community/navidrome/templates/_persistence.tpl +++ b/library/ix-dev/community/navidrome/templates/_persistence.tpl @@ -24,6 +24,16 @@ persistence: 01-permissions: mountPath: /mnt/directories/music {{- end }} + {{- if .Values.navidromeConfig.localPlayback }} + snd-device: + enabled: true + type: hostPath + hostPath: /dev/snd + targetSelector: + navidrome: + navidrome: + mountPath: /dev/snd + {{- end }} {{- range $idx, $storage := .Values.navidromeStorage.additionalStorages }} {{ printf "navidrome-%v:" (int $idx) }} enabled: true diff --git a/library/ix-dev/community/navidrome/values.yaml b/library/ix-dev/community/navidrome/values.yaml index 9dc60d355e..8a180f9135 100644 --- a/library/ix-dev/community/navidrome/values.yaml +++ b/library/ix-dev/community/navidrome/values.yaml @@ -9,7 +9,8 @@ resources: memory: 8Gi navidromeConfig: - uiWelcomeMessage: '' + uiWelcomeMessage: "" + localPlayback: false additionalEnvs: [] navidromeNetwork: