diff --git a/kubernetes/apps/default/recyclarr/app/config/recyclarr.yml b/kubernetes/apps/default/recyclarr/app/config/recyclarr.yml new file mode 100644 index 000000000..51337c736 --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/config/recyclarr.yml @@ -0,0 +1,200 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/recyclarr/recyclarr/master/schemas/config-schema.json +sonarr: + sonarr: + base_url: http://sonarr.default.svc.cluster.local + api_key: !env_var SONARR_API_KEY + + delete_old_custom_formats: true + replace_existing_custom_formats: true + + quality_definition: + type: series + + quality_profiles: + - name: Web 1080p + reset_unmatched_scores: + enabled: true + upgrade: + allowed: true + until_quality: Web-1080p + until_score: 10000 + min_format_score: 0 + quality_sort: top + qualities: + - name: Web-1080p + qualities: + - WEBDL-1080p + - WEBRip-1080p + - name: HDTV-1080p + - name: Web-720p + qualities: + - WEBDL-720p + - WEBRip-720p + - name: HDTV-720p + - name: Web-480p + qualities: + - WEBDL-480p + - WEBRip-480p + - name: DVD + - name: SDTV + - name: Web 720p + reset_unmatched_scores: + enabled: true + upgrade: + allowed: true + until_quality: Web-720p + until_score: 10000 + min_format_score: 0 + quality_sort: top + qualities: + - name: Web-720p + qualities: + - WEBDL-720p + - WEBRip-720p + - name: HDTV-720p + - name: Web-480p + qualities: + - WEBDL-480p + - WEBRip-480p + - name: DVD + - name: SDTV + custom_formats: + - trash_ids: + # Unwanted + - 85c61753df5da1fb2aab6f2a47426b09 # BR-DISK + - 9c11cd3f07101cdba90a2d81cf0e56b4 # LQ + - 47435ece6b99a0b477caf360e79ba0bb # x265 (HD) + - fbcb31d8dabd2a319072b84fc0b7249c # Extras + # Misc + - ec8fa7296b64e8cd390a1600981f3923 # Repack/Proper + - eb3d5cc0a2be0db205fb823640db6a3c # Repack v2 + - 44e7c4de10ae50265753082e5dc76047 # Repack v3 + # Streaming Services + - d660701077794679fd59e8bdf4ce3a29 # AMZN + - f67c9ca88f463a48346062e8ad07713f # ATVP + - 4e9a630db98d5391aec1368a0256e2fe # CRAV + - 36b72f59f4ea20aad9316f475f2d9fbb # DCU + - 89358767a60cc28783cdc3d0be9388a4 # DSNP + - 7a235133c87f7da4c8cccceca7e3c7a6 # HBO + - a880d6abc21e7c16884f3ae393f84179 # HMAX + - f6cce30f1733d5c8194222a7507909bb # HULU + - 0ac24a2a68a9700bcb7eeca8e5cd644c # iT + - 81d1fbf600e2540cee87f3a23f9d3c1c # MAX + - d34870697c9db575f17700212167be23 # NF + - b2b980877494b560443631eb1f473867 # NLZ + - fb1a91cdc0f26f7ca0696e0e95274645 # OViD + - 1656adc6d7bb2c8cca6acfb6592db421 # PCOK + - c67a75ae4a1715f2bb4d492755ba4195 # PMTP + - 3ac5d84fce98bab1b531393e9c82f467 # QIBI + - c30d2958827d1867c73318a5a2957eb1 # RED + - ae58039e1319178e6be73caab5c42166 # SHO + - 1efe8da11bfd74fbbcd4d8117ddb9213 # STAN + - 5d2317d99af813b6529c7ebf01c83533 # VDL + - 77a7b25585c18af08f60b1547bb9b4fb # CC + # HQ Source Groups + - e6258996055b9fbab7e9cb2f75819294 # WEB Tier 01 + - 58790d4e2fdcd9733aa7ae68ba2bb503 # WEB Tier 02 + - d84935abd3f8556dcd51d4f27e22d0a6 # WEB Tier 03 + - d0c516558625b04b363fa6c5c2c7cfd4 # WEB Scene + quality_profiles: + - name: Web 1080p + - name: Web 720p + +radarr: + radarr: + base_url: http://radarr.default.svc.cluster.local + api_key: !env_var RADARR_API_KEY + + delete_old_custom_formats: true + replace_existing_custom_formats: true + + quality_definition: + type: movie + + quality_profiles: + - name: Remux/Web 1080p + reset_unmatched_scores: + enabled: true + upgrade: + allowed: true + until_quality: Remux-1080p + until_score: 10000 + min_format_score: 0 + quality_sort: top + qualities: + - name: Remux-1080p + - name: Bluray-1080p + enabled: false + - name: Web-1080p + qualities: + - WEBDL-1080p + - WEBRip-1080p + - name: HDTV-1080p + custom_formats: + - trash_ids: + # Audio + - 496f355514737f7d83bf7aa4d24f8169 # TrueHD Atmos + - 2f22d89048b01681dde8afe203bf2e95 # DTS X + - 417804f7f2c4308c1f4c5d380d4c4475 # ATMOS (undefined) + - 1af239278386be2919e1bcee0bde047e # DD+ ATMOS + - 3cafb66171b47f226146a0770576870f # TrueHD + - dcf3ec6938fa32445f590a4da84256cd # DTS-HD MA + - a570d4a0e56a2874b64e5bfa55202a1b # FLAC + - e7c2fcae07cbada050a0af3357491d7b # PCM + - 8e109e50e0a0b83a5098b056e13bf6db # DTS-HD HRA + - 185f1dd7264c4562b9022d963ac37424 # DD+ + - f9f847ac70a0af62ea4a08280b859636 # DTS-ES + - 1c1a4c5e823891c75bc50380a6866f73 # DTS + - 240770601cc226190c367ef59aba7463 # AAC + - c2998bd0d90ed5621d8df281e839436e # DD + # Movie Versions + - 0f12c086e289cf966fa5948eac571f44 # Hybrid + - 570bc9ebecd92723d2d21500f4be314c # Remaster + - eca37840c13c6ef2dd0262b141a5482f # 4K Remaster + - e0c07d59beb37348e975a930d5e50319 # Criterion Collection + - 9d27d9d2181838f76dee150882bdc58c # Masters of Cinema + - db9b4c4b53d312a3ca5f1378f6440fc9 # Vinegar Syndrome + - 957d0f44b592285f26449575e8b1167e # Special Edition + - eecf3a857724171f968a66cb5719e152 # IMAX + - 9f6cbff8cfe4ebbc1bde14c7b7bec0de # IMAX Enhanced + # HQ Release Groups + - 3a3ff47579026e76d6504ebea39390de # Remux Tier 01 + - 9f98181fe5a3fbeb0cc29340da2a468a # Remux Tier 02 + - 8baaf0b3142bf4d94c42a724f034e27a # Remux Tier 03 + - c20f169ef63c5f40c2def54abaf4438e # WEB Tier 01 + - 403816d65392c79236dcb6dd591aeda4 # WEB Tier 02 + - af94e0fe497124d1f9ce732069ec8c3b # WEB Tier 03 + # Misc + - e7718d7a3ce595f289bfee26adc178f5 # Repack/Proper + - ae43b294509409a6a13919dedd4764c4 # Repack2 + # Unwanted + - ed38b889b31be83fda192888e2286d83 # BR-DISK + - 90a6f9a284dff5103f6346090e6280c8 # LQ + - dc98083864ea246d05a42df0d05f81cc # x265 (HD) + - b8cd450cbfa689c0259a01d9e29ba3d6 # 3D + # Streaming Services + - cc5e51a9e85a6296ceefe097a77f12f4 # BCORE + - 2a6039655313bf5dab1e43523b62c374 # MA + - 16622a6911d1ab5d5b8b713d5b0036d4 # CRiT + quality_profiles: + - name: Remux/Web 1080p + - trash_ids: + # Streaming Services + - b3b3a6ac74ecbd56bcdbefa4799fb9df # AMZN + - 40e9380490e748672c2522eaaeb692f7 # ATVP + - f6ff65b3f4b464a79dcc75950fe20382 # CRAV + - 84272245b2988854bfb76a16e60baea5 # DSNP + - 509e5f41146e278f9eab1ddaceb34515 # HBO + - 5763d1b0ce84aff3b21038eea8e9b8ad # HMAX + - 526d445d4c16214309f0fd2b3be18a89 # Hulu + - 6a061313d22e51e0f25b7cd4dc065233 # MAX + - 170b1d363bd8516fbf3a3eb05d4faff6 # NF + - fbca986396c5e695ef7b2def3c755d01 # OViD + - bf7e73dd1d85b12cc527dc619761c840 # Pathe + - c9fd353f8f5f1baf56dc601c4cb29920 # PCOK + - e36a0ba1bc902b26ee40818a1d59b8bd # PMTP + - c2863d2a50c9acad1fb50e53ece60817 # STAN + quality_profiles: + - name: Remux/Web 1080p + score: 0 diff --git a/kubernetes/apps/default/recyclarr/app/externalsecret.yaml b/kubernetes/apps/default/recyclarr/app/externalsecret.yaml new file mode 100644 index 000000000..a764b8436 --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/externalsecret.yaml @@ -0,0 +1,26 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/external-secrets.io/externalsecret_v1beta1.json +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: recyclarr + namespace: default +spec: + secretStoreRef: + kind: ClusterSecretStore + name: onepassword-connect + target: + name: recyclarr-secret + creationPolicy: Owner + template: + engineVersion: v2 + data: + RADARR_API_KEY: "{{ .RADARR__API_KEY }}" + SONARR_API_KEY: "{{ .SONARR__API_KEY }}" + dataFrom: + - extract: + key: radarr + property: RADARR__API_KEY + - extract: + key: sonarr + property: SONARR__API_KEY diff --git a/kubernetes/apps/default/recyclarr/app/helmrelease.yaml b/kubernetes/apps/default/recyclarr/app/helmrelease.yaml index cde89b45e..35d177ae2 100644 --- a/kubernetes/apps/default/recyclarr/app/helmrelease.yaml +++ b/kubernetes/apps/default/recyclarr/app/helmrelease.yaml @@ -10,7 +10,7 @@ spec: chart: spec: chart: app-template - version: 1.5.1 + version: 2.0.3 sourceRef: kind: HelmRepository name: bjw-s @@ -27,31 +27,49 @@ spec: uninstall: keepHistory: false values: - controller: - type: cronjob - cronjob: - schedule: "@daily" - ttlSecondsAfterFinished: 86400 - restartPolicy: OnFailure - image: - repository: ghcr.io/recyclarr/recyclarr - tag: edge@sha256:47bef6aa6f247d57cf5c3666d0202f9ce8fd26bc7f5c4379cba84cfad3173c50 - command: ["/app/recyclarr/recyclarr"] - args: ["sync"] - envFrom: - - secretRef: - name: radarr-secret - - secretRef: - name: sonarr-secret + controllers: + main: + type: statefulset + annotations: + reloader.stakater.com/auto: "true" + containers: + main: + image: + repository: ghcr.io/recyclarr/recyclarr + tag: 6.0.2 + env: + TZ: ${TIMEZONE} + envFrom: + - secretRef: + name: recyclarr-secret + resources: + requests: + cpu: 10m + memory: 64M + limits: + memory: 128M + pod: + securityContext: + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + fsGroupChangePolicy: OnRootMismatch + statefulset: + volumeClaimTemplates: + - name: config + accessMode: ReadWriteOnce + size: 1Gi + storageClass: rook-ceph-block + globalMounts: + - path: /config service: main: enabled: false persistence: - config: - enabled: true + config-file: type: configMap name: recyclarr-configmap - subPath: recyclarr.yml - mountPath: /config/recyclarr.yml - defaultMode: 0775 - readOnly: true + globalMounts: + - path: /config/recyclarr.yml + subPath: recyclarr.yml + readOnly: true diff --git a/kubernetes/apps/default/recyclarr/app/kustomization.yaml b/kubernetes/apps/default/recyclarr/app/kustomization.yaml index 086c40055..64e10e029 100644 --- a/kubernetes/apps/default/recyclarr/app/kustomization.yaml +++ b/kubernetes/apps/default/recyclarr/app/kustomization.yaml @@ -1,14 +1,16 @@ --- -# yaml-language-server: $schema=https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/kustomization.json +# yaml-language-server: $schema=https://json.schemastore.org/kustomization apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: default resources: + - ./externalsecret.yaml - ./helmrelease.yaml + - ./volsync.yaml configMapGenerator: - name: recyclarr-configmap files: - - ./recyclarr.yml + - recyclarr.yml=./config/recyclarr.yml generatorOptions: disableNameSuffixHash: true annotations: diff --git a/kubernetes/apps/default/recyclarr/app/recyclarr.yml b/kubernetes/apps/default/recyclarr/app/recyclarr.yml deleted file mode 100644 index f6c9b6f94..000000000 --- a/kubernetes/apps/default/recyclarr/app/recyclarr.yml +++ /dev/null @@ -1,162 +0,0 @@ ---- -# A starter config to use with Trash Updater. Most values are set to "reasonable defaults". -# Update the values below as needed for your instance. You will be required to update the -# API Key and URL for each instance you want to use. -# -# Many optional settings have been omitted to keep this template simple. -# -# For more details on the configuration, see the Configuration Reference on the wiki here: -# https://github.com/rcdailey/trash-updater/wiki/Configuration-Reference - -sonarr: - standard: - base_url: http://sonarr.default.svc.cluster.local:8080 - api_key: !env_var SONARR__API_KEY - delete_old_custom_formats: true - quality_definition: - type: series - custom_formats: - - trash_ids: - # Streaming Services - - d660701077794679fd59e8bdf4ce3a29 # AMZN - - f67c9ca88f463a48346062e8ad07713f # ATVP - - 36b72f59f4ea20aad9316f475f2d9fbb # DCU - - 89358767a60cc28783cdc3d0be9388a4 # DSNP - - 7a235133c87f7da4c8cccceca7e3c7a6 # HBO - - a880d6abc21e7c16884f3ae393f84179 # HMAX - - f6cce30f1733d5c8194222a7507909bb # HULU - - 0ac24a2a68a9700bcb7eeca8e5cd644c # iT - - d34870697c9db575f17700212167be23 # NF - - 1656adc6d7bb2c8cca6acfb6592db421 # PCOK - - c67a75ae4a1715f2bb4d492755ba4195 # PMTP - - 3ac5d84fce98bab1b531393e9c82f467 # QIBI - - c30d2958827d1867c73318a5a2957eb1 # RED - - ae58039e1319178e6be73caab5c42166 # SHO - # Allowed Scene groups and tiered P2P groups - - d0c516558625b04b363fa6c5c2c7cfd4 # WEB Scene (allowed Scene groups) - - e6258996055b9fbab7e9cb2f75819294 # WEB Tier 01 - - 58790d4e2fdcd9733aa7ae68ba2bb503 # WEB Tier 02 - - d84935abd3f8556dcd51d4f27e22d0a6 # WEB Tier 03 - # Repacks / Propers - - ec8fa7296b64e8cd390a1600981f3923 # Repack/Proper - - eb3d5cc0a2be0db205fb823640db6a3c # Repack v2 - - 44e7c4de10ae50265753082e5dc76047 # Repack v3 - # HDR Metadata - - 7878c33f1963fefb3d6c8657d46c2f0a # DV HDR10 - - 1f733af03141f068a540eec352589a89 # DV HLG - - 27954b0a80aab882522a88a4d9eae1cd # DV SDR - - 6d0d8de7b57e35518ac0308b0ddf404e # DV - - bb019e1cd00f304f80971c965de064dc # HDR (undefined) - - 3e2c4e748b64a1a1118e0ea3f4cf6875 # HDR - - 3497799d29a085e2ac2df9d468413c94 # HDR10 - - a3d82cbef5039f8d295478d28a887159 # HDR10+ - - 17e889ce13117940092308f48b48b45b # HLG - - 2a7e3be05d3861d6df7171ec74cad727 # PQ - # Unwanted - - 32b367365729d530ca1c124a0b180c64 # Bad Dual Groups - - 85c61753df5da1fb2aab6f2a47426b09 # BR-DISK - - 9c14d194486c4014d422adc64092d794 # Dubs Only - - 9c11cd3f07101cdba90a2d81cf0e56b4 # LQ - - 82d40da2bc6923f41e14394075dd4b03 # No-RlsGroup - - e1a997ddb54e3ecbfe06341ad323c458 # Obfuscated - - 06d66ab109d4d2eddb2794d21526d140 # Retags - - 47435ece6b99a0b477caf360e79ba0bb # x265 (HD) - quality_profiles: - - name: Any - reset_unmatched_scores: true - - name: HD - reset_unmatched_scores: true - - name: SD - reset_unmatched_scores: true - -radarr: - standard: - base_url: http://radarr.default.svc.cluster.local:8080 - api_key: !env_var RADARR__API_KEY - delete_old_custom_formats: true - quality_definition: - type: movie - custom_formats: - - trash_ids: - - ff5bc9e8ce91d46c997ca3ac6994d6f8 # UHD FraMeSToR (set to 0, 1 or 3200) - quality_profiles: - - name: Any - score: 1 - - name: HD - score: 1 - - name: Remux - score: 1 - - trash_ids: - - 496f355514737f7d83bf7aa4d24f8169 # TrueHD Atmos - - 2f22d89048b01681dde8afe203bf2e95 # DTS X - - 417804f7f2c4308c1f4c5d380d4c4475 # ATMOS (undefined) - - 1af239278386be2919e1bcee0bde047e # DD+ Atmos - - 3cafb66171b47f226146a0770576870f # TrueHD - - dcf3ec6938fa32445f590a4da84256cd # DTS-HD MA - - a570d4a0e56a2874b64e5bfa55202a1b # FLAC - - e7c2fcae07cbada050a0af3357491d7b # PCM - - 8e109e50e0a0b83a5098b056e13bf6db # DTS-HD HRA - - 185f1dd7264c4562b9022d963ac37424 # DD+ - - f9f847ac70a0af62ea4a08280b859636 # DTS-ES - - 1c1a4c5e823891c75bc50380a6866f73 # DTS - - 240770601cc226190c367ef59aba7463 # ACC - - c2998bd0d90ed5621d8df281e839436e # DD - - e23edd2482476e595fb990b12e7c609c # DV HDR10 HDR/DV Custom Formats - - 58d6a88f13e2db7f5059c41047876f00 # DV - - 55d53828b9d81cbe20b02efd00aa0efd # DV HLG HDR/DV Custom Formats - - a3e19f8f627608af0211acd02bf89735 # DV SDR HDR/DV Custom Formats - - b974a6cd08c1066250f1f177d7aa1225 # HDR10Plus - - dfb86d5941bc9075d6af23b09c2aeecd # HDR10 - - e61e28db95d22bedcadf030b8f156d96 # HDR - - 2a4d9069cc1fe3242ff9bdaebed239bb # HDR (Undefined) - - 08d6d8834ad9ec87b1dc7ec8148e7a1f # PQ several HDR/DV Custom Formats - - 9364dd386c9b4a1100dde8264690add7 # HLG - - 0f12c086e289cf966fa5948eac571f44 # Hybrid - - 570bc9ebecd92723d2d21500f4be314c # Remaster - - eca37840c13c6ef2dd0262b141a5482f # 4K Remaster - - e0c07d59beb37348e975a930d5e50319 # Criterion Collection - - 957d0f44b592285f26449575e8b1167e # Special Edition - - eecf3a857724171f968a66cb5719e152 # IMAX - - 9f6cbff8cfe4ebbc1bde14c7b7bec0de # IMAX Enhanced - - 403f3f6266b90439cacc1e07cae4dc2d # HQ-Remux - - 26fa26253af4001701fedb56cec376dc # HQ-Webdl - - 66aaa8c2c03c0191a95f0d655b75ab10 # UHD CtrlHD - - 4da96773192a51cf96178212642ca3bb # UHD LEGi0N - - 96848626e1570c122aba8642fe2714a2 # UHD HQMUX - - ffebc267e9c98d3d383f37b238550079 # UHD W4NK3R - - ac49fdbf6a662d380556f40ff4856f29 # UHD WEBDV - - afeb99e5db09290546f742503ce1cdb6 # UHD DON - - e7718d7a3ce595f289bfee26adc178f5 # Repack - - ed38b889b31be83fda192888e2286d83 # BR-DISK -10000 - - 90cedc1fea7ea5d11298bebd3d1d3223 # EVO (no WEBDL) -1000 - - 90a6f9a284dff5103f6346090e6280c8 # LQ -10000 - - b8cd450cbfa689c0259a01d9e29ba3d6 # 3D -10000 - - 7357cf5161efbf8c4d5d0c30b4815ee2 # Obfuscated - - ae9b7c9ebde1f3bd336a8cbd1ec4c5e5 # No-RlsGroup removed do avoid multiple downloads - - dc98083864ea246d05a42df0d05f81cc # x265 (720/1080p) - quality_profiles: - - name: Any - reset_unmatched_scores: true - - name: HD - reset_unmatched_scores: true - - name: SD - reset_unmatched_scores: true - - trash_ids: - - 1c7d7b04b15cc53ea61204bebbcc1ee2 # HQ - quality_profiles: - - name: Any - score: 0 - - name: HD - score: 0 - - name: SD - score: 0 - - trash_ids: - - 4b900e171accbfb172729b63323ea8ca # Optional: Multi - - 923b6abef9b17f937fab56cfcf89e1f1 # Optional: DV (WEBDL) without fallback to HDR, set to manual score 0 or -10000 - quality_profiles: - - name: Any - score: 0 - - name: HD - score: 0 - - name: SD - score: 0 diff --git a/kubernetes/apps/default/recyclarr/app/volsync.yaml b/kubernetes/apps/default/recyclarr/app/volsync.yaml new file mode 100644 index 000000000..8ba72a653 --- /dev/null +++ b/kubernetes/apps/default/recyclarr/app/volsync.yaml @@ -0,0 +1,49 @@ +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/external-secrets.io/externalsecret_v1beta1.json +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: recyclarr-restic + namespace: default +spec: + secretStoreRef: + kind: ClusterSecretStore + name: onepassword-connect + target: + name: recyclarr-restic-secret + creationPolicy: Owner + template: + engineVersion: v2 + data: + RESTIC_REPOSITORY: '{{ .REPOSITORY_TEMPLATE }}/recyclarr' + RESTIC_PASSWORD: '{{ .RESTIC_PASSWORD }}' + AWS_ACCESS_KEY_ID: '{{ .AWS_ACCESS_KEY_ID }}' + AWS_SECRET_ACCESS_KEY: '{{ .AWS_SECRET_ACCESS_KEY }}' + dataFrom: + - extract: + key: volsync-restic-template +--- +# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/volsync.backube/replicationsource_v1alpha1.json +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: recyclarr + namespace: default +spec: + sourcePVC: config-recyclarr-0 + trigger: + schedule: "0 7 * * *" + restic: + copyMethod: Snapshot + pruneIntervalDays: 7 + repository: recyclarr-restic-secret + cacheCapacity: 8Gi + volumeSnapshotClassName: csi-ceph-blockpool + storageClassName: rook-ceph-block + moverSecurityContext: + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + retain: + daily: 7 + within: 3d