{{ template "chart.header" . }} {{ template "chart.deprecationWarning" . }} {{ template "chart.badgesSection" . }} {{ template "chart.description" . }} {{ template "chart.homepageLine" . }} ## Steps to Use a Helm Chart ### 1. Add a Helm Repository Helm repositories contain collections of charts. You can add an existing repository using the following command: ```bash helm repo add jellyfin https://jellyfin.github.io/jellyfin-helm ``` ### 2. Install the Helm Chart To install a chart, use the following command: ```bash helm install my-jellyfin jellyfin/jellyfin ``` ### 3. View the Installation You can check the status of the release using: ```bash helm status my-jellyfin ``` ## Customizing the Chart Helm charts come with default values, but you can customize them by using the --set flag or by providing a custom values.yaml file. ### 1. Using --set to Override Values ```bash helm install my-jellyfin jellyfin/jellyfin --set key1=value1,key2=value2 ``` ### 2. Using a values.yaml File You can create a custom values.yaml file and pass it to the install command: ```bash helm install my-jellyfin jellyfin/jellyfin -f values.yaml ``` {{ template "chart.maintainersSection" . }} {{ template "chart.sourcesSection" . }} {{ template "chart.requirementsSection" . }} {{ template "chart.valuesSection" . }} {{ template "helm-docs.versionFooter" . }} ## Hardware acceleration Out of the box the pod does not have the necessary permissions to enable hardware acceleration (HWA) in Jellyfin. Adding the following Helm values should make it enable you to use hardware acceleration features. Some settings may need to be tweaked depending on the type of device (Intel/AMD/NVIDIA/...) and your container runtime. Please refer to the Jellyfin upstream documentation for more information about hardware acceleration: ```yaml securityContext: capabilities: add: - "SYS_ADMIN" drop: - "ALL" privileged: false extraVolumes: - name: hwa hostPath: path: /dev/dri extraVolumeMounts: - name: hwa mountPath: /dev/dri ``` ## Troubleshooting ### inotify Instance Limit Reached **Problem:** Jellyfin crashes with error: ``` System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached ``` **Root cause:** The Linux kernel has a limit on inotify instances (file system watchers) per user. Jellyfin uses inotify to monitor media libraries for changes. **Proper solution (recommended):** Increase the inotify limit on the Kubernetes nodes: ```bash # Temporary (until reboot) sysctl -w fs.inotify.max_user_instances=512 # Permanent echo "fs.inotify.max_user_instances=512" >> /etc/sysctl.conf sysctl -p ``` Recommended values: - `fs.inotify.max_user_instances`: 512 or higher - `fs.inotify.max_user_watches`: 524288 or higher (if you have large media libraries) **Workaround (if you cannot modify host settings):** If you're running on a managed Kubernetes cluster where you cannot modify node-level settings, you can force Jellyfin to use polling instead of inotify. **Note: This is less efficient and may increase CPU usage and delay change detection.** ```yaml jellyfin: env: - name: DOTNET_USE_POLLING_FILE_WATCHER value: "1" ``` This workaround disables inotify file watching in favor of periodic polling, which doesn't require inotify instances but is less efficient.