feat(app): add audiobookshelf application

Signed-off-by: Vegard Hagen <[email protected]>
This commit is contained in:
Vegard Hagen
2025-04-29 21:10:39 +02:00
parent 4f694ce8c5
commit 4c1ad3e223
8 changed files with 150 additions and 0 deletions
@@ -0,0 +1,79 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: audiobookshelf
namespace: audiobookshelf
labels:
app: audiobookshelf
spec:
replicas: 1
selector:
matchLabels:
app: audiobookshelf
strategy:
type: Recreate
template:
metadata:
namespace: audiobookshelf
labels:
app: audiobookshelf
spec:
nodeSelector:
topology.kubernetes.io/zone: euclid
securityContext:
runAsNonRoot: true
runAsUser: 2501
runAsGroup: 2501
fsGroup: 2501
fsGroupChangePolicy: OnRootMismatch
seccompProfile:
type: RuntimeDefault
containers:
- name: audiobookshelf
image: ghcr.io/advplyr/audiobookshelf:2.21.0 # renovate: docker=ghcr.io/advplyr/audiobookshelf
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: [ "ALL" ]
ports:
- name: http
containerPort: 80
envFrom:
- configMapRef:
name: common-env
optional: true
volumeMounts:
- name: audiobookshelf
mountPath: /config
subPath: config
- name: audiobookshelf
mountPath: /metadata
subPath: metadata
- name: audiobooks
mountPath: /audiobooks
- name: podcasts
mountPath: /podcasts
- name: tmp
mountPath: /tmp
resources:
requests:
cpu: 50m
memory: 384Mi
limits:
cpu: 1000m
memory: 512Mi
volumes:
- name: audiobookshelf
persistentVolumeClaim:
claimName: audiobookshelf
- name: audiobooks
nfs:
server: 192.168.1.117
path: /mnt/pool-0/data/media/audiobooks
- name: podcasts
nfs:
server: 192.168.1.117
path: /mnt/pool-0/data/media/podcasts
- name: tmp
emptyDir: { }
@@ -0,0 +1,20 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: audiobookshelf
namespace: audiobookshelf
spec:
parentRefs:
- name: internal
namespace: gateway
hostnames:
- "audiobookshelf.stonegarden.dev"
- "abs.stonegarden.dev"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: audiobookshelf
port: 80
@@ -0,0 +1,15 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
configMapGenerator:
- name: common-env
namespace: audiobookshelf
literals:
- TZ=Europe/Oslo
resources:
- ns.yaml
- pvc.yaml
- svc.yaml
- http-route.yaml
- deployment.yaml
+4
View File
@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: audiobookshelf
+13
View File
@@ -0,0 +1,13 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: audiobookshelf
namespace: audiobookshelf
spec:
storageClassName: proxmox-csi
volumeName: pv-audiobookshelf
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4G
+13
View File
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: audiobookshelf
namespace: audiobookshelf
spec:
type: ClusterIP
selector:
app: audiobookshelf
ports:
- name: web
port: 80
targetPort: http
+2
View File
@@ -11,6 +11,8 @@ spec:
server: '*'
- namespace: 'arr'
server: '*'
- namespace: 'audiobookshelf'
server: '*'
- namespace: 'plex'
server: '*'
- namespace: 'jellyfin'
@@ -19,6 +19,10 @@ kubernetes_volumes = {
node = "euclid"
size = "1G"
}
pv-audiobookshelf = {
node = "euclid"
size = "4G"
}
pv-remark42 = {
node = "euclid"
size = "1G"