Skip to main content

Plex

Manual setup
#

Configuration
#

Configure the following values in the deployment files:

  • SYNOLOGY_NAS_IP: Your Synology NAS IP address
  • SYNOLOGY_NAS_SHARE: NFS share path on your NAS
  • PLEX_CLAIM_TOKEN: Get from https://www.plex.tv/claim/ (valid for 4 minutes)
  • PLEX_LOADBALANCER_IP: Your desired LoadBalancer IP
  • PLEX_SERVER_NAME: Your Plex server name

Installation steps
#

  1. Create Plex namespace:
kubectl create namespace plex
  1. Apply Plex PVCs:
kubectl apply -f plex/pvc.yaml
  1. Deploy Plex:
kubectl apply -f plex/deployment.yaml

Deployment
#

Plex is deployed by Argo CD. Sync order uses sync waves: hashicorp-vault, then external-secrets-operator, then plex.

Register application resources
#

kubectl apply -k argocd
kubectl apply -f clusters/home-prod/argocd/app-of-apps.yaml

Apply only Plex directly if needed:

kubectl apply -f clusters/home-prod/argocd/applications/plex.yaml

Check status:

kubectl -n argocd get applications
kubectl -n argocd get application plex -o yaml

Vault and External Secrets integration
#

Store the Plex claim token in Vault:

vault kv put secret/homelab/plex PLEX_CLAIM=your_claim_token

Create the ESO Vault token secret:

kubectl create secret generic vault-eso-token \
  -n external-secrets-system \
  --from-literal=token=YOUR_VAULT_TOKEN

Verify secret materialization:

kubectl get externalsecret -n plex
kubectl get secret plex-env -n plex

Storage and migration
#

  1. plex-config-pvc is GitOps-managed via homelabs/plex/manifests/pvc-config.yaml and must match live immutable fields.
  2. plex-media-pvc is usually created manually or from homelabs/plex/pvc.yaml and mounted by the Helm release.
  3. Run clusters/home-prod/overlays/plex/migrate-metadata-job.yaml only when migrating metadata from old hostPath storage.

Cloudflare Tunnel (optional)
#

  1. Add a Public Hostname, for example plex.yourdomain.org.
  2. Set service URL to http://plex.plex.svc.cluster.local:32400.
  3. Optionally disable Plex native remote access if tunnel-only.
  4. Confirm Plex Service is ClusterIP on port 32400.