mirror of
				https://github.com/optim-enterprises-bv/homelab.git
				synced 2025-11-04 03:47:45 +00:00 
			
		
		
		
	feat(jellyfin): Adding Jellyfin
This commit is contained in:
		
							
								
								
									
										47
									
								
								apps/jellyfin/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								apps/jellyfin/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: Deployment
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    app: jellyfin
 | 
			
		||||
  name: jellyfin
 | 
			
		||||
  namespace: jellyfin
 | 
			
		||||
spec:
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: jellyfin
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: jellyfin
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: jellyfin
 | 
			
		||||
          image: lscr.io/linuxserver/jellyfin:latest
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          envFrom:
 | 
			
		||||
            - configMapRef:
 | 
			
		||||
                name: jellyfin-env
 | 
			
		||||
          ports:
 | 
			
		||||
            - name: dns-tcp
 | 
			
		||||
              containerPort: 53
 | 
			
		||||
              protocol: TCP
 | 
			
		||||
          resources:
 | 
			
		||||
            requests:
 | 
			
		||||
              cpu: 2000m
 | 
			
		||||
              memory: 6Gi
 | 
			
		||||
            limits:
 | 
			
		||||
              cpu: 10000m
 | 
			
		||||
              memory: 12Gi
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - name: config
 | 
			
		||||
              mountPath: /config
 | 
			
		||||
            - name: media
 | 
			
		||||
              mountPath: /media
 | 
			
		||||
      volumes:
 | 
			
		||||
        - name: config
 | 
			
		||||
          persistentVolumeClaim:
 | 
			
		||||
            claimName: jellyfin-config-pvc
 | 
			
		||||
        - name: media
 | 
			
		||||
          persistentVolumeClaim:
 | 
			
		||||
            claimName: jellyfin-media-pvc
 | 
			
		||||
							
								
								
									
										13
									
								
								apps/jellyfin/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								apps/jellyfin/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: IngressRoute
 | 
			
		||||
metadata:
 | 
			
		||||
  name: jellyfin-ingress
 | 
			
		||||
spec:
 | 
			
		||||
  entryPoints:
 | 
			
		||||
    - websecure
 | 
			
		||||
  routes:
 | 
			
		||||
    - match: Host(`jellyfin.stonegarden.dev`)
 | 
			
		||||
      kind: Rule
 | 
			
		||||
      services:
 | 
			
		||||
        - name: jellyfin-svc
 | 
			
		||||
          port: 8096
 | 
			
		||||
							
								
								
									
										22
									
								
								apps/jellyfin/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								apps/jellyfin/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
apiVersion: kustomize.config.k8s.io/v1beta1
 | 
			
		||||
kind: Kustomization
 | 
			
		||||
namespace: jellyfin
 | 
			
		||||
commonLabels:
 | 
			
		||||
  app: jellyfin
 | 
			
		||||
 | 
			
		||||
configMapGenerator:
 | 
			
		||||
  - name: jellyfin-env
 | 
			
		||||
    literals:
 | 
			
		||||
      - PUID="1000"
 | 
			
		||||
      - PGID="1000"
 | 
			
		||||
      - UMASK="002"
 | 
			
		||||
      - TZ="Europe/Oslo"
 | 
			
		||||
 | 
			
		||||
resources:
 | 
			
		||||
  - pv-jellyfin-config.yaml
 | 
			
		||||
  - pvc-jellyfin-config.yaml
 | 
			
		||||
  - pv-jellyfin-media.yaml
 | 
			
		||||
  - pvc-jellyfin-media.yaml
 | 
			
		||||
  - service.yaml
 | 
			
		||||
  - deployment.yaml
 | 
			
		||||
  - ingress.yaml
 | 
			
		||||
							
								
								
									
										22
									
								
								apps/jellyfin/pv-jellyfin-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								apps/jellyfin/pv-jellyfin-config.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolume
 | 
			
		||||
metadata:
 | 
			
		||||
  name: jellyfin-config-pv
 | 
			
		||||
