From ac602eb9caae9b18dc33b3dd7e51be0c246921cc Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Mon, 2 Feb 2026 16:07:17 -0800 Subject: [PATCH] Add Navidrome widget to homepage - Create external secret for Navidrome Subsonic API credentials - Add environment variables for user, salt, and token - Enable widget annotations on navidrome ingress Co-Authored-By: Claude Opus 4.5 --- .../homepage/external-secret-navidrome.yaml | 28 +++++++++++++++++++ argocd/manifests/homepage/values.yaml | 16 +++++++++++ .../navidrome/ingress-tailscale.yaml | 12 ++++---- 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 argocd/manifests/homepage/external-secret-navidrome.yaml diff --git a/argocd/manifests/homepage/external-secret-navidrome.yaml b/argocd/manifests/homepage/external-secret-navidrome.yaml new file mode 100644 index 0000000..0bcd727 --- /dev/null +++ b/argocd/manifests/homepage/external-secret-navidrome.yaml @@ -0,0 +1,28 @@ +# ExternalSecret for Navidrome Subsonic API credentials +# Used by Homepage Navidrome widget +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: homepage-navidrome + namespace: homepage +spec: + refreshInterval: 1h + secretStoreRef: + kind: ClusterSecretStore + name: onepassword-blumeops + target: + name: homepage-navidrome + creationPolicy: Owner + data: + - secretKey: user + remoteRef: + key: dj (navidrome) + property: username + - secretKey: salt + remoteRef: + key: dj (navidrome) + property: salt + - secretKey: token + remoteRef: + key: dj (navidrome) + property: salted_pw diff --git a/argocd/manifests/homepage/values.yaml b/argocd/manifests/homepage/values.yaml index 489236a..6d858fe 100644 --- a/argocd/manifests/homepage/values.yaml +++ b/argocd/manifests/homepage/values.yaml @@ -62,6 +62,22 @@ env: secretKeyRef: name: homepage-forgejo key: apikey + # Navidrome widget + - name: HOMEPAGE_VAR_NAVIDROME_USER + valueFrom: + secretKeyRef: + name: homepage-navidrome + key: user + - name: HOMEPAGE_VAR_NAVIDROME_SALT + valueFrom: + secretKeyRef: + name: homepage-navidrome + key: salt + - name: HOMEPAGE_VAR_NAVIDROME_TOKEN + valueFrom: + secretKeyRef: + name: homepage-navidrome + key: token config: # Host services (non-k8s, on indri or LAN) diff --git a/argocd/manifests/navidrome/ingress-tailscale.yaml b/argocd/manifests/navidrome/ingress-tailscale.yaml index 8cdf90e..21ddfef 100644 --- a/argocd/manifests/navidrome/ingress-tailscale.yaml +++ b/argocd/manifests/navidrome/ingress-tailscale.yaml @@ -13,13 +13,11 @@ metadata: gethomepage.dev/description: "Music streaming server" gethomepage.dev/href: "https://dj.ops.eblu.me" gethomepage.dev/pod-selector: "app=navidrome" - # TODO: Add Navidrome widget - requires user, token (md5(password+salt)), salt - # See: https://gethomepage.dev/widgets/services/navidrome/ - # gethomepage.dev/widget.type: "navidrome" - # gethomepage.dev/widget.url: "https://dj.ops.eblu.me" - # gethomepage.dev/widget.user: "{{HOMEPAGE_VAR_NAVIDROME_USER}}" - # gethomepage.dev/widget.token: "{{HOMEPAGE_VAR_NAVIDROME_TOKEN}}" - # gethomepage.dev/widget.salt: "{{HOMEPAGE_VAR_NAVIDROME_SALT}}" + gethomepage.dev/widget.type: "navidrome" + gethomepage.dev/widget.url: "https://dj.ops.eblu.me" + gethomepage.dev/widget.user: "{{HOMEPAGE_VAR_NAVIDROME_USER}}" + gethomepage.dev/widget.token: "{{HOMEPAGE_VAR_NAVIDROME_TOKEN}}" + gethomepage.dev/widget.salt: "{{HOMEPAGE_VAR_NAVIDROME_SALT}}" spec: ingressClassName: tailscale defaultBackend: