Thank you for installing {{ .Chart.Name }}. Your release is named {{ .Release.Name }}. To learn more about the release, try: $ helm status {{ .Release.Name }} $ helm get all {{ .Release.Name }} {{- if .Values.ingress.enabled }} Jellyfin is available via Ingress at: {{- range .Values.ingress.hosts }} http{{ if $.Values.ingress.tls }}s{{ end }}://{{ .host }}{{ (index .paths 0).path }} {{- end }} {{- else }} To access Jellyfin, you can use port-forwarding: $ kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "jellyfin.fullname" . }} {{ .Values.service.port }}:{{ .Values.service.port }} Then visit http://localhost:{{ .Values.service.port }} in your browser. {{- end }} {{- if .Values.startupProbe }} {{- $startupTimeout := mul (default 10 .Values.startupProbe.periodSeconds) (default 30 .Values.startupProbe.failureThreshold) }} Startup Configuration: Startup Probe: Enabled Max Startup Time: {{ $startupTimeout }}s ({{ div $startupTimeout 60 }} minutes) The startup probe gives Jellyfin enough time to initialize, especially with large media libraries. After startup succeeds, liveness and readiness probes take over for health monitoring. {{- if gt $startupTimeout 600 }} ⚠ NOTE: Startup timeout is very long ({{ div $startupTimeout 60 }}+ minutes). Consider optimizing your media library or reducing failureThreshold. {{- end }} Persistence Configuration: Config: {{ if .Values.persistence.config.enabled }}{{ .Values.persistence.config.type | default "pvc" }}{{ if .Values.persistence.config.existingClaim }} (existing: {{ .Values.persistence.config.existingClaim }}){{ end }}{{ else }}emptyDir{{ end }} Media: {{ if .Values.persistence.media.enabled }}{{ .Values.persistence.media.type | default "pvc" }}{{ if .Values.persistence.media.existingClaim }} (existing: {{ .Values.persistence.media.existingClaim }}){{ end }}{{ else }}emptyDir{{ end }} Cache: {{ if .Values.persistence.cache.enabled }}{{ .Values.persistence.cache.type | default "pvc" }}{{ if .Values.persistence.cache.existingClaim }} (existing: {{ .Values.persistence.cache.existingClaim }}){{ end }}{{ else }}emptyDir{{ end }} {{- if and .Values.persistence.cache.enabled (eq .Values.persistence.cache.type "pvc") }} Cache Volume: Dedicated cache volume is enabled for improved performance. Size: {{ .Values.persistence.cache.size }} Access Mode: {{ .Values.persistence.cache.accessMode }} {{- if .Values.persistence.cache.storageClass }} Storage Class: {{ .Values.persistence.cache.storageClass }} {{- end }} Benefits: - Faster transcoding and metadata operations - Separate cache lifecycle from config/media - Can use faster storage class (SSD) for cache {{- end }} {{- if and .Values.persistence.cache.enabled (eq .Values.persistence.cache.type "hostPath") }} ⚠ WARNING: Using hostPath for cache - ensure {{ .Values.persistence.cache.hostPath }} exists on the node {{- if or .Values.service.ipFamilyPolicy .Values.service.ipFamilies }} Service IP Configuration: {{- if .Values.service.ipFamilyPolicy }} IP Family Policy: {{ .Values.service.ipFamilyPolicy }} {{- end }} {{- if .Values.service.ipFamilies }} IP Families: {{ .Values.service.ipFamilies | join ", " }} {{- if eq (index .Values.service.ipFamilies 0) "IPv6" }} ⚠ NOTE: IPv6 primary - ensure your probes use httpGet instead of tcpSocket for compatibility {{- end }} {{- if has "IPv6" .Values.service.ipFamilies }} {{- if not .Values.service.ipFamilyPolicy }} ⚠ WARNING: ipFamilies includes IPv6 but ipFamilyPolicy is not set {{- end }} {{- end }} {{- end }} {{- end }} Deployment Configuration: Revision History Limit: {{ .Values.revisionHistoryLimit }} {{- $limit := int .Values.revisionHistoryLimit }} {{- if eq $limit 0 }} ⚠ WARNING: Revision history is disabled - rollback will not be possible! {{- else if eq $limit 1 }} ⚠ NOTE: Only 1 revision kept - limited rollback capability {{- else }} You can rollback to any of the last {{ .Values.revisionHistoryLimit }} revisions using: kubectl rollout undo deployment/{{ include "jellyfin.fullname" . }} --namespace {{ .Release.Namespace }} {{- end }}