--- # yaml-language-server: $schema=https://kubernetes-schemas.pages.dev/helm.toolkit.fluxcd.io/helmrelease_v2.json apiVersion: helm.toolkit.fluxcd.io/v2 kind: HelmRelease metadata: name: &app plex spec: interval: 30m chart: spec: chart: app-template version: 3.5.1 sourceRef: kind: HelmRepository name: bjw-s namespace: flux-system install: remediation: retries: 3 upgrade: cleanupOnFail: true remediation: strategy: rollback retries: 3 values: controllers: plex: annotations: reloader.stakater.com/auto: "true" containers: app: image: repository: ghcr.io/onedr0p/plex tag: rolling@sha256:1f28b5e5a964481f80e76db3c986082d2fc3bca2d16d2742704e9adf8349c79c env: TZ: "${TIMEZONE}" ALLOWED_NETWORKS: "${LAN_CIDR},${CLUSTER_CIDR},${SERVICE_CIDR}" PLEX_ADVERTISE_URL: "http://172.16.10.4:32400,https://plex.${SECRET_INTERNAL_DOMAIN}" PLEX_PREFERENCE_1: "AllowMediaDeletion=0" PLEX_PREFERENCE_2: "EnableIPv6=0" PLEX_PREFERENCE_3: "FriendlyName=LordFamilyFlix" PLEX_PREFERENCE_4: "LanNetworksBandwidth=${LAN_CIDR}" envFrom: - secretRef: name: *app probes: liveness: &probes enabled: true custom: true spec: httpGet: path: /identity port: &port 32400 initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 failureThreshold: 3 readiness: *probes resources: requests: cpu: 50m memory: 512Mi limits: memory: 4Gi securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: { drop: ["ALL"] } defaultPodOptions: securityContext: runAsNonRoot: true runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 fsGroupChangePolicy: OnRootMismatch seccompProfile: { type: RuntimeDefault } service: app: controller: *app type: LoadBalancer ports: http: port: *port ingress: app: className: internal # annotations: # external-dns.alpha.kubernetes.io/target: external.${SECRET_DOMAIN} # gethomepage.dev/enabled: "true" # gethomepage.dev/group: Media # gethomepage.dev/name: Plex # gethomepage.dev/icon: plex # gethomepage.dev/description: Media Player # gethomepage.dev/widget.type: plex # gethomepage.dev/widget.url: http://plex.media:32400 # gethomepage.dev/widget.key: "{{ `{{HOMEPAGE_VAR_PLEX_TOKEN}}` }}" # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" # nginx.ingress.kubernetes.io/configuration-snippet: ${THEME_PARK_SNIPPET} hosts: - host: "{{ .Release.Name }}.${SECRET_INTERNAL_DOMAIN}" paths: - path: / service: identifier: app port: http persistence: config: enabled: true type: nfs server: 192.168.1.68 path: /mnt/user/k3s/config/plex cache: storageClass: openebs-hostpath accessMode: ReadWriteOnce size: 10Gi globalMounts: - path: "/config/Library/Application Support/Plex Media Server/Cache" tmp: type: emptyDir transcode: type: emptyDir movies: enabled: true type: nfs server: 192.168.1.68 path: /mnt/user/movies globalMounts: - path: /media/movies music: enabled: true type: nfs server: 192.168.1.68 path: /mnt/user/music globalMounts: - path: /media/music pictures: enabled: true type: nfs server: 192.168.1.68 path: /mnt/user/photos/original globalMounts: - path: /media/photos tv: enabled: true type: nfs server: 192.168.1.68 path: /mnt/user/shows globalMounts: - path: /media/tv