diff --git a/deploy/arrs-suite/kustomization.yaml b/deploy/arrs-suite/kustomization.yaml new file mode 100644 index 0000000..21c0c8e --- /dev/null +++ b/deploy/arrs-suite/kustomization.yaml @@ -0,0 +1,14 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - namespace.yaml + - shared-downloads-pvc.yaml + - radarr-config-pvc.yaml + - sonarr-config-pvc.yaml + - sonarr-deploy.yaml + - radarr-deploy.yaml + - sonarr-svc.yaml + - radarr-svc.yaml + - sonarr-ingress.yaml + - radarr-ingress.yaml diff --git a/deploy/arrs-suite/namespace.yaml b/deploy/arrs-suite/namespace.yaml new file mode 100644 index 0000000..167a2cb --- /dev/null +++ b/deploy/arrs-suite/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: jellyfin diff --git a/deploy/arrs-suite/radarr-config-pvc.yaml b/deploy/arrs-suite/radarr-config-pvc.yaml new file mode 100644 index 0000000..26b68ad --- /dev/null +++ b/deploy/arrs-suite/radarr-config-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: radarr-config + namespace: jellyfin +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/deploy/arrs-suite/radarr-deploy.yaml b/deploy/arrs-suite/radarr-deploy.yaml new file mode 100644 index 0000000..3bfbac5 --- /dev/null +++ b/deploy/arrs-suite/radarr-deploy.yaml @@ -0,0 +1,45 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: radarr + namespace: jellyfin +spec: + replicas: 1 + selector: + matchLabels: + app: radarr + template: + metadata: + labels: + app: radarr + spec: + containers: + - name: radarr + image: lscr.io/linuxserver/radarr:latest + ports: + - containerPort: 7878 + env: + - name: PUID + value: "0" + - name: PGID + value: "0" + - name: TZ + value: Europe/Rome + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /movies + subPath: movies + - name: downloads + mountPath: /downloads + volumes: + - name: config + persistentVolumeClaim: + claimName: radarr-config + - name: media + persistentVolumeClaim: + claimName: media-rwx-pvc + - name: downloads + persistentVolumeClaim: + claimName: deluge-downloads diff --git a/deploy/arrs-suite/radarr-ingress.yaml b/deploy/arrs-suite/radarr-ingress.yaml new file mode 100644 index 0000000..6696493 --- /dev/null +++ b/deploy/arrs-suite/radarr-ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: radarr-ingress + namespace: jellyfin + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + tls: + - hosts: + - radarr.beatrice.wtf + secretName: radarr-tls + rules: + - host: radarr.beatrice.wtf + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: radarr + port: + number: 80 diff --git a/deploy/arrs-suite/radarr-svc.yaml b/deploy/arrs-suite/radarr-svc.yaml new file mode 100644 index 0000000..f97aa01 --- /dev/null +++ b/deploy/arrs-suite/radarr-svc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: radarr + namespace: jellyfin +spec: + selector: + app: radarr + ports: + - protocol: TCP + port: 80 + targetPort: 7878 diff --git a/deploy/arrs-suite/shared-downloads-pvc.yaml b/deploy/arrs-suite/shared-downloads-pvc.yaml new file mode 100644 index 0000000..e2452d2 --- /dev/null +++ b/deploy/arrs-suite/shared-downloads-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: deluge-downloads + namespace: jellyfin +spec: + accessModes: + - ReadWriteMany + storageClassName: longhorn + resources: + requests: + storage: 100Gi diff --git a/deploy/arrs-suite/sonarr-config-pvc.yaml b/deploy/arrs-suite/sonarr-config-pvc.yaml new file mode 100644 index 0000000..9eb120c --- /dev/null +++ b/deploy/arrs-suite/sonarr-config-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: sonarr-config + namespace: jellyfin +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/deploy/arrs-suite/sonarr-deploy.yaml b/deploy/arrs-suite/sonarr-deploy.yaml new file mode 100644 index 0000000..f05a366 --- /dev/null +++ b/deploy/arrs-suite/sonarr-deploy.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: sonarr + namespace: jellyfin +spec: + replicas: 1 + selector: + matchLabels: + app: sonarr + template: + metadata: + labels: + app: sonarr + spec: + containers: + - name: sonarr + image: lscr.io/linuxserver/sonarr:latest + ports: + - containerPort: 8989 + env: + - name: PUID + value: "0" + - name: PGID + value: "0" + - name: TZ + value: Europe/Rome + volumeMounts: + - name: config + mountPath: /config + - name: media + mountPath: /tv + subPath: series + - name: media + mountPath: /anime + subPath: anime + - name: downloads + mountPath: /downloads + volumes: + - name: config + persistentVolumeClaim: + claimName: sonarr-config + - name: media + persistentVolumeClaim: + claimName: media-rwx-pvc + - name: downloads + persistentVolumeClaim: + claimName: deluge-downloads diff --git a/deploy/arrs-suite/sonarr-ingress.yaml b/deploy/arrs-suite/sonarr-ingress.yaml new file mode 100644 index 0000000..ada5985 --- /dev/null +++ b/deploy/arrs-suite/sonarr-ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: sonarr-ingress + namespace: jellyfin + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + tls: + - hosts: + - sonarr.beatrice.wtf + secretName: sonarr-tls + rules: + - host: sonarr.beatrice.wtf + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: sonarr + port: + number: 80 diff --git a/deploy/arrs-suite/sonarr-svc.yaml b/deploy/arrs-suite/sonarr-svc.yaml new file mode 100644 index 0000000..a703950 --- /dev/null +++ b/deploy/arrs-suite/sonarr-svc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: sonarr + namespace: jellyfin +spec: + selector: + app: sonarr + ports: + - protocol: TCP + port: 80 + targetPort: 8989 diff --git a/deploy/deluge/deluge-config-pvc.yaml b/deploy/deluge/deluge-config-pvc.yaml new file mode 100644 index 0000000..8414964 --- /dev/null +++ b/deploy/deluge/deluge-config-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: deluge-config + namespace: jellyfin +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/deploy/deluge/deluge-deploy.yaml b/deploy/deluge/deluge-deploy.yaml new file mode 100644 index 0000000..5c6e644 --- /dev/null +++ b/deploy/deluge/deluge-deploy.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deluge + namespace: jellyfin +spec: + replicas: 1 + selector: + matchLabels: + app: deluge + template: + metadata: + labels: + app: deluge + spec: + containers: + - name: deluge + image: lscr.io/linuxserver/deluge:latest + ports: + - containerPort: 8112 + protocol: TCP + - containerPort: 6881 + protocol: TCP + - containerPort: 6881 + protocol: UDP + - containerPort: 58846 + protocol: TCP + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: Etc/UTC + - name: DELUGE_LOGLEVEL + value: "error" + volumeMounts: + - name: config + mountPath: /config + - name: downloads + mountPath: /downloads + volumes: + - name: config + persistentVolumeClaim: + claimName: deluge-config + - name: downloads + persistentVolumeClaim: + claimName: deluge-downloads diff --git a/deploy/deluge/deluge-ingress.yaml b/deploy/deluge/deluge-ingress.yaml new file mode 100644 index 0000000..6411b8f --- /dev/null +++ b/deploy/deluge/deluge-ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: deluge-ingress + namespace: jellyfin + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + tls: + - hosts: + - torrent.beatrice.wtf + secretName: deluge-tls + rules: + - host: torrent.beatrice.wtf + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: deluge + port: + number: 80 diff --git a/deploy/deluge/deluge-svc.yaml b/deploy/deluge/deluge-svc.yaml new file mode 100644 index 0000000..6c3a861 --- /dev/null +++ b/deploy/deluge/deluge-svc.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Service +metadata: + name: deluge + namespace: jellyfin +spec: + selector: + app: deluge + ports: + - name: web + protocol: TCP + port: 80 + targetPort: 8112 + - name: torrent-tcp + protocol: TCP + port: 6881 + targetPort: 6881 + - name: torrent-udp + protocol: UDP + port: 6881 + targetPort: 6881 + - name: daemon + protocol: TCP + port: 58846 + targetPort: 58846 diff --git a/deploy/jackett/flaresolverr-deploy.yaml b/deploy/jackett/flaresolverr-deploy.yaml new file mode 100644 index 0000000..5d04e07 --- /dev/null +++ b/deploy/jackett/flaresolverr-deploy.yaml @@ -0,0 +1,30 @@ +# Flaresolverr Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: flaresolverr + namespace: jellyfin +spec: + replicas: 1 + selector: + matchLabels: + app: flaresolverr + template: + metadata: + labels: + app: flaresolverr + spec: + containers: + - name: flaresolverr + image: ghcr.io/flaresolverr/flaresolverr:latest + ports: + - containerPort: 8191 + env: + - name: LOG_LEVEL + value: "info" + - name: LOG_HTML + value: "false" + - name: CAPTCHA_SOLVER + value: "none" + - name: TZ + value: "Europe/Rome" diff --git a/deploy/jackett/flaresolverr-ingress.yaml b/deploy/jackett/flaresolverr-ingress.yaml new file mode 100644 index 0000000..292462d --- /dev/null +++ b/deploy/jackett/flaresolverr-ingress.yaml @@ -0,0 +1,25 @@ +# Optional Flaresolverr Ingress +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: flaresolverr-ingress + namespace: jellyfin + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + tls: + - hosts: + - flaresolverr.beatrice.wtf + secretName: flaresolverr-tls + rules: + - host: flaresolverr.beatrice.wtf + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: flaresolverr + port: + number: 80 diff --git a/deploy/jackett/flaresolverr-svc.yaml b/deploy/jackett/flaresolverr-svc.yaml new file mode 100644 index 0000000..99ff201 --- /dev/null +++ b/deploy/jackett/flaresolverr-svc.yaml @@ -0,0 +1,14 @@ +# Flaresolverr Service +apiVersion: v1 +kind: Service +metadata: + name: flaresolverr + namespace: jellyfin +spec: + selector: + app: flaresolverr + ports: + - name: http + protocol: TCP + port: 80 + targetPort: 8191 diff --git a/deploy/jackett/jackett-blackhole-pvc.yaml b/deploy/jackett/jackett-blackhole-pvc.yaml new file mode 100644 index 0000000..2004959 --- /dev/null +++ b/deploy/jackett/jackett-blackhole-pvc.yaml @@ -0,0 +1,13 @@ +# PVC for Jackett "blackhole" (downloads) folder +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jackett-blackhole + namespace: jellyfin +spec: + accessModes: + - ReadWriteMany + storageClassName: longhorn + resources: + requests: + storage: 10Gi diff --git a/deploy/jackett/jackett-config-pvc.yaml b/deploy/jackett/jackett-config-pvc.yaml new file mode 100644 index 0000000..59a8db5 --- /dev/null +++ b/deploy/jackett/jackett-config-pvc.yaml @@ -0,0 +1,13 @@ +# PVC for Jackett configuration +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: jackett-config + namespace: jellyfin +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 10Gi diff --git a/deploy/jackett/jackett-deploy.yaml b/deploy/jackett/jackett-deploy.yaml new file mode 100644 index 0000000..4261e92 --- /dev/null +++ b/deploy/jackett/jackett-deploy.yaml @@ -0,0 +1,44 @@ +# Jackett Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jackett + namespace: jellyfin +spec: + replicas: 1 + selector: + matchLabels: + app: jackett + template: + metadata: + labels: + app: jackett + spec: + containers: + - name: jackett + image: lscr.io/linuxserver/jackett:latest + ports: + - containerPort: 9117 + env: + - name: PUID + value: "1000" + - name: PGID + value: "1000" + - name: TZ + value: "Etc/UTC" + - name: AUTO_UPDATE + value: "true" + - name: RUN_OPTS + value: "" + volumeMounts: + - name: config + mountPath: /config + - name: blackhole + mountPath: /downloads + volumes: + - name: config + persistentVolumeClaim: + claimName: jackett-config + - name: blackhole + persistentVolumeClaim: + claimName: jackett-blackhole diff --git a/deploy/jackett/jackett-ingress.yaml b/deploy/jackett/jackett-ingress.yaml new file mode 100644 index 0000000..8f30aaf --- /dev/null +++ b/deploy/jackett/jackett-ingress.yaml @@ -0,0 +1,25 @@ +# Optional Jackett Ingress +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jackett-ingress + namespace: jellyfin + annotations: + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + tls: + - hosts: + - jackett.beatrice.wtf + secretName: jackett-tls + rules: + - host: jackett.beatrice.wtf + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jackett + port: + number: 80 diff --git a/deploy/jackett/jackett-svc.yaml b/deploy/jackett/jackett-svc.yaml new file mode 100644 index 0000000..6631760 --- /dev/null +++ b/deploy/jackett/jackett-svc.yaml @@ -0,0 +1,14 @@ +# Jackett Service +apiVersion: v1 +kind: Service +metadata: + name: jackett + namespace: jellyfin +spec: + selector: + app: jackett + ports: + - name: http + protocol: TCP + port: 80 + targetPort: 9117 diff --git a/deploy/jackett/kustomization.yaml b/deploy/jackett/kustomization.yaml new file mode 100644 index 0000000..1d24d53 --- /dev/null +++ b/deploy/jackett/kustomization.yaml @@ -0,0 +1,13 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - namespace.yaml + - jackett-blackhole-pvc.yaml + - jackett-config-pvc.yaml + - jackett-deploy.yaml + - jackett-svc.yaml + - jackett-ingress.yaml + - flaresolverr-deploy.yaml + - flaresolverr-svc.yaml + - flaresolverr-ingress.yaml \ No newline at end of file diff --git a/deploy/jackett/namespace.yaml b/deploy/jackett/namespace.yaml new file mode 100644 index 0000000..167a2cb --- /dev/null +++ b/deploy/jackett/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: jellyfin