148 lines
7.9 KiB
Markdown
148 lines
7.9 KiB
Markdown
# jellyfin
|
|
|
|
  
|
|
|
|
Jellyfin Media Server
|
|
|
|
**Homepage:** <https://jellyfin.org/>
|
|
|
|
## 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
|
|
```
|
|
|
|
## Values
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
| affinity | object | `{}` | |
|
|
| enableDLNA | bool | `false` | Setting this to true enables DLNA which requires the pod to be attached to the host network in order to be useful - this can break things like ingress to the service https://jellyfin.org/docs/general/networking/dlna.html |
|
|
| extraContainers | list | `[]` | additional sidecar containers to run inside the pod. |
|
|
| extraEnvVars | list | `[]` | aditional environment variables passed to the pod |
|
|
| extraInitContainers | list | `[]` | additional init containers to run inside the pod. |
|
|
| extraPodAnnotations | object | `{}` | additional annotations applied to the pod |
|
|
| extraPodLabels | object | `{}` | additional pod labels. Not used as a selector label. |
|
|
| extraVolumeMounts | list | `[]` | Define mount points for additional volumes. |
|
|
| extraVolumes | list | `[]` | Define additional volumes to mount to the pod. |
|
|
| fullnameOverride | string | `""` | |
|
|
| image.pullPolicy | string | `"IfNotPresent"` | |
|
|
| image.repository | string | `"docker.io/jellyfin/jellyfin"` | Set cutom repository for jellyfin image |
|
|
| image.tag | string | `""` | Set jellyfin version which should be required since chart is updated with new versions automatically |
|
|
| imagePullSecrets | list | `[]` | |
|
|
| ingress.annotations | object | `{}` | |
|
|
| ingress.enabled | bool | `false` | |
|
|
| ingress.hosts[0] | string | `"chart-example.local"` | |
|
|
| ingress.labels | object | `{}` | |
|
|
| ingress.path | string | `"/"` | |
|
|
| ingress.tls | list | `[]` | |
|
|
| livenessProbe | object | `{"enabled":true,"initialDelaySeconds":10}` | Larger libraries may need to increase the readinessProbe and livenessProbe timeouts. Start by increasing the initialDelaySeconds. |
|
|
| metrics | object | `{"command":["bash","-c","sed 's,<EnableMetrics>false</EnableMetrics>,<EnableMetrics>true</EnableMetrics>,' -i /config/config/system.xml && /jellyfin/jellyfin"],"enabled":false,"serviceMonitor":{"enabled":false,"interval":"30s","labels":{},"metricRelabelings":[],"namespace":"","path":"/metrics","relabelings":[],"scheme":"http","scrapeTimeout":"30s","targetLabels":[],"tlsConfig":{}}}` | Configuration for metrics collection and monitoring |
|
|
| metrics.enabled | bool | `false` | Enable or disable metrics collection |
|
|
| metrics.serviceMonitor | object | `{"enabled":false,"interval":"30s","labels":{},"metricRelabelings":[],"namespace":"","path":"/metrics","relabelings":[],"scheme":"http","scrapeTimeout":"30s","targetLabels":[],"tlsConfig":{}}` | Configuration for the Prometheus ServiceMonitor |
|
|
| metrics.serviceMonitor.enabled | bool | `false` | Enable or disable the creation of a ServiceMonitor resource |
|
|
| metrics.serviceMonitor.interval | string | `"30s"` | Interval at which metrics should be scraped |
|
|
| metrics.serviceMonitor.labels | object | `{}` | Labels to add to the ServiceMonitor resource |
|
|
| metrics.serviceMonitor.metricRelabelings | list | `[]` | Relabeling rules for the metrics before ingestion |
|
|
| metrics.serviceMonitor.namespace | string | `""` | Namespace where the ServiceMonitor resource should be created. Defaults to Release.Namespace |
|
|
| metrics.serviceMonitor.path | string | `"/metrics"` | Path to scrape for metrics |
|
|
| metrics.serviceMonitor.relabelings | list | `[]` | Relabeling rules for the scraped metrics |
|
|
| metrics.serviceMonitor.scheme | string | `"http"` | Scheme to use for scraping metrics (http or https) |
|
|
| metrics.serviceMonitor.scrapeTimeout | string | `"30s"` | Timeout for scraping metrics |
|
|
| metrics.serviceMonitor.targetLabels | list | `[]` | Target labels to add to the scraped metrics |
|
|
| metrics.serviceMonitor.tlsConfig | object | `{}` | TLS configuration for scraping metrics |
|
|
| nameOverride | string | `""` | |
|
|
| nodeSelector | object | `{}` | |
|
|
| persistence.config.accessMode | string | `"ReadWriteOnce"` | |
|
|
| persistence.config.annotations | object | `{}` | Custom annotations to be added to the PVC |
|
|
| persistence.config.enabled | bool | `false` | |
|
|
| persistence.config.labels | object | `{}` | Custom labels to be added to the PVC |
|
|
| persistence.config.size | string | `"1Gi"` | |
|
|
| persistence.config.storageClass | string | `"-"` | If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
|
|
| persistence.extraExistingClaimMounts | list | `[]` | Add aditional PVs/PVCs to our container. Check values.yaml to see an example. |
|
|
| persistence.media.accessMode | string | `"ReadWriteOnce"` | |
|
|
| persistence.media.annotations | object | `{}` | Custom annotations to be added to the PVC |
|
|
| persistence.media.enabled | bool | `false` | |
|
|
| persistence.media.labels | object | `{}` | Custom labels to be added to the PVC |
|
|
| persistence.media.size | string | `"10Gi"` | |
|
|
| persistence.media.storageClass | string | `"-"` | If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. |
|
|
| podSecurityContext | object | `{}` | SecurityContext configuration for the Jellyfin pod |
|
|
| readinessProbe | object | `{"enabled":true,"initialDelaySeconds":10}` | Larger libraries may need to increase the readinessProbe and livenessProbe timeouts. Start by increasing the initialDelaySeconds. |
|
|
| replicaCount | int | `1` | Number of jellyfin replicas to start. Should be left at 1 |
|
|
| resources | object | `{}` | |
|
|
| runtimeClassName | string | `nil` | |
|
|
| securityContext | object | `{}` | SecurityContext configuration for the Jellyfin container |
|
|
| service.annotations | object | `{}` | |
|
|
| service.labels | object | `{}` | |
|
|
| service.loadBalancerIP | string | `nil` | |
|
|
| service.name | string | `"http"` | |
|
|
| service.port | int | `8096` | |
|
|
| service.type | string | `"ClusterIP"` | |
|
|
| tolerations | list | `[]` | |
|
|
|
|
----------------------------------------------
|
|
Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
|
|
|
|
## 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: <https://jellyfin.org/docs/general/administration/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
|
|
```
|