first commit

This commit is contained in:
2025-11-15 19:53:41 +08:00
commit ec97834a55
14 changed files with 1828 additions and 0 deletions

104
README.md.gotmpl Normal file
View File

@@ -0,0 +1,104 @@
{{ template "chart.header" . }}
{{ template "chart.deprecationWarning" . }}
{{ template "chart.badgesSection" . }}
{{ template "chart.homepageLine" . }}
{{ template "chart.description" . }}
While Plex is responsible for maintaining this Helm chart, we cannot provide support for troubleshooting related to its usage. For community assistance, please visit our [support forums](https://forums.plex.tv/).
### Installation via Helm
1. Add the Helm chart repo
```bash
helm repo add plex https://raw.githubusercontent.com/plexinc/pms-docker/gh-pages
```
2. Inspect & modify the default values (optional)
```bash
helm show values plex/plex-media-server > values.yaml
```
3. Install the chart
```bash
helm upgrade --install plex plex/plex-media-server --values values.yaml
```
[Additional details available here](https://www.plex.tv/blog/plex-pro-week-23-a-z-on-k8s-for-plex-media-server/)
### Sample init Container scripts
If you already have a different PMS server running elsewhere and wish to migrate it to be running in Kubernetes
the easiest way to do that is to import the existing PMS database through the use of a custom init script.
**Note: the init script must include a mechanism to exit early if the pms database already exists to prevent from overwriting its contents**
The following script is an example (using the default `alpine` init container) that will pull
a tar gziped file that contains the pms `Library` directory from some web server.
```sh
#!/bin/sh
echo "fetching pre-existing pms database to import..."
if [ -d "/config/Library" ]; then
echo "PMS library already exists, exiting."
exit 0
fi
apk --no-cache add curl
curl http://example.com/pms.tgz -o pms.tgz
tar -xvzf pms.tgz -C /config
rm pms.tgz
echo "Done."
```
This next example could be used if you don't have or can't host the existing pms database archive on a web server.
However, this one _does_ require that two commands are run manually once the init container starts up.
1. Manually copy the pms database into the pod: `kubectl cp pms.tgz <namespace>/<podname>:/pms.tgz.up -c <release name>-pms-chart-pms-init`
2. Once the file is uploaded copy rename it on the pod to the correct name that will be processed `kubectl exec -n <namespace> --stdin --tty <pod> -c <release name>-pms-chart-pms-init h -- mv /pms.tgz.up /pms.tgz`
The file is being uploaded with a temporary name so that the script does not start trying to unpack the database until it has finished uploading.
```sh
#!/bin/sh
echo "waiting for pre-existing pms database to uploaded..."
if [ -d "/config/Library" ]; then
echo "PMS library already exists, exiting."
exit 0
fi
# wait for the database archive to be manually copied to the server
while [ ! -f /pms.tgz ]; do sleep 2; done;
tar -xvzf /pms.tgz -C /config
rm pms.tgz
echo "Done."
```
## Contributing
Before contributing, please read the [Code of Conduct](../../CODE_OF_CONDUCT.md).
## License
[GNU GPLv3](./LICENSE)
{{ template "chart.maintainersSection" . }}
{{ template "chart.sourcesSection" . }}
{{ template "chart.requirementsSection" . }}
{{ template "chart.valuesSection" . }}
{{ template "helm-docs.versionFooter" . }}