--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: jellyfin-config-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: longhorn --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: jellyfin-data-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 700Gi storageClassName: longhorn --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: transmission-config-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: longhorn --- apiVersion: apps/v1 kind: Deployment metadata: name: jellyfin spec: replicas: 1 selector: matchLabels: app: jellyfin template: metadata: labels: app: jellyfin spec: containers: - name: jellyfin image: jellyfin/jellyfin:10.11.6 ports: - containerPort: 8096 name: http env: - name: PGUID value: "1000" - name: PUID value: "1000" - name: JELLYFIN_PublishedServerUrl value: jellyfin.{{ .Values.homey.url }} imagePullPolicy: "Always" volumeMounts: - name: jellyfin-volume-config mountPath: "/config" subPath: jellyfin/config - name: jellyfin-volume-data mountPath: "/data/movies" subPath: downloads/movies - name: jellyfin-volume-data mountPath: "/data/tvshows" subPath: downloads/tvshows volumes: - name: jellyfin-volume-config persistentVolumeClaim: claimName: jellyfin-config-pvc - name: jellyfin-volume-data persistentVolumeClaim: claimName: jellyfin-data-pvc --- apiVersion: v1 kind: Service metadata: name: jellyfin-web spec: selector: app: jellyfin ports: - port: 80 targetPort: 8096 name: jellyfin-web --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: jellyfin-ingress spec: ingressClassName: {{ .Values.homey.ingress_class }} tls: - hosts: - jellyfin.{{ .Values.homey.url }} secretName: {{ .Values.homey.certname }} rules: - host: jellyfin.{{ .Values.homey.url }} http: paths: - path: / pathType: Prefix backend: service: name: jellyfin-web port: number: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: transmission labels: app: transmission spec: replicas: 1 selector: matchLabels: app: transmission template: metadata: labels: app: transmission name: transmission spec: containers: - name: transmission image: linuxserver/transmission imagePullPolicy: Always volumeMounts: - name: transmission-volume-config mountPath: "/config" subPath: transmission/config - name: transmission-volume-data mountPath: "/downloads/movies" subPath: downloads/movies - name: transmission-volume-data mountPath: "/downloads/tvshows" subPath: downloads/tvshows - name: transmission-volume-data mountPath: "/downloads/general" subPath: downloads/general - name: transmission-volume-data mountPath: "/downloads/complete" subPath: downloads/complete volumes: - name: transmission-volume-config persistentVolumeClaim: claimName: transmission-config-pvc - name: transmission-volume-data persistentVolumeClaim: claimName: jellyfin-data-pvc --- apiVersion: v1 kind: Service metadata: name: transmission-web spec: selector: app: transmission ports: - port: 80 targetPort: 9091 name: transmission-web --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: torrent annotations: kubernetes.io/ingress.allow-http: "false" nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/auth-method: GET nginx.ingress.kubernetes.io/auth-url: http://authelia.{{ .Release.Namespace }}.svc.cluster.local:9091/api/verify nginx.ingress.kubernetes.io/auth-signin: https://auth.{{ .Values.homey.url }}?rm=$request_method nginx.ingress.kubernetes.io/auth-response-headers: Remote-User,Remote-Name,Remote-Groups,Remote-Email nginx.ingress.kubernetes.io/auth-snippet: | proxy_set_header X-Forwarded-Method $request_method; auth_request_set $user $upstream_http_remote_user; auth_request_set $groups $upstream_http_remote_groups; auth_request_set $name $upstream_http_remote_name; auth_request_set $email $upstream_http_remote_email; proxy_set_header X-Webauth-User $user; proxy_set_header X-Webauth-Fullname $name; proxy_set_header X-Webauth-Email $email; spec: ingressClassName: {{ .Values.homey.ingress_class }} tls: - hosts: - torrent.{{ .Values.homey.url }} secretName: {{ .Values.homey.certname }} rules: - host: torrent.{{ .Values.homey.url }} http: paths: - path: / pathType: Prefix backend: service: name: transmission-web port: number: 80