Hybrid cloud cluster monorepo with Ansible, K8s, NixOS, and Terraform. cute.haus
ansible terraform nix k8s
1

Configure Feed

Select the types of activity you want to include in your feed.

k8s/plex: add initContainer for plex plugins

Aly Raffauf (Jun 25, 2026, 12:44 PM EDT) a2936765 cf432b4c

+65 -1
+34
k8s/charts/plex/templates/deployment.yaml
··· 37 37 operator: Exists 38 38 effect: NoExecute 39 39 tolerationSeconds: 60 40 + initContainers: 41 + # Add custom plugins/scanners 42 + - name: plugins 43 + image: {{ .Values.pluginImage }} 44 + imagePullPolicy: IfNotPresent 45 + securityContext: 46 + runAsUser: 1000 47 + runAsGroup: 1000 48 + allowPrivilegeEscalation: false 49 + capabilities: 50 + drop: ["ALL"] 51 + command: ["/bin/sh", "-c"] 52 + args: 53 + - | 54 + set -euo pipefail 55 + PMS="/config/Library/Application Support/Plex Media Server" 56 + PLUGINS="$PMS/Plug-ins"; SCANNERS="$PMS/Scanners"; STAGE="$PMS/.plugin-staging" 57 + mkdir -p "$PLUGINS" "$SCANNERS" 58 + rm -rf "$STAGE"; mkdir -p "$STAGE" 59 + fetch() { echo "==> $1 @ $2"; wget -qO- "https://github.com/$1/archive/$2.tar.gz" | tar -xz -C "$STAGE"; } 60 + {{- range .Values.plugins.bundles }} 61 + fetch "{{ .repo }}" "{{ .rev }}" 62 + rm -rf "$PLUGINS/{{ .name }}" 63 + mv "$STAGE"/*-{{ .rev }} "$PLUGINS/{{ .name }}" 64 + {{- end }} 65 + {{- range .Values.plugins.scanners }} 66 + fetch "{{ .repo }}" "{{ .rev }}" 67 + cp -rf "$STAGE"/*-{{ .rev }}/Scanners/. "$SCANNERS/" 68 + rm -rf "$STAGE"/*-{{ .rev }} 69 + {{- end }} 70 + rm -rf "$STAGE" 71 + volumeMounts: 72 + - name: config 73 + mountPath: /config 40 74 containers: 41 75 - name: {{ .Chart.Name }} 42 76 image: docker.io/plexinc/pms-docker:1.43.2.10687-563d026ea@sha256:c37106c57fed7a6624f5dee5a3ce460ff011f09a2aa7f4ee9e8dbbd08ae1b87e
+20
k8s/charts/plex/values.yaml
··· 1 + # Plex plugins/scanners are provisioned into the config volume by an initContainer 2 + # on every pod start, pinned to exact commits via GitHub archive tarballs 3 + pluginImage: docker.io/library/alpine:3.24@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b 4 + 5 + plugins: 6 + # Cloned wholesale into "Plug-ins/<name>". 7 + bundles: 8 + - name: Audnexus.bundle 9 + repo: djdembeck/Audnexus.bundle 10 + branch: main 11 + rev: 4d204bf387e1a6ae844ebd2cc73b61db7540c11e 12 + - name: Hama.bundle 13 + repo: ZeroQI/Hama.bundle 14 + branch: master 15 + rev: 81f72eb4bcc2d362ba6beea0f64abb976a30689c 16 + # The repo's "Scanners/" subtree is merged into the Plex "Scanners/" dir. 17 + scanners: 18 + - repo: ZeroQI/Absolute-Series-Scanner 19 + branch: master 20 + rev: a72a58f764d1884a3007811576440a6cf3b7f21a
+11 -1
renovate.json
··· 23 23 "customType": "regex", 24 24 "managerFilePatterns": ["/^k8s/charts/.*\\.ya?ml$/"], 25 25 "matchStrings": [ 26 - "^\\s*(?:image|imageName):\\s+[\"']?(?<depName>[^\\s\"'{}]+?):(?<currentValue>[^\\s\"'@{}]+)@(?<currentDigest>sha256:[a-f0-9]{64})[\"']?\\s*$" 26 + "^\\s*(?:image|imageName|pluginImage):\\s+[\"']?(?<depName>[^\\s\"'{}]+?):(?<currentValue>[^\\s\"'@{}]+)@(?<currentDigest>sha256:[a-f0-9]{64})[\"']?\\s*$" 27 27 ], 28 28 "datasourceTemplate": "docker" 29 29 }, ··· 34 34 "repository:\\s+[\"']?(?<depName>[^\\s\"']+)[\"']?\\s+tag:\\s+[\"']?(?<currentValue>[^\\s\"'@]+)@(?<currentDigest>sha256:[a-f0-9]{64})[\"']?" 35 35 ], 36 36 "datasourceTemplate": "docker" 37 + }, 38 + { 39 + "description": "Plex plugin/scanner bundles pinned to a git commit (repo/branch/rev)", 40 + "customType": "regex", 41 + "managerFilePatterns": ["/^k8s/charts/.*\\.ya?ml$/"], 42 + "matchStrings": [ 43 + "repo:\\s+[\"']?(?<depName>[^\\s\"']+)[\"']?\\s+branch:\\s+[\"']?(?<currentValue>[^\\s\"']+)[\"']?\\s+rev:\\s+[\"']?(?<currentDigest>[a-f0-9]{40})[\"']?" 44 + ], 45 + "packageNameTemplate": "https://github.com/{{{depName}}}", 46 + "datasourceTemplate": "git-refs" 37 47 } 38 48 ], 39 49