media: add full library folder structure, store all secrets in Vault

- external-secrets: add qbittorrent, jellyfin, seerr keys from Vault
- pvc: document all media folder paths (movies, tv, anime, docs, standup, concerts, kids, music)
- jellyfin: init container creates all media subdirs on startup
This commit is contained in:
Will Anderson
2026-04-11 01:19:48 -05:00
parent 4ab5cf1e06
commit d3289895e5
3 changed files with 50 additions and 1 deletions
+17 -1
View File
@@ -1,4 +1,4 @@
# media-secrets — ProtonVPN WireGuard credentials
# media-secrets — ProtonVPN WireGuard credentials + service API keys
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
@@ -17,3 +17,19 @@ spec:
remoteRef:
key: secret/data/protonvpn
property: private_key
- secretKey: QBITTORRENT_USERNAME
remoteRef:
key: secret/data/qbittorrent
property: username
- secretKey: QBITTORRENT_PASSWORD
remoteRef:
key: secret/data/qbittorrent
property: password
- secretKey: JELLYFIN_API_KEY
remoteRef:
key: secret/data/jellyfin
property: api_key
- secretKey: SEERR_API_KEY
remoteRef:
key: secret/data/seerr
property: api_key
+23
View File
@@ -28,6 +28,29 @@ spec:
labels:
app: jellyfin
spec:
initContainers:
# Ensure all media subdirectories exist on the hostPath volume
- name: media-dirs
image: busybox:latest
command:
- sh
- -c
- |
mkdir -p \
/media/movies \
/media/tv/shows \
/media/tv/anime \
/media/documentaries \
/media/standup \
/media/concerts \
/media/kids \
/media/music \
/media/downloads/complete \
/media/downloads/incomplete
chown -R 1000:1000 /media
volumeMounts:
- name: media
mountPath: /media
containers:
- name: jellyfin
image: lscr.io/linuxserver/jellyfin:latest
+10
View File
@@ -1,4 +1,14 @@
# Shared media PV — hostPath /media on Legion (single-node cluster)
# Folder structure:
# /media/movies — feature films
# /media/tv/shows — TV series
# /media/tv/anime — anime series
# /media/documentaries — documentaries
# /media/standup — stand-up comedy specials
# /media/concerts — concerts & music videos
# /media/kids — kids & family content
# /media/music — audio music library
# /media/downloads — qBittorrent working dir (complete/incomplete)
apiVersion: v1
kind: PersistentVolume
metadata: