--- apiVersion: v1 kind: Namespace metadata: name: servarr-system labels: app.kubernetes.io/managed-by: argocd app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr --- apiVersion: v1 kind: ConfigMap metadata: name: postgres-config namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: postgres data: POSTGRES_USER: "postgres" POSTGRES_PASSWORD: "postgres123" POSTGRES_DB: "servarr" --- apiVersion: v1 kind: ConfigMap metadata: name: prowlarr-config namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: prowlarr data: prowlarr-config.json: | {"apiKey":"c04914c6bfad445a3edc23e5edbca4d1","applications":[{"apiKey":"2bac5d00dca43258313c734821a15c4c","baseUrl":"http://sonarr.servarr-system.svc:8989","name":"Sonarr","prowlarrUrl":"http://prowlarr.servarr-system.svc:9696","syncLevel":"fullSync"},{"apiKey":"4fac7d10eca54269424d835a2edc15d2","baseUrl":"http://radarr.servarr-system.svc:7878","name":"Radarr","prowlarrUrl":"http://prowlarr.servarr-system.svc:9696","syncLevel":"fullSync"}],"indexers":[{"enable":true,"name":"nCore","priority":25}]} --- apiVersion: v1 kind: ConfigMap metadata: name: qbittorrent-config namespace: servarr-system labels: app.kubernetes.io/instance: preparr app.kubernetes.io/name: preparr app: qbittorrent data: qbittorrent-config.json: | {} --- apiVersion: v1 kind: ConfigMap metadata: name: radarr-config namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: radarr data: radarr-config.json: | {"apiKey":"4fac7d10eca54269424d835a2edc15d2","downloadClients":[{"configContract":"QBittorrentSettings","enable":true,"fields":[{"name":"host","value":"192.168.0.202"},{"name":"port","value":8080},{"name":"username","value":"admin"},{"name":"password","value":"doodooP4ssWD001!"},{"name":"category","value":"movies"}],"implementation":"QBittorrent","implementationName":"qBittorrent","name":"qBittorrent","priority":1}],"prowlarrSync":true,"qualityProfiles":[{"cutoff":1080,"items":[{"allowed":true,"quality":{"id":1,"name":"Bluray-1080p"}},{"allowed":true,"quality":{"id":2,"name":"WEBDL-1080p"}}],"name":"HD - 1080p","upgradeAllowed":true}],"rootFolders":[{"accessible":true,"path":"/movies"}]} --- apiVersion: v1 kind: ConfigMap metadata: name: sonarr-config namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: sonarr data: sonarr-config.json: | {"apiKey":"2bac5d00dca43258313c734821a15c4c","downloadClients":[{"configContract":"QBittorrentSettings","enable":true,"fields":[{"name":"host","value":"192.168.0.202"},{"name":"port","value":8080},{"name":"username","value":"admin"},{"name":"password","value":"doodooP4ssWD001!"},{"name":"category","value":"tv"}],"implementation":"QBittorrent","implementationName":"qBittorrent","name":"qBittorrent","priority":1}],"prowlarrSync":true,"qualityProfiles":[{"cutoff":1080,"items":[{"allowed":true,"quality":{"id":1,"name":"HDTV-1080p"}},{"allowed":true,"quality":{"id":2,"name":"WEBDL-1080p"}}],"name":"HD - 1080p","upgradeAllowed":true}],"rootFolders":[{"accessible":true,"path":"/tv"}]} --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: radarr-config-pvc namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: radarr spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 1Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonarr-config-pvc namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: sonarr spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 1Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qbittorrent-config-pvc namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: qbittorrent spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 1Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: prowlarr-config-pvc namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: prowlarr spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 1Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgres-pvc namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: postgres spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 8Gi --- apiVersion: v1 kind: Service metadata: name: postgres namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: postgres spec: type: ClusterIP selector: app: postgres ports: - port: 5432 targetPort: 5432 --- apiVersion: v1 kind: Service metadata: name: prowlarr namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: prowlarr annotations: external-dns.alpha.kubernetes.io/hostname: prowlarr.home spec: type: LoadBalancer loadBalancerIP: 192.168.0.201 selector: app: prowlarr ports: - name: webui port: 9696 targetPort: 9696 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: qbittorrent namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: qbittorrent annotations: external-dns.alpha.kubernetes.io/hostname: qbittorrent.home spec: type: ClusterIP selector: app: qbittorrent ports: - name: webui port: 8080 targetPort: 8080 - name: bittorrent port: 6881 targetPort: 6881 --- apiVersion: v1 kind: Service metadata: name: radarr namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: radarr annotations: external-dns.alpha.kubernetes.io/hostname: radarr.home spec: type: ClusterIP selector: app: radarr ports: - name: webui port: 7878 targetPort: 7878 protocol: TCP --- apiVersion: v1 kind: Service metadata: name: sonarr namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: sonarr annotations: external-dns.alpha.kubernetes.io/hostname: sonarr.home spec: type: ClusterIP selector: app: sonarr ports: - name: webui port: 8989 targetPort: 8989 protocol: TCP --- apiVersion: apps/v1 kind: Deployment metadata: name: postgres namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: postgres spec: replicas: 1 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers: - name: postgres image: "postgres:16-alpine" envFrom: - configMapRef: name: postgres-config ports: - containerPort: 5432 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 256Mi volumeMounts: - name: postgres-data mountPath: /var/lib/postgresql/data subPath: data readinessProbe: exec: command: - pg_isready - -U - postgres initialDelaySeconds: 5 periodSeconds: 5 volumes: - name: postgres-data persistentVolumeClaim: claimName: postgres-pvc --- apiVersion: apps/v1 kind: Deployment metadata: name: prowlarr namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: prowlarr spec: replicas: 1 selector: matchLabels: app: prowlarr template: metadata: labels: app: prowlarr spec: securityContext: fsGroup: 1000 initContainers: - name: preparr-init image: ghcr.io/robbeverhelst/preparr:latest imagePullPolicy: IfNotPresent env: - name: POSTGRES_HOST value: "postgres" - name: POSTGRES_PORT value: "5432" - name: POSTGRES_USER value: "postgres" - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: preparr-postgresql key: password - name: POSTGRES_DB value: "servarr" - name: SERVARR_URL value: "http://192.168.0.201:9696" - name: SERVARR_TYPE value: "prowlarr" - name: SERVARR_ADMIN_USER valueFrom: secretKeyRef: name: default-user key: username - name: SERVARR_ADMIN_PASSWORD valueFrom: secretKeyRef: name: default-user key: password - name: SERVARR_API_KEY value: "c04914c6bfad445a3edc23e5edbca4d1" - name: CONFIG_PATH value: "/tmp/config/prowlarr-config.json" command: ["/bin/sh", "-c", "if [ ! -f /config/prowlarr-config.json ]; then cp /tmp/config/prowlarr-config.json /config/prowlarr-config.json; fi; bun run dist/index.js --init"] volumeMounts: - name: prowlarr-config-volume mountPath: /config - name: prowlarr-config-file mountPath: /tmp/config containers: - name: prowlarr image: "linuxserver/prowlarr:latest" env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Europe/Budapest" ports: - containerPort: 9696 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 256Mi volumeMounts: - name: prowlarr-config-volume mountPath: /config readinessProbe: httpGet: path: /api/v1/system/status port: 9696 httpHeaders: - name: X-Api-Key value: "c04914c6bfad445a3edc23e5edbca4d1" initialDelaySeconds: 60 periodSeconds: 10 volumes: - name: prowlarr-config-volume persistentVolumeClaim: claimName: prowlarr-config-pvc - name: prowlarr-config-file configMap: name: prowlarr-config items: - key: prowlarr-config.json path: prowlarr-config.json --- apiVersion: apps/v1 kind: Deployment metadata: name: qbittorrent namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: qbittorrent spec: replicas: 1 selector: matchLabels: app: qbittorrent template: metadata: labels: app: qbittorrent spec: initContainers: - name: preparr-init image: ghcr.io/robbeverhelst/preparr:latest imagePullPolicy: IfNotPresent securityContext: runAsUser: 0 runAsGroup: 0 env: - name: POSTGRES_HOST value: "postgres" - name: POSTGRES_PORT value: "5432" - name: POSTGRES_USER value: "postgres" - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: preparr-postgresql key: password - name: POSTGRES_DB value: "servarr" - name: SERVARR_TYPE value: "qbittorrent" - name: QBITTORRENT_USER value: "admin" - name: QBITTORRENT_PASSWORD value: "doodooP4ssWD001!" - name: SERVARR_ADMIN_USER valueFrom: secretKeyRef: name: default-user key: username - name: SERVARR_ADMIN_PASSWORD valueFrom: secretKeyRef: name: default-user key: password - name: QBITTORRENT_URL value: "http://192.168.0.199:8080" - name: CONFIG_PATH value: "/config/qbittorrent-config.json" - name: QBITTORRENT_DOWNLOADS_PATH value: "/downloads" command: ["/bin/sh", "-c", "if [ ! -f /config/qbittorrent-config.json ]; then cp /tmp/config/qbittorrent-config.json /config/qbittorrent-config.json; fi; bun run dist/index.js --init"] volumeMounts: - name: qbittorrent-config-volume mountPath: /config - name: qbittorrent-config-file mountPath: /tmp/config containers: - name: qbittorrent image: "linuxserver/qbittorrent:latest" env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Europe/Budapest" - name: WEBUI_PORT value: "8080" - name: CONFIG_PATH value: "/config/qbittorrent-config.json" ports: - containerPort: 8080 - containerPort: 6881 resources: limits: cpu: 1000m memory: 1Gi requests: cpu: 100m memory: 256Mi volumeMounts: - name: qbittorrent-config-volume mountPath: /config - mountPath: /mnt/2_hdd name: 2hdd - mountPath: /mnt/1_hdd name: 1hdd readinessProbe: httpGet: path: / port: 8080 initialDelaySeconds: 30 periodSeconds: 10 volumes: - name: qbittorrent-config-volume persistentVolumeClaim: claimName: qbittorrent-config-pvc - name: qbittorrent-config-file configMap: name: qbittorrent-config items: - key: qbittorrent-config.json path: qbittorrent-config.json - hostPath: path: /mnt/2_hdd type: Directory name: 2hdd - hostPath: path: /mnt/1_hdd type: Directory name: 1hdd --- apiVersion: apps/v1 kind: Deployment metadata: name: radarr namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: radarr spec: replicas: 1 selector: matchLabels: app: radarr template: metadata: labels: app: radarr spec: securityContext: fsGroup: 1000 initContainers: - name: preparr-init image: ghcr.io/robbeverhelst/preparr:latest imagePullPolicy: IfNotPresent env: - name: POSTGRES_HOST value: "postgres" - name: POSTGRES_PORT value: "5432" - name: POSTGRES_USER value: "postgres" - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: preparr-postgresql key: password - name: POSTGRES_DB value: "servarr" - name: SERVARR_URL value: "http://192.168.0.203:7878" - name: SERVARR_TYPE value: "radarr" - name: SERVARR_ADMIN_USER valueFrom: secretKeyRef: name: default-user key: username - name: SERVARR_ADMIN_PASSWORD valueFrom: secretKeyRef: name: default-user key: password - name: SERVARR_API_KEY value: "4fac7d10eca54269424d835a2edc15d2" - name: CONFIG_PATH value: "/config/radarr-config.json" command: ["/bin/sh", "-c", "if [ ! -f /config/radarr-config.json ]; then cp /tmp/config/radarr-config.json /config/radarr-config.json; fi; bun run dist/index.js --init"] volumeMounts: - name: radarr-config-volume mountPath: /config - name: radarr-config-file mountPath: /tmp/config - mountPath: /mnt/2_hdd name: 2hdd containers: - name: radarr image: "linuxserver/radarr:latest" env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Europe/Budapest" ports: - containerPort: 7878 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 256Mi volumeMounts: - name: radarr-config-volume mountPath: /config - mountPath: /mnt/2_hdd name: 2hdd readinessProbe: httpGet: path: /api/v3/system/status port: 7878 httpHeaders: - name: X-Api-Key value: "4fac7d10eca54269424d835a2edc15d2" initialDelaySeconds: 60 periodSeconds: 10 volumes: - name: radarr-config-volume persistentVolumeClaim: claimName: radarr-config-pvc - name: radarr-config-file configMap: name: radarr-config items: - key: radarr-config.json path: radarr-config.json - hostPath: path: /mnt/2_hdd type: Directory name: 2hdd --- # Source: preparr/templates/sonarr.yaml apiVersion: apps/v1 kind: Deployment metadata: name: sonarr namespace: servarr-system labels: app.kubernetes.io/name: preparr app.kubernetes.io/instance: preparr app: sonarr spec: replicas: 1 selector: matchLabels: app: sonarr template: metadata: labels: app: sonarr spec: securityContext: fsGroup: 1000 initContainers: - name: preparr-init image: ghcr.io/robbeverhelst/preparr:latest imagePullPolicy: IfNotPresent env: - name: POSTGRES_HOST value: "postgres" - name: POSTGRES_PORT value: "5432" - name: POSTGRES_USER value: "postgres" - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: preparr-postgresql key: password - name: POSTGRES_DB value: "servarr" - name: SERVARR_URL value: "http://192.168.0.202:8989" - name: SERVARR_TYPE value: "sonarr" - name: SERVARR_ADMIN_USER valueFrom: secretKeyRef: name: default-user key: username - name: SERVARR_ADMIN_PASSWORD valueFrom: secretKeyRef: name: default-user key: password - name: SERVARR_API_KEY value: "2bac5d00dca43258313c734821a15c4c" - name: CONFIG_PATH value: "/config/sonarr-config.json" command: ["/bin/sh", "-c", "if [ ! -f /config/sonarr-config.json ]; then cp /tmp/config/sonarr-config.json /config/sonarr-config.json; fi; bun run dist/index.js --init"] volumeMounts: - name: sonarr-config-volume mountPath: /config - name: sonarr-config-file mountPath: /tmp/config - mountPath: /mnt/1_hdd name: 1hdd containers: - name: sonarr image: "linuxserver/sonarr:latest" imagePullPolicy: IfNotPresent env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Europe/Budapest" ports: - name: webui containerPort: 8989 protocol: TCP resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 256Mi volumeMounts: - name: sonarr-config-volume mountPath: /config - mountPath: /mnt/1_hdd name: 1hdd readinessProbe: httpGet: path: /api/v3/system/status port: 8989 httpHeaders: - name: X-Api-Key value: "2bac5d00dca43258313c734821a15c4c" initialDelaySeconds: 60 periodSeconds: 10 volumes: - name: sonarr-config-volume persistentVolumeClaim: claimName: sonarr-config-pvc - name: sonarr-config-file configMap: name: sonarr-config items: - key: sonarr-config.json path: sonarr-config.json - hostPath: path: /mnt/1_hdd type: Directory name: 1hdd ---