|
| 1 | +# plex |
| 2 | + |
| 3 | +   |
| 4 | + |
| 5 | +Plex Media Server Helm chart |
| 6 | + |
| 7 | +**Homepage:** <https://www.plex.tv> |
| 8 | + |
| 9 | +## TL;DR |
| 10 | + |
| 11 | +```console |
| 12 | +$ helm repo add utkuozdemir https://utkuozdemir.org/helm-charts |
| 13 | +$ helm install my-release utkuozdemir/plex |
| 14 | +``` |
| 15 | + |
| 16 | +## Values |
| 17 | + |
| 18 | +| Key | Type | Default | Description | |
| 19 | +|-----|------|---------|-------------| |
| 20 | +| affinity | object | `{}` | Affinity for the pod assignment | |
| 21 | +| dnsConfig | object | `{}` | DNS configuration for the pod | |
| 22 | +| dnsPolicy | string | `"ClusterFirst"` | DNS policy for the pod | |
| 23 | +| env | object | `{}` | Non-sensitive environment variables to be set in the pods. See the [application docs](https://docs.linuxserver.io/images/docker-plex) | |
| 24 | +| extraVolumeMounts | object | `{}` | Arbitrary extra volume mounts for the pod | |
| 25 | +| extraVolumes | list | `[]` | Arbitrary extra volume definitions for the pod | |
| 26 | +| fullnameOverride | string | `""` | String to fully override fullname template with a string | |
| 27 | +| hostNetwork | bool | `false` | | |
| 28 | +| hostPort.enabled | bool | `false` | | |
| 29 | +| hostPort.port | int | `32400` | | |
| 30 | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | |
| 31 | +| image.repository | string | `"docker.io/linuxserver/plex"` | Image repository | |
| 32 | +| image.tag | string | `""` | Image tag (if not specified, defaults to the chart's appVersion) | |
| 33 | +| imagePullSecrets | list | `[]` | Image pull secrets | |
| 34 | +| ingress.annotations | object | `{}` | Annotations for the ingress | |
| 35 | +| ingress.className | string | `""` | Ingress class name | |
| 36 | +| ingress.enabled | bool | `false` | Expose the app using an ingress | |
| 37 | +| ingress.hosts | list | see [values.yaml](values.yaml) | Ingress hosts configuration | |
| 38 | +| ingress.tls | list | `[]` | The TLS configuration for the Ingress | |
| 39 | +| initContainers | list | `[]` | Init containers | |
| 40 | +| livenessProbe | object | `{}` | Pod liveness probe | |
| 41 | +| nameOverride | string | `""` | String to partially override fullname template with a string (will prepend the release name) | |
| 42 | +| nodeSelector | object | `{}` | The node selector for the deployment | |
| 43 | +| persistence.config.accessModes[0] | string | `"ReadWriteOnce"` | | |
| 44 | +| persistence.config.annotations | object | `{}` | Config: Annotations for the claim | |
| 45 | +| persistence.config.customVolume | object | `{}` | Config: Alternative data volume definition (e.g. nfs, hostPath). Used when `persistence.config.isPvc` is `false` | |
| 46 | +| persistence.config.enabled | bool | `true` | Config: Enable persistence | |
| 47 | +| persistence.config.existingClaim | string | `""` | Config: Name of the existing claim to be used for config | |
| 48 | +| persistence.config.isPvc | bool | `true` | Config: Persistence type is pvc. When `false`, data volume definition is read from `persistence.config.customVolume` | |
| 49 | +| persistence.config.size | string | `"2Gi"` | Config: Size for the claim | |
| 50 | +| persistence.config.storageClass | string | `""` | Config: Storage class for the volume | |
| 51 | +| persistence.data.accessModes[0] | string | `"ReadWriteOnce"` | | |
| 52 | +| persistence.data.annotations | object | `{}` | Data: Annotations for the claim | |
| 53 | +| persistence.data.customVolume | object | `{}` | Data: Alternative data volume definition (e.g. nfs, hostPath). Used when `persistence.data.isPvc` is `false` | |
| 54 | +| persistence.data.enabled | bool | `false` | Data: Enable persistence | |
| 55 | +| persistence.data.existingClaim | string | `""` | Data: Name of the existing claim to be used | |
| 56 | +| persistence.data.isPvc | bool | `true` | Data: Persistence type is pvc. When `false`, data volume definition is read from `persistence.data.customVolume` | |
| 57 | +| persistence.data.size | string | `"64Gi"` | Data: Size for the claim | |
| 58 | +| persistence.data.storageClass | string | `""` | Data: Storage class for the data volume | |
| 59 | +| podAnnotations | object | `{}` | Annotations for the pods | |
| 60 | +| podSecurityContext | object | `{}` | Security context for the pods | |
| 61 | +| readinessProbe | object | `{"tcpSocket":{"port":"plex"}}` | Pod readiness probe | |
| 62 | +| replicaCount | int | `1` | Number of replicas to run. Chart is not designed to scale horizontally, use at your own risk | |
| 63 | +| resources | object | `{}` | The resource requests and limits of the container | |
| 64 | +| secretEnv | object | `{}` | Sensitive environment variables to be set in the pods. See the [application docs](https://docs.linuxserver.io/images/docker-plex) | |
| 65 | +| securityContext | object | `{"capabilities":{"add":["NET_ADMIN"]}}` | Security context for the container. NET_ADMIN capability is required for the VPN to work properly. | |
| 66 | +| service.port | int | `32400` | Port for the service to use | |
| 67 | +| service.type | string | `"ClusterIP"` | Type of the service | |
| 68 | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | |
| 69 | +| serviceAccount.create | bool | `true` | Specifies whether a service account should be created | |
| 70 | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | |
| 71 | +| sidecarContainers | list | `[]` | Sidecar containers | |
| 72 | +| strategy | object | `{"type":"Recreate"}` | Deployment strategy | |
| 73 | +| tolerations | list | `[]` | Tolerations for the pod assignment | |
| 74 | + |
| 75 | +Alternatively, a YAML file that specifies the values for the parameters |
| 76 | +can be provided while installing the chart. For example, |
| 77 | + |
| 78 | +```console |
| 79 | +$ helm install my-release -f values.yaml utkuozdemir/plex |
| 80 | +``` |
| 81 | + |
| 82 | +> **Tip**: You can use the default [values.yaml](values.yaml) |
| 83 | +
|
| 84 | +## Notes |
| 85 | + |
| 86 | +Note that this is an un-opinionated chart regarding the configuration. What is meant by this is: |
| 87 | +The chart passes the set of environment variables as-is into the container, using the `env` and `secretEnv` values. |
| 88 | +This way we avoid mapping each and every configuration parameter to an explicitly |
| 89 | +named chart parameter and provides a very flexible configuration. |
| 90 | + |
| 91 | +## Upgrading Chart |
| 92 | + |
| 93 | +```console |
| 94 | +helm upgrade my-release utkuozdemir/plex |
| 95 | +``` |
| 96 | + |
| 97 | +_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ |
| 98 | + |
| 99 | +### Upgrading an existing Release to a new major version |
| 100 | + |
| 101 | +A major chart version change (like 1.2.0 -> 2.0.0) indicates that |
| 102 | +there is an incompatible breaking change needing manual actions. |
| 103 | + |
| 104 | +### From 1.x to 2.x |
| 105 | + |
| 106 | +On version 2.x, the app is backed by a deployment instead of a statefulset. |
| 107 | + |
| 108 | +The values is largely refactored - pay attention to the changes on the `persistence` section. |
| 109 | + |
| 110 | +It is recommended to start from a fresh install. |
| 111 | + |
| 112 | +## Maintainers |
| 113 | + |
| 114 | +| Name | Email | Url | |
| 115 | +| ---- | ------ | --- | |
| 116 | +| Utku Özdemir | [email protected] | https://utkuozdemir.org | |
| 117 | + |
| 118 | +## Source Code |
| 119 | + |
| 120 | +* <https://github.com/linuxserver/docker-plex> |
| 121 | +* <https://github.com/utkuozdemir/helm-charts> |
0 commit comments