spec:
 | 
			
		||||
  capacity:
 | 
			
		||||
    storage: 64Gi
 | 
			
		||||
  volumeMode: Filesystem
 | 
			
		||||
  accessModes:
 | 
			
		||||
    - ReadWriteOnce
 | 
			
		||||
  persistentVolumeReclaimPolicy: Retain
 | 
			
		||||
  storageClassName: jellyfin-config-sc
 | 
			
		||||
  local:
 | 
			
		||||
    path: /disk/etc/jellyfin
 | 
			
		||||
  nodeAffinity:
 | 
			
		||||
    required:
 | 
			
		||||
      nodeSelectorTerms:
 | 
			
		||||
        - matchExpressions:
 | 
			
		||||
            - key: kubernetes.io/hostname
 | 
			
		||||
              operator: In
 | 
			
		||||
              values:
 | 
			
		||||
                - gauss
 | 
			
		||||
							
								
								
									
										22
									
								
								apps/jellyfin/pv-jellyfin-media.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								apps/jellyfin/pv-jellyfin-media.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolume
 | 
			
		||||
metadata:
 | 
			
		||||
  name: jellyfin-media-pv
 | 
			
		||||
spec:
 | 
			
		||||
  capacity:
 | 
			
		||||
    storage: 12Ti
 | 
			
		||||
  volumeMode: Filesystem
 | 
			
		||||
  accessModes:
 | 
			
		||||
    - ReadWriteOnce
 | 
			
		||||
  persistentVolumeReclaimPolicy: Retain
 | 
			
		||||
  storageClassName: jellyfin-media-sc
 | 
			
		||||
  local:
 | 
			
		||||
    path: /disk/data/media
 | 
			
		||||
  nodeAffinity:
 | 
			
		||||
    required:
 | 
			
		||||
      nodeSelectorTerms:
 | 
			
		||||
        - matchExpressions:
 | 
			
		||||
            - key: kubernetes.io/hostname
 | 
			
		||||
              operator: In
 | 
			
		||||
              values:
 | 
			
		||||
                - gauss
 | 
			
		||||
							
								
								
									
										12
									
								
								apps/jellyfin/pvc-jellyfin-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								apps/jellyfin/pvc-jellyfin-config.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolumeClaim
 | 
			
		||||
metadata:
 | 
			
		||||
  name: jellyfin-config-pvc
 | 
			
		||||
  namespace: jellyfin
 | 
			
		||||
spec:
 | 
			
		||||
  storageClassName: jellyfin-config-sc
 | 
			
		||||
  accessModes:
 | 
			
		||||
    - ReadWriteOnce
 | 
			
		||||
  resources:
 | 
			
		||||
    requests:
 | 
			
		||||
      storage: 64Gi
 | 
			
		||||
							
								
								
									
										12
									
								
								apps/jellyfin/pvc-jellyfin-media.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								apps/jellyfin/pvc-jellyfin-media.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolumeClaim
 | 
			
		||||
metadata:
 | 
			
		||||
  name: jellyfin-media-pvc
 | 
			
		||||
  namespace: jellyfin
 | 
			
		||||
spec:
 | 
			
		||||
  storageClassName: jellyfin-media-sc
 | 
			
		||||
  accessModes:
 | 
			
		||||
    - ReadWriteOnce
 | 
			
		||||
  resources:
 | 
			
		||||
    requests:
 | 
			
		||||
      storage: 12Ti
 | 
			
		||||
							
								
								
									
										12
									
								
								apps/jellyfin/service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								apps/jellyfin/service.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: jellyfin-svc
 | 
			
		||||
  namespace: jellyfin
 | 
			
		||||
spec:
 | 
			
		||||
  type: LoadBalancer
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: web
 | 
			
		||||
      port: 8096
 | 
			
		||||
  selector:
 | 
			
		||||
    app: jellyfin
 | 
			
		||||
@@ -17,6 +17,8 @@ spec:
 | 
			
		||||
      server: '*'
 | 
			
		||||
    - namespace: 'home-assistant'
 | 
			
		||||
      server: '*'
 | 
			
		||||
    - namespace: 'jellyfin'
 | 
			
		||||
      server: '*'
 | 
			
		||||
    - namespace: 'plex'
 | 
			
		||||
      server: '*'
 | 
			
		||||
    - namespace: 'stonegarden'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user