Jellyfin
Prerequisites
This guide assumes you have the following prerequisites in place:
Jellyfin
Jellyfin is an open-source media server that allows you to organize, manage, and stream your media collection.
Installation
- Create the following directory structure for Jellyfin:
jellyfin/
├── ingress.yml
├── pvc.yml
├── svc.yml
└── jellyfin.yml
- Add the following content to
ingress.yml:---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jellyfin-ingress
namespace: media
annotations:
cert-manager.io/cluster-issuer: letsencrypt-cloudflare
spec:
ingressClassName: traefik
tls:
- hosts:
- jellyfin.example.com
secretName: jellyfin-tls
rules:
- host: jellyfin.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: jellyfin-service
port:
number: 8096
- Add the following content to
pvc.yml:---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jellyfin-pvc
namespace: media
spec:
resources:
requests:
storage: 5Gi
storageClassName: longhorn
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
- Add the following content to
svc.yml:---
apiVersion: v1
kind: Service
metadata:
name: jellyfin-service
namespace: media
spec:
selector:
app: jellyfin
ports:
- port: 8096
targetPort: 8096
protocol: TCP
- Add the following content to
jellyfin.yml:---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jellyfin
namespace: media
spec:
strategy:
type: Recreate
replicas: 1
selector:
matchLabels:
app: jellyfin
template:
metadata:
labels:
app: jellyfin
spec:
containers:
- name: jellyfin
image: jellyfin/jellyfin:10.11.6
ports:
- containerPort: 8096
volumeMounts:
- name: media
mountPath: /media
- name: config
mountPath: /config
- name: cache
mountPath: /cache
# Uncomment the following lines if you want to enable hardware acceleration for Intel GPUs
#- name: i915
# mountPath: /dev/dri
#securityContext:
# privileged: true
#resources:
# requests:
# gpu.intel.com/i915: "1"
# limits:
# gpu.intel.com/i915: "1"
volumes:
- name: config
persistentVolumeClaim:
claimName: jellyfin-pvc
- name: cache
emptyDir: {}
- name: media
nfs:
server: <nfs-server-ip>
path: <path-to-media>
# Uncomment the following lines if you want to enable hardware acceleration for Intel GPUs
#- name: i915
# hostPath:
# path: /dev/dri
- Commit and push the changes to your Git repository. FluxCD will automatically deploy Jellyfin to your Kubernetes cluster.