# Jellyfin values for Home Server - Single Instance # Minimal resources optimized for home lab/personal use # Use: helm install jellyfin ./charts/jellyfin -f charts/jellyfin/values-home-single.yaml # # Requirements: # - Storage for config, cache, and media # - (Optional) GPU for hardware transcoding # Jellyfin-specific configuration jellyfin: # Media directories - mount from NAS or local storage mediaDirectories: - name: movies mountPath: /media/movies # Use hostPath for NAS mounts in home servers hostPath: "/mnt/nas/media/movies" readOnly: true # Jellyfin only reads media files - name: tvshows mountPath: /media/tvshows hostPath: "/mnt/nas/media/tvshows" readOnly: true # Add more directories as needed: # - name: music # mountPath: /media/music # hostPath: "/mnt/nas/media/music" # readOnly: true # GPU hardware acceleration (recommended for home servers) # Intel QuickSync Video is most common in home servers (Intel NUC, Mini PCs) hardwareAcceleration: enabled: false # Enable if you have compatible GPU type: "none" # Change to "intel-qsv", "nvidia-nvenc", or "amd-vaapi" # Intel QuickSync Video (for Intel CPUs with iGPU) intel: renderDevice: "/dev/dri/renderD128" # Transcoding configuration for home server transcoding: cacheSize: 5Gi # Reduced for home use threads: 0 # Auto-detect (0 = use all available cores) # Network configuration network: # Published server URL (for remote access via DDNS/VPN) publishedServerUrl: "" # e.g., "https://jellyfin.home.example.com" # DLNA disabled by default (requires host network) enableDlna: false # No external databases needed (uses SQLite) postgresql: enabled: false mysql: enabled: false redis: enabled: false # Persistent storage - minimal for home server persistence: enabled: true # Config volume (Jellyfin configuration and SQLite database) config: enabled: true storageClass: "" # Use default storage class size: 2Gi # Minimal for home use (config + SQLite DB) accessMode: ReadWriteOnce mountPath: /config existingClaim: "" # Cache volume (transcoding cache) cache: enabled: true storageClass: "" # Use default storage class size: 5Gi # Reduced for home use accessMode: ReadWriteOnce mountPath: /cache existingClaim: "" # Single instance replicaCount: 1 # Recreate strategy (Jellyfin uses local SQLite database) strategy: type: Recreate # Container image image: repository: jellyfin/jellyfin tag: "10.10.3" pullPolicy: IfNotPresent imagePullSecrets: [] nameOverride: "" fullnameOverride: "" # Service account serviceAccount: create: true automount: true annotations: {} name: "" podAnnotations: {} podLabels: {} # Pod security context podSecurityContext: fsGroup: 1000 runAsUser: 1000 runAsGroup: 1000 runAsNonRoot: true # supplementalGroups auto-added if GPU enabled (44, 109 for Intel/AMD) # Container security context securityContext: capabilities: drop: - ALL readOnlyRootFilesystem: false allowPrivilegeEscalation: false # Service service: type: ClusterIP ports: - name: http port: 8096 targetPort: 8096 protocol: TCP # Ingress (disabled by default) ingress: enabled: false className: "nginx" annotations: nginx.ingress.kubernetes.io/proxy-body-size: "0" # Unlimited for media streaming nginx.ingress.kubernetes.io/proxy-buffering: "off" # cert-manager.io/cluster-issuer: letsencrypt-prod hosts: - host: jellyfin.home.local paths: - path: / pathType: Prefix tls: [] # - secretName: jellyfin-tls # hosts: # - jellyfin.home.local # Resource limits - OPTIMIZED for home server # These limits work well on Raspberry Pi 4, Intel NUC, or small Mini PCs resources: limits: cpu: 2000m # 2 cores max (sufficient for 1-2 concurrent streams) memory: 2Gi # 2GB RAM (minimal for Jellyfin) requests: cpu: 500m # 0.5 core baseline memory: 1Gi # 1GB baseline # Health checks - relaxed for home server livenessProbe: enabled: true httpGet: path: /health port: http initialDelaySeconds: 60 periodSeconds: 30 # Less frequent checks timeoutSeconds: 5 failureThreshold: 6 successThreshold: 1 readinessProbe: enabled: true httpGet: path: /health port: http initialDelaySeconds: 30 periodSeconds: 30 # Less frequent checks timeoutSeconds: 5 failureThreshold: 3 successThreshold: 1 startupProbe: enabled: true httpGet: path: /health port: http initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 30 successThreshold: 1 # Autoscaling - DISABLED for home server autoscaling: enabled: false # Pod Disruption Budget - DISABLED for single instance podDisruptionBudget: enabled: false # Network Policy - DISABLED for home use networkPolicy: enabled: false # Node selector - empty unless you have specific GPU nodes nodeSelector: {} # Example for Intel GPU node: # intel.feature.node.kubernetes.io/gpu: "true" # Tolerations - empty tolerations: [] # Affinity - empty for single instance affinity: {} # Priority class - empty for home use priorityClassName: "" # Topology spread constraints - empty topologySpreadConstraints: [] # Additional environment variables extraEnv: [] # Example for published server URL: # - name: JELLYFIN_PublishedServerUrl # value: "https://jellyfin.home.example.com" extraEnvFrom: [] # Extra volumes - empty (GPU volumes auto-added if enabled) extraVolumes: [] # Extra volume mounts - empty extraVolumeMounts: [] # Init containers - empty initContainers: [] # Lifecycle hooks - empty lifecycle: {}