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:
@@ -1,4 +1,4 @@
|
|||||||
# media-secrets — ProtonVPN WireGuard credentials
|
# media-secrets — ProtonVPN WireGuard credentials + service API keys
|
||||||
apiVersion: external-secrets.io/v1beta1
|
apiVersion: external-secrets.io/v1beta1
|
||||||
kind: ExternalSecret
|
kind: ExternalSecret
|
||||||
metadata:
|
metadata:
|
||||||
@@ -17,3 +17,19 @@ spec:
|
|||||||
remoteRef:
|
remoteRef:
|
||||||
key: secret/data/protonvpn
|
key: secret/data/protonvpn
|
||||||
property: private_key
|
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
|
||||||
|
|||||||
@@ -28,6 +28,29 @@ spec:
|
|||||||
labels:
|
labels:
|
||||||
app: jellyfin
|
app: jellyfin
|
||||||
spec:
|
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:
|
containers:
|
||||||
- name: jellyfin
|
- name: jellyfin
|
||||||
image: lscr.io/linuxserver/jellyfin:latest
|
image: lscr.io/linuxserver/jellyfin:latest
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
# Shared media PV — hostPath /media on Legion (single-node cluster)
|
# 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
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
|
|||||||
Reference in New Issue
Block a user