Breandan Dezendorf 2 éve
szülő
commit
133e40e171

+ 99 - 0
homelab/k3s/media/bazarr.yaml

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

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

@@ -0,0 +1,72 @@
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: sonarr-data-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: bazarr-data-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: transmission-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: radarr-data-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: jackett-data-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: media-pvc
+spec:
+  accessModes:
+    - ReadWriteOnce
+  storageClassName: nfs
+  resources:
+    requests:
+      storage: 100M

+ 88 - 0
homelab/k3s/media/jackett.yaml

@@ -0,0 +1,88 @@
+---
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: jackett
+  labels:
+    app: jackett
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: jackett
+  template:
+    metadata:
+      labels:
+        app: jackett
+    spec:
+      containers:
+      - name: jackett
+        image: lscr.io/linuxserver/jackett:latest
+        env:
+        - name: AUTO_UPDATE
+          value: "true"
+        - name: TZ
+          value: America/New_York
+        ports:
+        - name: web
+          containerPort: 9117
+        volumeMounts:
+        - name: jackett-data-volume
+          mountPath: "/config"
+        - name: media-volume
+          mountPath: "/downloads"
+      volumes:
+      - name: jackett-data-volume
+        persistentVolumeClaim:
+          claimName: jackett-data-pvc
+      - name: media-volume
+        persistentVolumeClaim:
+          claimName: media-pvc
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: jackett
+spec:
+  type: ClusterIP
+  ports:
+    - name: web
+      port: 9117
+      targetPort: 9117
+
+  selector:
+    app: jackett
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: jackett-ingress-route
+  namespace: default
+spec:
+  entryPoints:
+    - web
+  routes:
+  - match: Host(`jackett.dezendorf.net`)
+    kind: Rule
+    middlewares:
+    - name: redirecthttps
+    services:
+    - name: jackett
+      port: 9117
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: jackett-websecure-route
+  namespace: default
+spec:
+  entryPoints:
+    - websecure
+  routes:
+  - match: Host(`jackett.dezendorf.net`)
+    kind: Rule
+    services:
+    - name: jackett
+      port: 9117
+  tls:
+    certResolver: myresolver

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

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

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

@@ -0,0 +1,6 @@
+kubectl apply \
+	-f transmission.yaml \
+	-f sonarr.yaml \
+	-f radarr.yaml \
+	-f jackett.yaml \
+	-f disks.yaml

+ 93 - 0
homelab/k3s/media/sonarr.yaml

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

+ 112 - 0
homelab/k3s/media/transmission.yaml

@@ -0,0 +1,112 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: pia-auth
+data:
+  username: cDk1MDkyMDU=
+  password: N2lrSjhrc0ozSw==
+---
+kind: Deployment
+apiVersion: apps/v1
+metadata:
+  name: transmission
+  labels:
+    app: transmission
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: transmission
+  template:
+    metadata:
+      labels:
+        app: transmission
+    spec:
+      containers:
+      - name: transmission
+        image: haugene/transmission-openvpn
+        securityContext:
+          capabilities:
+            add:
+              - NET_ADMIN
+        env:
+        - name: LOCAL_NETWORK
+          value: 10.42.0.0/16
+        - name: PUID
+          value: "1000"
+        - name: PGID
+          value: "1000"
+        - name: OPENVPN_PROVIDER
+          value: PIA
+        - name: TRANSMISSION_DOWNLOAD_DIR
+          value: "/downloads/transmission"
+        - name: OPENVPN_USERNAME
+          valueFrom:
+            secretKeyRef:
+              name: pia-auth
+              key: username
+        - name: OPENVPN_PASSWORD
+          valueFrom:
+            secretKeyRef:
+              name: pia-auth
+              key: password
+        ports:
+        - name: web
+          containerPort: 9091
+        volumeMounts:
+        - name: media-volume
+          mountPath: "/downloads/transmission"
+          subPath: "downloads/transmission"
+      volumes:
+      - name: media-volume
+        persistentVolumeClaim:
+          claimName: media-pvc
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: transmission
+spec:
+  type: ClusterIP
+  ports:
+    - name: web
+      port: 9091
+      targetPort: 9091
+
+  selector:
+    app: transmission
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: transmission-ingress-route
+  namespace: default
+spec:
+  entryPoints:
+    - web
+  routes:
+  - match: Host(`transmission.dezendorf.net`)
+    kind: Rule
+    middlewares:
+    - name: redirecthttps
+    services:
+    - name: transmission
+      port: 9091
+---
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: transmission-websecure-route
+  namespace: default
+spec:
+  entryPoints:
+    - websecure
+  routes:
+  - match: Host(`transmission.dezendorf.net`)
+    kind: Rule
+    services:
+    - name: transmission
+      port: 9091
+  tls:
+    certResolver: myresolver