Breandan Dezendorf 2 lat temu
rodzic
commit
15c97a7fcb

+ 96 - 0
homelab/k3s/media/airsonic-advanced.yaml

@@ -0,0 +1,96 @@
+---
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: airsonic
+  labels:
+    app: airsonic
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: airsonic
+  template:
+    metadata:
+      labels:
+        app: airsonic
+    spec:
+      containers:
+      - name: airsonic
+        image: lscr.io/linuxserver/airsonic-advanced:latest
+        env:
+        - name: PUID
+          value: "1000"
+        - name: PGID
+          value: "1000"
+        ports:
+        - name: web
+          containerPort: 80
+        volumeMounts:
+        - name: airsonic-data-volume
+          mountPath: "/config"
+        - name: media-volume
+          mountPath: "/downloads/transmission"
+          subPath: "downloads/transmission"
+        - name: tesseract-nfs
+          mountPath: "/music"
+        #- name: media-volume
+        #  mountPath: "/movies"
+        #  subPath: "library/movies"
+      volumes:
+      - name: airsonic-data-volume
+        persistentVolumeClaim:
+          claimName: airsonic-data-pvc
+      - name: media-volume
+        persistentVolumeClaim:
+          claimName: media-pvc
+      - name: tesseract-nfs
+        nfs:
+          server: 192.168.1.87
+          path: /tank/music
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: airsonic
+spec:
+  type: ClusterIP
+  ports:
+    - name: web
+      port: 4040
+  selector:
+    app: airsonic
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: airsonic-ingress-route
+  namespace: default
+spec:
+  entryPoints:
+    - web
+  routes:
+  - match: Host(`airsonic.dezendorf.net`)
+    kind: Rule
+    middlewares:
+    - name: redirecthttps
+    services:
+    - name: airsonic
+      port: 4040
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: airsonic-websecure-route
+  namespace: default
+spec:
+  entryPoints:
+    - websecure
+  routes:
+  - match: Host(`airsonic.dezendorf.net`)
+    kind: Rule
+    services:
+    - name: airsonic
+      port: 4040
+  tls:
+    certResolver: myresolver

+ 96 - 0
homelab/k3s/media/beets.yaml

@@ -0,0 +1,96 @@
+---
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: beets
+  labels:
+    app: beets
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: beets
+  template:
+    metadata:
+      labels:
+        app: beets
+    spec:
+      containers:
+      - name: beets
+        image: lscr.io/linuxserver/beets:latest
+        env:
+        - name: PUID
+          value: "1000"
+        - name: PGID
+          value: "1000"
+        ports:
+        - name: web
+          containerPort: 80
+        volumeMounts:
+        - name: beets-data-volume
+          mountPath: "/config"
+        - name: media-volume
+          mountPath: "/downloads/transmission"
+          subPath: "downloads/transmission"
+        - name: tesseract-nfs
+          mountPath: "/music"
+        #- name: media-volume
+        #  mountPath: "/movies"
+        #  subPath: "library/movies"
+      volumes:
+      - name: beets-data-volume
+        persistentVolumeClaim:
+          claimName: beets-data-pvc
+      - name: media-volume
+        persistentVolumeClaim:
+          claimName: media-pvc
+      - name: tesseract-nfs
+        nfs:
+          server: 192.168.1.87
+          path: /tank/music
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: beets
+spec:
+  type: ClusterIP
+  ports:
+    - name: web
+      port: 8337
+  selector:
+    app: beets
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: beets-ingress-route
+  namespace: default
+spec:
+  entryPoints:
+    - web
+  routes:
+  - match: Host(`beets.dezendorf.net`)
+    kind: Rule
+    middlewares:
+    - name: redirecthttps
+    services:
+    - name: beets
+      port: 8337
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: beets-websecure-route
+  namespace: default
+spec:
+  entryPoints:
+    - websecure
+  routes:
+  - match: Host(`beets.dezendorf.net`)
+    kind: Rule
+    services:
+    - name: beets
+      port: 8337
+  tls:
+    certResolver: myresolver

+ 24 - 0
homelab/k3s/media/disks.yaml

@@ -25,6 +25,18 @@ spec:
 ---
 apiVersion: v1
 kind: PersistentVolumeClaim
+metadata:
+  name: airsonic-data-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
 metadata:
   name: readarr-data-pvc
 spec:
@@ -73,6 +85,18 @@ spec:
 ---
 apiVersion: v1
 kind: PersistentVolumeClaim
+metadata:
+  name: beets-data-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
 metadata:
   name: radarr-data-pvc
 spec:

+ 3 - 3
homelab/k3s/media/lidarr.yaml

@@ -17,7 +17,7 @@ spec:
     spec:
       containers:
       - name: lidarr
-        image: lscr.io/linuxserver/lidarr:develop
+        image: lscr.io/linuxserver/lidarr:latest
         env:
         - name: PUID
           value: "1000"
@@ -33,7 +33,7 @@ spec:
           mountPath: "/downloads/transmission"
           subPath: "downloads/transmission"
         - name: tesseract-nfs
-          mountPath: "/books"
+          mountPath: "/music"
         #- name: media-volume
         #  mountPath: "/movies"
         #  subPath: "library/movies"
@@ -47,7 +47,7 @@ spec:
       - name: tesseract-nfs
         nfs:
           server: 192.168.1.87
-          path: /tank/books
+          path: /tank/music
 ---
 apiVersion: v1
 kind: Service

+ 2 - 0
homelab/k3s/media/setup.sh

@@ -6,4 +6,6 @@ kubectl apply \
 	-f lidarr.yaml \
 	-f calibre.yaml \
 	-f readarr.yaml \
+	-f beets.yaml \
+	-f airsonic-advanced.yaml \
 	-f disks.yaml