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 <noreply@anthropic.com>
This commit is contained in:
Erich Blume 2026-02-02 16:07:17 -08:00
commit ac602eb9ca
3 changed files with 49 additions and 7 deletions

View file

@ -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

View file

@ -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)

View file

@ -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: