No description
Find a file
Gabriel 38b18aa92f
All checks were successful
deploy-plex-argocd-application / Apply Plex Argo CD application (push) Successful in 10s
Expand Plex config PVC from 1Gi to 5Gi
Plex was running out of space for transcoding/conversion on the
config volume (82% full with only 178MB free).

Made-with: Cursor
2026-03-18 18:42:48 -04:00
.forgejo/workflows first commit 2026-03-17 18:24:51 -04:00
.git-crypt Add 1 git-crypt collaborator 2026-03-17 18:05:44 -04:00
argocd Fix Argo application source path 2026-03-17 23:40:11 -04:00
k8s Expand Plex config PVC from 1Gi to 5Gi 2026-03-18 18:42:48 -04:00
.gitattributes first commit 2026-03-17 18:24:51 -04:00
kustomization.yaml first commit 2026-03-17 18:24:51 -04:00
README.md Remove external LoadBalancer for Plex 2026-03-18 17:49:02 -04:00
secrets.yaml first commit 2026-03-17 18:24:51 -04:00

Plex for Argo CD

This directory contains a plain-manifest Plex deployment intended to be synced by Argo CD.

CI bootstrap:

  • .forgejo/workflows/deploy-argocd-application.yaml applies the Argo CD Application and forces a refresh on pushes to main.
  • The workflow requires repository secret K8S_KUBECONFIG_B64 containing a base64-encoded admin kubeconfig with permission to manage resources in namespace argocd.
  • Optional repository secret PLEX_CLAIM lets the workflow create plex-bootstrap in-cluster before Argo sync. This is the practical way to handle the claim token when the repo uses git-crypt, because Argo CD does not decrypt git-crypt content on its own.

Assumptions baked into the manifests:

  • Plex runs in namespace plex.
  • The web UI is exposed at https://plex.i.psilva.org.
  • Media is mounted read-only from nas.i.psilva.org:/mnt/GPool1/media.
  • Plex config data is stored on Ceph RBD via StorageClass rook-ceph-block-retain and PVC plex-config-ceph.
  • The NAS export is readable by UID/GID 1000; adjust PUID and PGID in the ConfigMap if needed.
  • Native Plex clients should use your existing Ingress/TCP proxy for 32400; you typically do not need an external LoadBalancer.
  • Claim token note: the initial "Claim Plex Media Server" usually only succeeds when you connect to http://<plex-ip>:32400/web from the same LAN/subnet (this avoids Plex "Not authorized" during the bootstrap step).
  • After Plex is claimed successfully, you can typically access Plex normally via your existing TCP proxy/Ingress for 32400 (no need to create a separate extra LoadBalancer just for claiming).

Bootstrap secret:

  • secrets.yaml is a Kubernetes Secret manifest for plex-bootstrap.
  • This repo is intended to protect secrets.yaml with git-crypt.
  • secrets.yaml is not part of the Argo render path. If you want automated bootstrap through CI, use Forgejo repository secret PLEX_CLAIM instead.

Argo CD repo assumption:

  • argocd/application.yaml assumes the repo will be published as https://forgejo.i.psilva.org/gabepsilva/homelab-plex.git and synced from the repo root.