image: repository: tccr.io/truecharts/jellyfin pullPolicy: IfNotPresent tag: v10.8.11@sha256:586eebeb787d89028b7891e189bc4bbf82141d67235252781ba72088708734f9 broadcastProxyImage: repository: tccr.io/truecharts/socat pullPolicy: IfNotPresent tag: v1.7.4.4@sha256:786781861b8febde838c1ccf96cdac1826ad970bc0631a3b8437ce2384e06002 service: main: ports: main: port: 8096 targetPort: 8096 autodiscovery: enabled: true ports: autodiscovery: enabled: true protocol: udp port: 7359 targetPort: 7359 persistence: config: enabled: true mountPath: "/config" cache: enabled: true mountPath: "/cache" type: "emptyDir" transcode: enabled: true mountPath: "/config/transcodes" type: "emptyDir" portal: open: enabled: true securityContext: container: readOnlyRootFilesystem: false workload: main: podSpec: containers: main: env: JELLYFIN_PublishedServerUrl: "{{ $.Values.chartContext.APPURL }}" broadcastproxy: enabled: false type: DaemonSet podSpec: hostNetwork: true # Proxy doesn't seem to respect the TERM signal, so by default # this ends up just hanging until the default grace period ends. # This is unnecesary since this workload only proxies autodiscovery # messages. terminationGracePeriodSeconds: 3 containers: broadcastproxy: enabled: true primary: true imageSelector: broadcastProxyImage securityContext: readOnlyRootFilesystem: true command: ["/bin/sh"] # Quite a lot going on here: # - Resolve Jellyfin's autodiscovery service IP from its FQDN via getent hosts # - Export the IP to `$TARGET_IP` # - Check `$TARGET_IP` is not empty (so we can crash if it is - will help to detect templating errors) # - Touch `/tmp/healty` to use with the readiness, liveness and startup probes # - Start socat in proxy mode # - On exit remove `/tmp/healthy` args: [ "-c", 'export TARGET_IP=$(getent hosts ''{{ printf "%v-autodiscovery" (include "tc.v1.common.lib.chart.names.fullname" $) }}'' | awk ''{ print $1 }'') && [[ ! -z $TARGET_IP ]] && touch /tmp/healthy && socat UDP-LISTEN:7359,fork,reuseaddr,rcvbuf=8096 UDP4-SENDTO:${TARGET_IP}:7359,rcvbuf=8096 ; rm -rf /tmp/healthy', ] probes: readiness: enabled: true type: exec command: - cat - /tmp/healthy liveness: enabled: true type: exec command: - cat - /tmp/healthy startup: enabled: true type: exec command: - cat - /tmp/healthy # -- enable Jellyfin autodiscovery on LAN autodiscovery: enabled: false