diff --git a/charts/servarr/Chart.yaml b/charts/servarr/Chart.yaml index 7351883..7550ead 100644 --- a/charts/servarr/Chart.yaml +++ b/charts/servarr/Chart.yaml @@ -3,8 +3,8 @@ maintainers: - name: kubitodev url: https://kubito.dev apiVersion: v2 -appVersion: 1.1.7 -version: 1.1.7 +appVersion: 1.2.0 +version: 1.2.0 description: Kubito Servarr Helm Chart home: https://github.com/kubitodev/helm/tree/main/charts/servarr icon: https://kubito.dev/images/kubito.svg @@ -14,12 +14,11 @@ keywords: - lidarr - sonarr - radarr - - readarr - flaresolverr - jellyfin - jellyseerr - qbittorrent - prowlarr - - cleanuperr + - cleanuparr sources: - https://github.com/Servarr diff --git a/charts/servarr/README.md b/charts/servarr/README.md index 66a4630..789e735 100644 --- a/charts/servarr/README.md +++ b/charts/servarr/README.md @@ -1,6 +1,6 @@ # Servarr -A Helm chart for deploying the Servarr suite of applications - including Sonarr, Radarr, Lidarr, Prowlarr, Readarr, and Jellyfin. These applications provide media management, automation, and streaming capabilities for TV shows, movies, music, books, and more. The chart also supports enabling additional services like Bazarr for subtitle management, FlareSolverr for handling anti-bot protections, Jellyseerr for media requests, qBittorrent for downloading, and other complementary applications to create a complete media server stack. +A Helm chart for deploying the Servarr suite of applications - including Sonarr, Radarr, Lidarr, Prowlarr, and Jellyfin. These applications provide media management, automation, and streaming capabilities for TV shows, movies, music, books, and more. The chart also supports enabling additional services like Bazarr for subtitle management, FlareSolverr for handling anti-bot protections, Jellyseerr for media requests, qBittorrent for downloading, and other complementary applications to create a complete media server stack. ## TL;DR @@ -503,175 +503,56 @@ The command removes all the Kubernetes components associated with the chart and | `lidarr.persistence.additionalVolumes` | Additional volumes to add to the pod. | `[]` | | `lidarr.persistence.additionalMounts` | Additional volume mounts to add to the pod. | `[]` | -### Readarr parameters - -| Name | Description | Value | -| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | -| `readarr.enabled` | Whether to enable Readarr. | `true` | -| `readarr.replicaCount` | The number of replicas to deploy. | `1` | -| `readarr.image.repository` | The Docker repository to pull the image from. | `lscr.io/linuxserver/readarr` | -| `readarr.image.tag` | The image tag to use. | `0.4.2-develop` | -| `readarr.image.pullPolicy` | The logic of image pulling. | `IfNotPresent` | -| `readarr.imagePullSecrets` | The image pull secrets to use. | `[]` | -| `readarr.deployment.strategy.type` | The deployment strategy to use. | `Recreate` | -| `readarr.serviceAccount.create` | Whether to create a service account. | `true` | -| `readarr.serviceAccount.annotations` | Additional annotations to add to the service account. | `{}` | -| `readarr.serviceAccount.name` | The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. | `""` | -| `readarr.podAnnotations` | Additional annotations to add to the pod. | `{}` | -| `readarr.podSecurityContext` | The security context to use for the pod. | `{}` | -| `readarr.securityContext` | The security context to use for the container. | `{}` | -| `readarr.initContainers` | Additional init containers to add to the pod. | `[]` | -| `readarr.service.type` | The type of service to create. | `ClusterIP` | -| `readarr.service.port` | The port on which the service will run. | `8787` | -| `readarr.service.nodePort` | The nodePort to use for the service. Only used if service.type is NodePort. | `""` | -| `readarr.ingress.enabled` | Whether to create an ingress for the service. | `false` | -| `readarr.ingress.className` | The ingress class name to use. | `""` | -| `readarr.ingress.annotations` | Additional annotations to add to the ingress. | `{}` | -| `readarr.ingress.hosts[0].host` | The host to use for the ingress. | `chart-example.local` | -| `readarr.ingress.hosts[0].paths[0].path` | The path to use for the ingress. | `/` | -| `readarr.ingress.hosts[0].paths[0].pathType` | The path type to use for the ingress. | `ImplementationSpecific` | -| `readarr.ingress.tls` | The TLS configuration for the ingress. | `[]` | -| `readarr.resources` | The resources to use for the pod. | `{}` | -| `readarr.autoscaling.enabled` | Whether to enable autoscaling. | `false` | -| `readarr.autoscaling.minReplicas` | The minimum number of replicas to scale to. | `1` | -| `readarr.autoscaling.maxReplicas` | The maximum number of replicas to scale to. | `100` | -| `readarr.autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage to use for autoscaling. | `80` | -| `readarr.autoscaling.targetMemoryUtilizationPercentage` | The target memory utilization percentage to use for autoscaling. | `80` | -| `readarr.nodeSelector` | The node selector to use for the pod. | `{}` | -| `readarr.tolerations` | The tolerations to use for the pod. | `[]` | -| `readarr.affinity` | The affinity to use for the pod. | `{}` | -| `readarr.env.PUID` | The user ID to use for the pod. | `1000` | -| `readarr.env.PGID` | The group ID to use for the pod. | `1000` | -| `readarr.env.TZ` | The timezone to use for the pod. | `Europe/London` | -| `readarr.env.UMASK` | The umask to use for the pod. | `002` | -| `readarr.persistence.enabled` | Whether to enable persistence. | `true` | -| `readarr.persistence.path` | The path to use for the persistence. Don't use slashes. | `books` | -| `readarr.persistence.storageClass` | The storage class to use for the persistence. | `""` | -| `readarr.persistence.existingClaim` | The name of an existing claim to use for the persistence. | `""` | -| `readarr.persistence.accessMode` | The access mode to use for the persistence. | `ReadWriteOnce` | -| `readarr.persistence.size` | The size to use for the persistence. | `800Mi` | -| `readarr.persistence.additionalVolumes` | Additional volumes to add to the pod. | `[]` | -| `readarr.persistence.additionalMounts` | Additional volume mounts to add to the pod. | `[]` | - -### Cleanuperr parameters - -| Name | Description | Value | -| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -| `cleanuperr.enabled` | Whether to enable Cleanuperr. | `false` | -| `cleanuperr.replicaCount` | The number of replicas to deploy. | `1` | -| `cleanuperr.image.repository` | The Docker repository to pull the image from. | `ghcr.io/flmorg/cleanuperr` | -| `cleanuperr.image.tag` | The image tag to use. | `latest` | -| `cleanuperr.image.pullPolicy` | The logic of image pulling. | `IfNotPresent` | -| `cleanuperr.imagePullSecrets` | The image pull secrets to use. | `[]` | -| `cleanuperr.deployment.strategy.type` | The deployment strategy to use. | `Recreate` | -| `cleanuperr.serviceAccount.create` | Whether to create a service account. | `true` | -| `cleanuperr.serviceAccount.annotations` | Additional annotations to add to the service account. | `{}` | -| `cleanuperr.serviceAccount.name` | The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. | `""` | -| `cleanuperr.podAnnotations` | Additional annotations to add to the pod. | `{}` | -| `cleanuperr.podSecurityContext` | The security context to use for the pod. | `{}` | -| `cleanuperr.securityContext` | The security context to use for the container. | `{}` | -| `cleanuperr.initContainers` | Additional init containers to add to the pod. | `[]` | -| `cleanuperr.resources` | The resources to use for the pod. | `{}` | -| `cleanuperr.autoscaling.enabled` | Whether to enable autoscaling. | `false` | -| `cleanuperr.autoscaling.minReplicas` | The minimum number of replicas to scale to. | `1` | -| `cleanuperr.autoscaling.maxReplicas` | The maximum number of replicas to scale to. | `100` | -| `cleanuperr.autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage to use for autoscaling. | `80` | -| `cleanuperr.autoscaling.targetMemoryUtilizationPercentage` | The target memory utilization percentage to use for autoscaling. | `80` | -| `cleanuperr.nodeSelector` | The node selector to use for the pod. | `{}` | -| `cleanuperr.tolerations` | The tolerations to use for the pod. | `[]` | -| `cleanuperr.affinity` | The affinity to use for the pod. | `{}` | -| `cleanuperr.secrets.existingSecret` | The name of an existing Secret to use for credentials instead of creating a new one. | `""` | -| `cleanuperr.secrets.qbittorrent.username` | The qBittorrent username to be stored in the secret. | `""` | -| `cleanuperr.secrets.qbittorrent.password` | The qBittorrent password to be stored in the secret. | `""` | -| `cleanuperr.secrets.sonarr.apiKey` | The Sonarr API key to be stored in the secret. | `""` | -| `cleanuperr.secrets.radarr.apiKey` | The Radarr API key to be stored in the secret. | `""` | -| `cleanuperr.secrets.lidarr.apiKey` | The Lidarr API key to be stored in the secret. | `""` | -| `cleanuperr.env.TZ` | The timezone to use for the pod. | `Europe/London` | -| `cleanuperr.env.DRY_RUN` | Enable dry run mode to log actions without actually performing them. | `false` | -| `cleanuperr.env.LOGGING__LOGLEVEL` | The log level for the application. | `Information` | -| `cleanuperr.env.LOGGING__FILE__ENABLED` | Whether to enable file logging. | `true` | -| `cleanuperr.env.LOGGING__FILE__PATH` | The path to store log files. | `/var/logs` | -| `cleanuperr.env.LOGGING__ENHANCED` | Whether to enable enhanced logging. | `true` | -| `cleanuperr.env.HTTP_MAX_RETRIES` | The maximum number of HTTP retries. | `3` | -| `cleanuperr.env.HTTP_TIMEOUT` | The HTTP timeout in seconds. | `100` | -| `cleanuperr.env.HTTP_VALIDATE_CERT` | Whether to validate HTTPS certificates. | `Enabled` | -| `cleanuperr.env.SEARCH_ENABLED` | Whether to enable search functionality. | `true` | -| `cleanuperr.env.SEARCH_DELAY` | The delay between searches in seconds. | `30` | -| `cleanuperr.env.QUEUECLEANER__ENABLED` | Whether to enable queue cleaner functionality. | `true` | -| `cleanuperr.env.TRIGGERS__QUEUECLEANER` | The cron schedule for queue cleaner. | `0 0/5 * * * ?` | -| `cleanuperr.env.QUEUECLEANER__IGNORED_DOWNLOADS_PATH` | Path to ignored downloads list. Set to /ignored to use the default. | `/ignored/ignored_downloads` | -| `cleanuperr.env.QUEUECLEANER__RUNSEQUENTIALLY` | Whether to run queue cleaner sequentially. | `true` | -| `cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_MAX_STRIKES` | Maximum failed import strikes before action. | `0` | -| `cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_IGNORE_PRIVATE` | Whether to ignore private trackers for failed imports. | `false` | -| `cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_DELETE_PRIVATE` | Whether to delete private tracker torrents on failed imports. | `false` | -| `cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_IGNORE_PATTERNS__0` | Patterns to ignore for failed imports. | `title mismatch` | -| `cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_IGNORE_PATTERNS__1` | Additional patterns to ignore for failed imports. | `manual import required` | -| `cleanuperr.env.QUEUECLEANER__STALLED_MAX_STRIKES` | Maximum stalled strikes before action. | `0` | -| `cleanuperr.env.QUEUECLEANER__STALLED_RESET_STRIKES_ON_PROGRESS` | Whether to reset strikes on progress for stalled downloads. | `false` | -| `cleanuperr.env.QUEUECLEANER__STALLED_IGNORE_PRIVATE` | Whether to ignore private trackers for stalled torrents. | `false` | -| `cleanuperr.env.QUEUECLEANER__STALLED_DELETE_PRIVATE` | Whether to delete private tracker torrents when stalled. | `false` | -| `cleanuperr.env.QUEUECLEANER__DOWNLOADING_METADATA_MAX_STRIKES` | Maximum strikes for downloading metadata. | `0` | -| `cleanuperr.env.QUEUECLEANER__SLOW_MAX_STRIKES` | Maximum slow download strikes before action. | `0` | -| `cleanuperr.env.QUEUECLEANER__SLOW_RESET_STRIKES_ON_PROGRESS` | Whether to reset strikes on progress for slow downloads. | `false` | -| `cleanuperr.env.QUEUECLEANER__SLOW_IGNORE_PRIVATE` | Whether to ignore private trackers for slow downloads. | `false` | -| `cleanuperr.env.QUEUECLEANER__SLOW_DELETE_PRIVATE` | Whether to delete private tracker torrents when slow. | `false` | -| `cleanuperr.env.QUEUECLEANER__SLOW_MIN_SPEED` | Minimum speed threshold for slow downloads. | `""` | -| `cleanuperr.env.QUEUECLEANER__SLOW_MAX_TIME` | Maximum time allowed for slow downloads. | `0` | -| `cleanuperr.env.QUEUECLEANER__SLOW_IGNORE_ABOVE_SIZE` | Ignore torrents above this size for slow download checks. | `""` | -| `cleanuperr.env.CONTENTBLOCKER__ENABLED` | Whether to enable content blocker functionality. | `true` | -| `cleanuperr.env.TRIGGERS__CONTENTBLOCKER` | Cron schedule for content blocker. | `0 0/5 * * * ?` | -| `cleanuperr.env.CONTENTBLOCKER__IGNORED_DOWNLOADS_PATH` | Path to ignored downloads for content blocker. Set to /ignored to use the default. | `/ignored/ignored_downloads` | -| `cleanuperr.env.CONTENTBLOCKER__IGNORE_PRIVATE` | Whether to ignore private trackers for content blocking. | `false` | -| `cleanuperr.env.CONTENTBLOCKER__DELETE_PRIVATE` | Whether to delete private tracker torrents when blocked. | `false` | -| `cleanuperr.env.DOWNLOADCLEANER__ENABLED` | Whether to enable download cleaner functionality. | `true` | -| `cleanuperr.env.TRIGGERS__DOWNLOADCLEANER` | Cron schedule for download cleaner. | `0 0 * * * ?` | -| `cleanuperr.env.DOWNLOADCLEANER__IGNORED_DOWNLOADS_PATH` | Path to ignored downloads for download cleaner. Set to /ignored to use the default. | `/ignored/ignored_downloads` | -| `cleanuperr.env.DOWNLOADCLEANER__DELETE_PRIVATE` | Whether to delete private tracker torrents when cleaning. | `false` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__NAME` | Name for the first category (Sonarr). | `tv-sonarr` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__NAME` | Name for the second category (Radarr). | `movies-radarr` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__NAME` | Name for the third category (Lidarr). | `music-lidarr` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__MAX_RATIO` | Max ratio for the first category. | `1.0` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__MAX_RATIO` | Max ratio for the second category. | `1.0` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__MAX_RATIO` | Max ratio for the third category. | `1.0` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__MIN_SEED_TIME` | Min seed time for the first category in minutes. | `360` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__MIN_SEED_TIME` | Min seed time for the second category in minutes. | `360` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__MIN_SEED_TIME` | Min seed time for the third category in minutes. | `360` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__MAX_SEED_TIME` | Max seed time for the first category in minutes. | `720` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__MAX_SEED_TIME` | Max seed time for the second category in minutes. | `720` | -| `cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__MAX_SEED_TIME` | Max seed time for the third category in minutes. | `720` | -| `cleanuperr.env.DOWNLOADCLEANER__UNLINKED_TARGET_CATEGORY` | Target category for unlinked downloads. | `cleanuperr-unlinked` | -| `cleanuperr.env.DOWNLOADCLEANER__UNLINKED_USE_TAG` | Whether to use a tag for unlinked downloads. | `false` | -| `cleanuperr.env.DOWNLOADCLEANER__UNLINKED_IGNORED_ROOT_DIR` | Root directory to ignore for unlinked downloads. | `/media/downloads` | -| `cleanuperr.env.DOWNLOADCLEANER__UNLINKED_CATEGORIES__0` | First category to check for unlinked downloads. | `tv-sonarr` | -| `cleanuperr.env.DOWNLOADCLEANER__UNLINKED_CATEGORIES__1` | Second category to check for unlinked downloads. | `movies-radarr` | -| `cleanuperr.env.DOWNLOADCLEANER__UNLINKED_CATEGORIES__2` | Third category to check for unlinked downloads. | `music-lidarr` | -| `cleanuperr.env.DOWNLOAD_CLIENT` | The download client to use. | `qbittorrent` | -| `cleanuperr.env.QBITTORRENT__URL` | The URL for qBittorrent web interface. | `http://servarr-qbittorrent-web:8080` | -| `cleanuperr.env.QBITTORRENT__URL_BASE` | The base URL for qBittorrent. | `""` | -| `cleanuperr.env.SONARR__ENABLED` | Whether to enable Sonarr integration. | `true` | -| `cleanuperr.env.SONARR__IMPORT_FAILED_MAX_STRIKES` | Maximum failed import strikes for Sonarr. | `-1` | -| `cleanuperr.env.SONARR__BLOCK__TYPE` | The block type for Sonarr. | `blacklist` | -| `cleanuperr.env.SONARR__BLOCK__PATH` | Path to the Sonarr blocklist. | `https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist_permissive` | -| `cleanuperr.env.SONARR__SEARCHTYPE` | The search type for Sonarr. | `Episode` | -| `cleanuperr.env.SONARR__INSTANCES__0__URL` | The URL for Sonarr. | `http://servarr-sonarr:80` | -| `cleanuperr.env.RADARR__ENABLED` | Whether to enable Radarr integration. | `true` | -| `cleanuperr.env.RADARR__IMPORT_FAILED_MAX_STRIKES` | Maximum failed import strikes for Radarr. | `-1` | -| `cleanuperr.env.RADARR__BLOCK__TYPE` | The block type for Radarr. | `blacklist` | -| `cleanuperr.env.RADARR__BLOCK__PATH` | Path to the Radarr blocklist. | `https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist_permissive` | -| `cleanuperr.env.RADARR__INSTANCES__0__URL` | The URL for Radarr. | `http://servarr-radarr:7878` | -| `cleanuperr.env.LIDARR__ENABLED` | Whether to enable Lidarr integration. | `false` | -| `cleanuperr.env.LIDARR__IMPORT_FAILED_MAX_STRIKES` | Maximum failed import strikes for Lidarr. | `-1` | -| `cleanuperr.env.LIDARR__BLOCK__TYPE` | The block type for Lidarr. | `blacklist` | -| `cleanuperr.env.LIDARR__BLOCK__PATH` | Path to the Lidarr blocklist. | `https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist_permissive` | -| `cleanuperr.env.LIDARR__INSTANCES__0__URL` | The URL for Lidarr. | `http://servarr-lidarr:8686` | -| `cleanuperr.ignoredDownloads.entries` | List of torrent names or patterns to ignore in the ignored_downloads.txt ConfigMap. | `[]` | -| `cleanuperr.persistence.logs.enabled` | Whether to enable persistence. | `false` | -| `cleanuperr.persistence.logs.storageClass` | The storage class to use for the persistence. | `""` | -| `cleanuperr.persistence.logs.existingClaim` | The name of an existing claim to use for the persistence. | `""` | -| `cleanuperr.persistence.logs.accessMode` | The access mode to use for the persistence. | `ReadWriteOnce` | -| `cleanuperr.persistence.logs.size` | The size to use for the persistence. | `100Mi` | -| `cleanuperr.persistence.logs.additionalVolumes` | Additional volumes to add to the pod. | `[]` | -| `cleanuperr.persistence.logs.additionalMounts` | Additional volume mounts to add to the pod. | `[]` | +### Cleanuparr parameters + +| Name | Description | Value | +| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `cleanuparr.enabled` | Whether to enable Cleanuparr. | `false` | +| `cleanuparr.replicaCount` | The number of replicas to deploy. | `1` | +| `cleanuparr.image.repository` | The Docker repository to pull the image from. | `ghcr.io/cleanuparr/cleanuparr` | +| `cleanuparr.image.tag` | The image tag to use. | `latest` | +| `cleanuparr.image.pullPolicy` | The logic of image pulling. | `IfNotPresent` | +| `cleanuparr.imagePullSecrets` | The image pull secrets to use. | `[]` | +| `cleanuparr.deployment.strategy.type` | The deployment strategy to use. | `Recreate` | +| `cleanuparr.serviceAccount.create` | Whether to create a service account. | `true` | +| `cleanuparr.serviceAccount.annotations` | Additional annotations to add to the service account. | `{}` | +| `cleanuparr.serviceAccount.name` | The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. | `""` | +| `cleanuparr.podAnnotations` | Additional annotations to add to the pod. | `{}` | +| `cleanuparr.podSecurityContext` | The security context to use for the pod. | `{}` | +| `cleanuparr.securityContext` | The security context to use for the container. | `{}` | +| `cleanuparr.initContainers` | Additional init containers to add to the pod. | `[]` | +| `cleanuparr.service.type` | The type of service to create. | `ClusterIP` | +| `cleanuparr.service.port` | The port on which the service will run. | `11011` | +| `cleanuparr.service.nodePort` | The nodePort to use for the service. Only used if service.type is NodePort. | `""` | +| `cleanuparr.ingress.enabled` | Whether to create an ingress for the service. | `false` | +| `cleanuparr.ingress.className` | The ingress class name to use. | `""` | +| `cleanuparr.ingress.annotations` | Additional annotations to add to the ingress. | `{}` | +| `cleanuparr.ingress.hosts[0].host` | The host to use for the ingress. | `chart-example.local` | +| `cleanuparr.ingress.hosts[0].paths[0].path` | The path to use for the ingress. | `/` | +| `cleanuparr.ingress.hosts[0].paths[0].pathType` | The path type to use for the ingress. | `ImplementationSpecific` | +| `cleanuparr.ingress.tls` | The TLS configuration for the ingress. | `[]` | +| `cleanuparr.resources` | The resources to use for the pod. | `{}` | +| `cleanuparr.autoscaling.enabled` | Whether to enable autoscaling. | `false` | +| `cleanuparr.autoscaling.minReplicas` | The minimum number of replicas to scale to. | `1` | +| `cleanuparr.autoscaling.maxReplicas` | The maximum number of replicas to scale to. | `100` | +| `cleanuparr.autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage to use for autoscaling. | `80` | +| `cleanuparr.autoscaling.targetMemoryUtilizationPercentage` | The target memory utilization percentage to use for autoscaling. | `80` | +| `cleanuparr.nodeSelector` | The node selector to use for the pod. | `{}` | +| `cleanuparr.tolerations` | The tolerations to use for the pod. | `[]` | +| `cleanuparr.affinity` | The affinity to use for the pod. | `{}` | +| `cleanuparr.env.BASE_PATH` | The base path to use for the service. | `/` | +| `cleanuparr.env.PORT` | The port on which the service will run. | `11011` | +| `cleanuparr.env.PUID` | The user ID to use for the pod. | `1000` | +| `cleanuparr.env.PGID` | The group ID to use for the pod. | `1000` | +| `cleanuparr.env.TZ` | The timezone to use for the pod. | `Europe/London` | +| `cleanuparr.env.UMASK` | The umask to use for the pod. | `002` | +| `cleanuparr.persistence.enabled` | Whether to enable persistence. | `false` | +| `cleanuparr.persistence.storageClass` | The storage class to use for the persistence. | `""` | +| `cleanuparr.persistence.existingClaim` | The name of an existing claim to use for the persistence. | `""` | +| `cleanuparr.persistence.accessMode` | The access mode to use for the persistence. | `ReadWriteOnce` | +| `cleanuparr.persistence.size` | The size to use for the persistence. | `100Mi` | +| `cleanuparr.persistence.additionalVolumes` | Additional volumes to add to the pod. | `[]` | +| `cleanuparr.persistence.additionalMounts` | Additional volume mounts to add to the pod. | `[]` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, @@ -700,7 +581,7 @@ Sonarr can use hardlinks to save space, but it needs to write to the same volume If you use subPath in the volumeMounts, Sonarr will not be able to create hardlinks because Kubernetes sees the subdirectory as a different filesystem and will not be able to create hardlinks. -It is highly recommended that you simply use the chart's default values for this. These are the directories that are mounted by Sonarr, Radarr, Lidarr, Readarr, and qBittorrent: +It is highly recommended that you simply use the chart's default values for this. These are the directories that are mounted by Sonarr, Radarr, Lidarr, and qBittorrent: - `/media/tv` - `/media/movies` diff --git a/charts/servarr/templates/cleanuparr/deployment.yaml b/charts/servarr/templates/cleanuparr/deployment.yaml new file mode 100644 index 0000000..05e076f --- /dev/null +++ b/charts/servarr/templates/cleanuparr/deployment.yaml @@ -0,0 +1,102 @@ +{{- if .Values.cleanuparr.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-cleanuparr + labels: + app.kubernetes.io/name: cleanuparr + app.kubernetes.io/instance: {{ .Release.Name | quote }} + app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} +spec: + {{- if not .Values.cleanuparr.autoscaling.enabled }} + replicas: {{ .Values.cleanuparr.replicaCount }} + {{- end }} + strategy: + {{- .Values.cleanuparr.deployment.strategy | toYaml | nindent 4 }} + selector: + matchLabels: + app.kubernetes.io/name: cleanuparr + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + {{- with .Values.cleanuparr.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/name: cleanuparr + app.kubernetes.io/instance: {{ .Release.Name | quote }} + app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + spec: + {{- with .Values.cleanuparr.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ .Values.cleanuparr.serviceAccount.name | default (printf "%s-cleanuparr" .Release.Name) }} + securityContext: + {{- toYaml .Values.cleanuparr.podSecurityContext | nindent 8 }} + {{- if .Values.cleanuparr.initContainers }} + initContainers: + {{- toYaml .Values.cleanuparr.initContainers | nindent 8 }} + {{- end }} + volumes: + - name: config + {{- if .Values.cleanuparr.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.cleanuparr.persistence.existingClaim | default (printf "%s-cleanuparr" .Release.Name) }} + {{- else }} + emptyDir: { } + {{- end }} + - name: media + {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled }} + persistentVolumeClaim: + claimName: {{ .Release.Name }}-jellyfin-media + {{- else }} + emptyDir: { } + {{- end }} + {{- if .Values.cleanuparr.persistence.additionalVolumes }} + {{- .Values.cleanuparr.persistence.additionalVolumes | toYaml | nindent 8}} + {{- end }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.cleanuparr.securityContext | nindent 12 }} + image: "{{ .Values.cleanuparr.image.repository }}:{{ .Values.cleanuparr.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.cleanuparr.image.pullPolicy }} + volumeMounts: + - mountPath: /config + name: config + {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled .Values.qbittorrent.persistence.enabled }} + - mountPath: "/media/{{ .Values.qbittorrent.persistence.path }}" + name: media + subPath: {{ .Values.qbittorrent.persistence.path }} + {{- end }} + {{- if .Values.cleanuparr.persistence.additionalMounts }} + {{- .Values.cleanuparr.persistence.additionalMounts | toYaml | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: {{ .Values.cleanuparr.service.port | default 11011 }} + protocol: TCP + env: + {{- range $k,$v := .Values.cleanuparr.env }} + - name: {{ $k }} + value: {{ $v | quote }} + {{- end }} + resources: + {{- toYaml .Values.cleanuparr.resources | nindent 12 }} + {{- with .Values.cleanuparr.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.cleanuparr.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.cleanuparr.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/servarr/templates/cleanuperr/hpa.yaml b/charts/servarr/templates/cleanuparr/hpa.yaml similarity index 52% rename from charts/servarr/templates/cleanuperr/hpa.yaml rename to charts/servarr/templates/cleanuparr/hpa.yaml index 379256b..75580a2 100644 --- a/charts/servarr/templates/cleanuperr/hpa.yaml +++ b/charts/servarr/templates/cleanuparr/hpa.yaml @@ -1,10 +1,10 @@ -{{- if and .Values.cleanuperr.enabled .Values.cleanuperr.autoscaling.enabled }} +{{- if and .Values.cleanuparr.enabled .Values.cleanuparr.autoscaling.enabled }} apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: - name: {{ .Release.Name }}-cleanuperr + name: {{ .Release.Name }}-cleanuparr labels: - app.kubernetes.io/name: cleanuperr + app.kubernetes.io/name: cleanuparr app.kubernetes.io/instance: {{ .Release.Name | quote }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} app.kubernetes.io/managed-by: {{ .Release.Service | quote }} @@ -12,20 +12,20 @@ spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ .Release.Name }}-cleanuperr - minReplicas: {{ .Values.cleanuperr.autoscaling.minReplicas }} - maxReplicas: {{ .Values.cleanuperr.autoscaling.maxReplicas }} + name: {{ .Release.Name }}-cleanuparr + minReplicas: {{ .Values.cleanuparr.autoscaling.minReplicas }} + maxReplicas: {{ .Values.cleanuparr.autoscaling.maxReplicas }} metrics: - {{- if .Values.cleanuperr.autoscaling.targetCPUUtilizationPercentage }} + {{- if .Values.cleanuparr.autoscaling.targetCPUUtilizationPercentage }} - type: Resource resource: name: cpu - targetAverageUtilization: {{ .Values.cleanuperr.autoscaling.targetCPUUtilizationPercentage }} + targetAverageUtilization: {{ .Values.cleanuparr.autoscaling.targetCPUUtilizationPercentage }} {{- end }} - {{- if .Values.cleanuperr.autoscaling.targetMemoryUtilizationPercentage }} + {{- if .Values.cleanuparr.autoscaling.targetMemoryUtilizationPercentage }} - type: Resource resource: name: memory - targetAverageUtilization: {{ .Values.cleanuperr.autoscaling.targetMemoryUtilizationPercentage }} + targetAverageUtilization: {{ .Values.cleanuparr.autoscaling.targetMemoryUtilizationPercentage }} {{- end }} {{- end }} diff --git a/charts/servarr/templates/readarr/ingress.yaml b/charts/servarr/templates/cleanuparr/ingress.yaml similarity index 61% rename from charts/servarr/templates/readarr/ingress.yaml rename to charts/servarr/templates/cleanuparr/ingress.yaml index 32bc6d2..ec0a3bf 100644 --- a/charts/servarr/templates/readarr/ingress.yaml +++ b/charts/servarr/templates/cleanuparr/ingress.yaml @@ -1,9 +1,9 @@ -{{- if and .Values.readarr.enabled .Values.readarr.ingress.enabled }} -{{- $fullName := printf "%s-readarr" .Release.Name -}} -{{- $svcPort := .Values.readarr.service.port -}} -{{- if and .Values.readarr.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.readarr.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.readarr.ingress.annotations "kubernetes.io/ingress.class" .Values.readarr.ingress.className}} +{{- if and .Values.cleanuparr.enabled .Values.cleanuparr.ingress.enabled -}} +{{- $fullName := printf "%s-cleanuparr" .Release.Name -}} +{{- $svcPort := .Values.cleanuparr.service.port -}} +{{- if and .Values.cleanuparr.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.cleanuparr.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.cleanuparr.ingress.annotations "kubernetes.io/ingress.class" .Values.cleanuparr.ingress.className}} {{- end }} {{- end }} {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} @@ -17,21 +17,21 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - app.kubernetes.io/name: readarr + app.kubernetes.io/name: cleanuparr app.kubernetes.io/instance: {{ .Release.Name | quote }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - {{- with .Values.readarr.ingress.annotations }} + {{- with .Values.cleanuparr.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: - {{- if and .Values.readarr.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.readarr.ingress.className }} + {{- if and .Values.cleanuparr.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.cleanuparr.ingress.className }} {{- end }} - {{- if .Values.readarr.ingress.tls }} + {{- if .Values.cleanuparr.ingress.tls }} tls: - {{- range .Values.readarr.ingress.tls }} + {{- range .Values.cleanuparr.ingress.tls }} - hosts: {{- range .hosts }} - {{ . | quote }} @@ -40,7 +40,7 @@ spec: {{- end }} {{- end }} rules: - {{- range .Values.readarr.ingress.hosts }} + {{- range .Values.cleanuparr.ingress.hosts }} - host: {{ .host | quote }} http: paths: diff --git a/charts/servarr/templates/cleanuparr/pvc.yaml b/charts/servarr/templates/cleanuparr/pvc.yaml new file mode 100644 index 0000000..4d5ee7d --- /dev/null +++ b/charts/servarr/templates/cleanuparr/pvc.yaml @@ -0,0 +1,24 @@ +{{- if and .Values.cleanuparr.enabled .Values.cleanuparr.persistence.enabled (not .Values.cleanuparr.persistence.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ .Release.Name }}-cleanuparr + labels: + app.kubernetes.io/name: cleanuparr + app.kubernetes.io/instance: {{ .Release.Name | quote }} + app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + {{- if .Values.cleanuparr.persistence.annotations }} + annotations: + {{- toYaml .Values.cleanuparr.persistence.annotations | nindent 4 }} + {{- end }} +spec: + accessModes: + - {{ .Values.cleanuparr.persistence.accessMode | quote }} + {{- if .Values.cleanuparr.persistence.storageClass }} + storageClassName: {{ .Values.cleanuparr.persistence.storageClass | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.cleanuparr.persistence.size | quote }} +{{- end }} diff --git a/charts/servarr/templates/cleanuparr/service.yaml b/charts/servarr/templates/cleanuparr/service.yaml new file mode 100644 index 0000000..67fdd50 --- /dev/null +++ b/charts/servarr/templates/cleanuparr/service.yaml @@ -0,0 +1,24 @@ +{{- if .Values.cleanuparr.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ .Release.Name }}-cleanuparr + labels: + app.kubernetes.io/name: cleanuparr + app.kubernetes.io/instance: {{ .Release.Name | quote }} + app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} +spec: + type: {{ .Values.cleanuparr.service.type | default "ClusterIP" }} + ports: + - port: {{ .Values.cleanuparr.service.port | default 11011 }} + targetPort: http + protocol: TCP + name: http +{{ if (and (eq .Values.cleanuparr.service.type "NodePort") (not (empty .Values.cleanuparr.service.nodePort))) }} + nodePort: {{.Values.cleanuparr.service.nodePort}} +{{ end }} + selector: + app.kubernetes.io/name: cleanuparr + app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} diff --git a/charts/servarr/templates/cleanuperr/serviceaccount.yaml b/charts/servarr/templates/cleanuparr/serviceaccount.yaml similarity index 62% rename from charts/servarr/templates/cleanuperr/serviceaccount.yaml rename to charts/servarr/templates/cleanuparr/serviceaccount.yaml index db974ec..4b32920 100644 --- a/charts/servarr/templates/cleanuperr/serviceaccount.yaml +++ b/charts/servarr/templates/cleanuparr/serviceaccount.yaml @@ -1,14 +1,14 @@ -{{- if and .Values.cleanuperr.enabled .Values.cleanuperr.serviceAccount.create }} +{{- if and .Values.cleanuparr.enabled .Values.cleanuparr.serviceAccount.create }} apiVersion: v1 kind: ServiceAccount metadata: - name: {{ .Release.Name }}-cleanuperr + name: {{ .Release.Name }}-cleanuparr labels: - app.kubernetes.io/name: cleanuperr + app.kubernetes.io/name: cleanuparr app.kubernetes.io/instance: {{ .Release.Name | quote }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - {{- with .Values.cleanuperr.serviceAccount.annotations }} + {{- with .Values.cleanuparr.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} diff --git a/charts/servarr/templates/cleanuperr/configmap.yaml b/charts/servarr/templates/cleanuperr/configmap.yaml deleted file mode 100644 index fd8957b..0000000 --- a/charts/servarr/templates/cleanuperr/configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.cleanuperr.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-cleanuperr-ignored-downloads - labels: - app.kubernetes.io/name: cleanuperr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} -data: - ignored_downloads: |- - {{- if .Values.cleanuperr.ignoredDownloads.entries }} - {{- range .Values.cleanuperr.ignoredDownloads.entries }} - {{ . }} - {{- end }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/servarr/templates/cleanuperr/deployment.yaml b/charts/servarr/templates/cleanuperr/deployment.yaml deleted file mode 100644 index 5f3e647..0000000 --- a/charts/servarr/templates/cleanuperr/deployment.yaml +++ /dev/null @@ -1,138 +0,0 @@ -{{- if .Values.cleanuperr.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-cleanuperr - labels: - app.kubernetes.io/name: cleanuperr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} -spec: - {{- if not .Values.cleanuperr.autoscaling.enabled }} - replicas: {{ .Values.cleanuperr.replicaCount }} - {{- end }} - strategy: - {{- .Values.cleanuperr.deployment.strategy | toYaml | nindent 4 }} - selector: - matchLabels: - app.kubernetes.io/name: cleanuperr - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - {{- with .Values.cleanuperr.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - app.kubernetes.io/name: cleanuperr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - spec: - {{- with .Values.cleanuperr.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ .Values.cleanuperr.serviceAccount.name | default (printf "%s-cleanuperr" .Release.Name) }} - securityContext: - {{- toYaml .Values.cleanuperr.podSecurityContext | nindent 8 }} - {{- if .Values.cleanuperr.initContainers }} - initContainers: - {{- toYaml .Values.cleanuperr.initContainers | nindent 8 }} - {{- end }} - volumes: - - name: logs - {{- if .Values.cleanuperr.persistence.logs.enabled }} - persistentVolumeClaim: - claimName: {{ .Values.cleanuperr.persistence.logs.existingClaim | default (printf "%s-cleanuperr-logs" .Release.Name) }} - {{- else }} - emptyDir: { } - {{- end }} - - name: media - {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled }} - persistentVolumeClaim: - claimName: {{ .Release.Name }}-jellyfin-media - {{- else }} - emptyDir: { } - {{- end }} - - name: ignored-downloads - configMap: - name: {{ .Release.Name }}-cleanuperr-ignored-downloads - {{- if .Values.cleanuperr.persistence.additionalVolumes }} - {{- .Values.cleanuperr.persistence.additionalVolumes | toYaml | nindent 8}} - {{- end }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.cleanuperr.securityContext | nindent 12 }} - image: "{{ .Values.cleanuperr.image.repository }}:{{ .Values.cleanuperr.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.cleanuperr.image.pullPolicy }} - volumeMounts: - - mountPath: /var/logs - name: logs - - mountPath: /ignored/ignored_downloads - name: ignored-downloads - subPath: ignored_downloads - {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled .Values.qbittorrent.persistence.enabled }} - - mountPath: "/media/{{ .Values.qbittorrent.persistence.path }}" - name: media - subPath: {{ .Values.qbittorrent.persistence.path }} - {{- end }} - {{- if .Values.cleanuperr.persistence.additionalMounts }} - {{- .Values.cleanuperr.persistence.additionalMounts | toYaml | nindent 12 }} - {{- end }} - env: - {{- range $k,$v := .Values.cleanuperr.env }} - - name: {{ $k }} - value: {{ $v | quote }} - {{- end }} - {{- $secretName := ternary "cleanuperr-secret" .Values.cleanuperr.secrets.existingSecret (not .Values.cleanuperr.secrets.existingSecret) }} - {{- if not (or (eq (.Values.cleanuperr.env.DOWNLOAD_CLIENT | toString) "none") (eq (.Values.cleanuperr.env.DOWNLOAD_CLIENT | toString) "disabled")) }} - - name: QBITTORRENT__USERNAME - valueFrom: - secretKeyRef: - name: {{ $secretName }} - key: QBITTORRENT__USERNAME - - name: QBITTORRENT__PASSWORD - valueFrom: - secretKeyRef: - name: {{ $secretName }} - key: QBITTORRENT__PASSWORD - {{- end }} - {{- if eq (.Values.cleanuperr.env.SONARR__ENABLED | toString) "true" }} - - name: SONARR__INSTANCES__0__APIKEY - valueFrom: - secretKeyRef: - name: {{ $secretName }} - key: SONARR__INSTANCES__0__APIKEY - {{- end }} - {{- if eq (.Values.cleanuperr.env.RADARR__ENABLED | toString) "true" }} - - name: RADARR__INSTANCES__0__APIKEY - valueFrom: - secretKeyRef: - name: {{ $secretName }} - key: RADARR__INSTANCES__0__APIKEY - {{- end }} - {{- if eq (.Values.cleanuperr.env.LIDARR__ENABLED | toString) "true" }} - - name: LIDARR__INSTANCES__0__APIKEY - valueFrom: - secretKeyRef: - name: {{ $secretName }} - key: LIDARR__INSTANCES__0__APIKEY - {{- end }} - resources: - {{- toYaml .Values.cleanuperr.resources | nindent 12 }} - {{- with .Values.cleanuperr.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.cleanuperr.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.cleanuperr.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/servarr/templates/cleanuperr/pvc.yaml b/charts/servarr/templates/cleanuperr/pvc.yaml deleted file mode 100644 index 26603e6..0000000 --- a/charts/servarr/templates/cleanuperr/pvc.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.cleanuperr.enabled .Values.cleanuperr.persistence.logs.enabled (not .Values.cleanuperr.persistence.logs.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-cleanuperr-logs - labels: - app.kubernetes.io/name: cleanuperr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - {{- if .Values.cleanuperr.persistence.logs.annotations }} - annotations: - {{- toYaml .Values.cleanuperr.persistence.logs.annotations | nindent 4 }} - {{- end }} -spec: - accessModes: - - {{ .Values.cleanuperr.persistence.logs.accessMode | quote }} - {{- if .Values.cleanuperr.persistence.logs.storageClass }} - storageClassName: {{ .Values.cleanuperr.persistence.logs.storageClass | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.cleanuperr.persistence.logs.size | quote }} -{{- end }} diff --git a/charts/servarr/templates/cleanuperr/secret.yaml b/charts/servarr/templates/cleanuperr/secret.yaml deleted file mode 100644 index 986527c..0000000 --- a/charts/servarr/templates/cleanuperr/secret.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if and .Values.cleanuperr.enabled (not .Values.cleanuperr.secrets.existingSecret) }} -apiVersion: v1 -kind: Secret -metadata: - name: cleanuperr-secret - labels: - app.kubernetes.io/name: cleanuperr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} -type: Opaque -data: - {{- if not (or (eq (.Values.cleanuperr.env.DOWNLOAD_CLIENT | toString) "none") (eq (.Values.cleanuperr.env.DOWNLOAD_CLIENT | toString) "disabled")) }} - QBITTORRENT__USERNAME: {{ .Values.cleanuperr.secrets.qbittorrent.username | b64enc }} - QBITTORRENT__PASSWORD: {{ .Values.cleanuperr.secrets.qbittorrent.password | b64enc }} - {{- end }} - {{- if eq (.Values.cleanuperr.env.SONARR__ENABLED | toString) "true" }} - SONARR__INSTANCES__0__APIKEY: {{ .Values.cleanuperr.secrets.sonarr.apiKey | b64enc }} - {{- end }} - {{- if eq (.Values.cleanuperr.env.RADARR__ENABLED | toString) "true" }} - RADARR__INSTANCES__0__APIKEY: {{ .Values.cleanuperr.secrets.radarr.apiKey | b64enc }} - {{- end }} - {{- if eq (.Values.cleanuperr.env.LIDARR__ENABLED | toString) "true" }} - LIDARR__INSTANCES__0__APIKEY: {{ .Values.cleanuperr.secrets.lidarr.apiKey | b64enc }} - {{- end }} -{{- end }} diff --git a/charts/servarr/templates/jellyfin/deployment.yaml b/charts/servarr/templates/jellyfin/deployment.yaml index ca00e6e..334f6d0 100644 --- a/charts/servarr/templates/jellyfin/deployment.yaml +++ b/charts/servarr/templates/jellyfin/deployment.yaml @@ -140,11 +140,6 @@ spec: name: media subPath: {{ .Values.lidarr.persistence.path }} {{- end }} - {{- if and .Values.readarr.enabled .Values.readarr.persistence.enabled }} - - mountPath: "/media/{{ .Values.readarr.persistence.path }}" - name: media - subPath: {{ .Values.readarr.persistence.path }} - {{- end }} {{- if .Values.jellyfin.extraContainers }} {{- toYaml .Values.jellyfin.extraContainers | nindent 8 }} {{- end }} diff --git a/charts/servarr/templates/readarr/deployment.yaml b/charts/servarr/templates/readarr/deployment.yaml deleted file mode 100644 index a1db503..0000000 --- a/charts/servarr/templates/readarr/deployment.yaml +++ /dev/null @@ -1,121 +0,0 @@ -{{- if .Values.readarr.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }}-readarr - labels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} -spec: - {{- if not .Values.readarr.autoscaling.enabled }} - replicas: {{ .Values.readarr.replicaCount }} - {{- end }} - strategy: - {{- .Values.readarr.deployment.strategy | toYaml | nindent 4 }} - selector: - matchLabels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - {{- with .Values.readarr.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - spec: - {{- with .Values.readarr.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ .Values.readarr.serviceAccount.name | default (printf "%s-readarr" .Release.Name) }} - securityContext: - {{- toYaml .Values.readarr.podSecurityContext | nindent 8 }} - {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled .Values.readarr.persistence.enabled }} - initContainers: - - name: init-directories - image: busybox - command: ['sh', '-c', 'mkdir -p /media/{{ .Values.readarr.persistence.path }} /media/{{ .Values.qbittorrent.persistence.path }} && chown -R 1000:1000 /media/{{ .Values.readarr.persistence.path }} /media/{{ .Values.qbittorrent.persistence.path }}'] - volumeMounts: - - name: media - mountPath: /media - {{- if .Values.readarr.initContainers }} - {{- toYaml .Values.readarr.initContainers | nindent 8 }} - {{- end }} - {{- end }} - volumes: - - name: config - {{- if .Values.readarr.persistence.enabled }} - persistentVolumeClaim: - claimName: {{ .Values.readarr.persistence.existingClaim | default (printf "%s-readarr" .Release.Name) }} - {{- else }} - emptyDir: { } - {{- end }} - - name: media - {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled .Values.readarr.persistence.enabled }} - persistentVolumeClaim: - claimName: {{ .Release.Name }}-jellyfin-media - {{- else }} - emptyDir: { } - {{- end }} - {{- if .Values.readarr.persistence.additionalVolumes }} - {{- .Values.readarr.persistence.additionalVolumes | toYaml | nindent 8}} - {{- end }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.readarr.securityContext | nindent 12 }} - image: "{{ .Values.readarr.image.repository }}:{{ .Values.readarr.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.readarr.image.pullPolicy }} - volumeMounts: - - mountPath: /config - name: config - {{- if and .Values.jellyfin.enabled .Values.jellyfin.persistence.media.enabled .Values.readarr.persistence.enabled }} - - mountPath: /media - name: media - {{- end }} - {{- if .Values.readarr.persistence.additionalMounts }} - {{- .Values.readarr.persistence.additionalMounts | toYaml | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: 8787 - protocol: TCP - env: - {{- range $k,$v := .Values.readarr.env }} - - name: {{ $k }} - value: {{ $v | quote }} - {{- end }} - livenessProbe: - httpGet: - path: /ping - port: http - failureThreshold: 12 - periodSeconds: 10 - startupProbe: - httpGet: - path: /ping - port: http - failureThreshold: 30 - periodSeconds: 10 - resources: - {{- toYaml .Values.readarr.resources | nindent 12 }} - {{- with .Values.readarr.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.readarr.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.readarr.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/servarr/templates/readarr/hpa.yaml b/charts/servarr/templates/readarr/hpa.yaml deleted file mode 100644 index 6bb03b3..0000000 --- a/charts/servarr/templates/readarr/hpa.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if and .Values.readarr.enabled .Values.readarr.autoscaling.enabled }} -apiVersion: autoscaling/v2beta1 -kind: HorizontalPodAutoscaler -metadata: - name: {{ .Release.Name }}-readarr - labels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ .Release.Name }}-readarr - minReplicas: {{ .Values.readarr.autoscaling.minReplicas }} - maxReplicas: {{ .Values.readarr.autoscaling.maxReplicas }} - metrics: - {{- if .Values.readarr.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - targetAverageUtilization: {{ .Values.readarr.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.readarr.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - targetAverageUtilization: {{ .Values.readarr.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/charts/servarr/templates/readarr/pvc.yaml b/charts/servarr/templates/readarr/pvc.yaml deleted file mode 100644 index d8d2314..0000000 --- a/charts/servarr/templates/readarr/pvc.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.readarr.enabled .Values.readarr.persistence.enabled (not .Values.readarr.persistence.existingClaim) }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-readarr - labels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - {{- if .Values.readarr.persistence.annotations }} - annotations: - {{- toYaml .Values.readarr.persistence.annotations | nindent 4 }} - {{- end }} -spec: - accessModes: - - {{ .Values.readarr.persistence.accessMode | quote }} - {{- if .Values.readarr.persistence.storageClass }} - storageClassName: {{ .Values.readarr.persistence.storageClass | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.readarr.persistence.size | quote }} -{{- end }} diff --git a/charts/servarr/templates/readarr/service.yaml b/charts/servarr/templates/readarr/service.yaml deleted file mode 100644 index b961ab1..0000000 --- a/charts/servarr/templates/readarr/service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if .Values.readarr.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ .Release.Name }}-readarr - labels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} -spec: - type: {{ .Values.readarr.service.type | default "ClusterIP" }} - ports: - - port: {{ .Values.readarr.service.port | default 8787 }} - targetPort: http - protocol: TCP - name: http -{{ if (and (eq .Values.readarr.service.type "NodePort") (not (empty .Values.readarr.service.nodePort))) }} - nodePort: {{.Values.readarr.service.nodePort}} -{{ end }} - selector: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} diff --git a/charts/servarr/templates/readarr/serviceaccount.yaml b/charts/servarr/templates/readarr/serviceaccount.yaml deleted file mode 100644 index c825c3c..0000000 --- a/charts/servarr/templates/readarr/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.readarr.enabled .Values.readarr.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Release.Name }}-readarr - labels: - app.kubernetes.io/name: readarr - app.kubernetes.io/instance: {{ .Release.Name | quote }} - app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} - app.kubernetes.io/managed-by: {{ .Release.Service | quote }} - {{- with .Values.readarr.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/charts/servarr/values.yaml b/charts/servarr/values.yaml index cd6f896..d3167dd 100644 --- a/charts/servarr/values.yaml +++ b/charts/servarr/values.yaml @@ -1330,62 +1330,63 @@ lidarr: additionalVolumes: [] additionalMounts: [] -## @section Readarr parameters - -## @param readarr.enabled Whether to enable Readarr. -## @param readarr.replicaCount The number of replicas to deploy. -## @param readarr.image.repository The Docker repository to pull the image from. -## @param readarr.image.tag The image tag to use. -## @param readarr.image.pullPolicy The logic of image pulling. -## @param readarr.imagePullSecrets The image pull secrets to use. -## @param readarr.deployment.strategy.type The deployment strategy to use. -## @param readarr.serviceAccount.create Whether to create a service account. -## @param readarr.serviceAccount.annotations Additional annotations to add to the service account. -## @param readarr.serviceAccount.name The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. -## @param readarr.podAnnotations Additional annotations to add to the pod. -## @param readarr.podSecurityContext The security context to use for the pod. -## @param readarr.securityContext The security context to use for the container. -## @param readarr.initContainers Additional init containers to add to the pod. -## @param readarr.service.type The type of service to create. -## @param readarr.service.port The port on which the service will run. -## @param readarr.service.nodePort The nodePort to use for the service. Only used if service.type is NodePort. -## @param readarr.ingress.enabled Whether to create an ingress for the service. -## @param readarr.ingress.className The ingress class name to use. -## @param readarr.ingress.annotations Additional annotations to add to the ingress. -## @param readarr.ingress.hosts[0].host The host to use for the ingress. -## @param readarr.ingress.hosts[0].paths[0].path The path to use for the ingress. -## @param readarr.ingress.hosts[0].paths[0].pathType The path type to use for the ingress. -## @param readarr.ingress.tls The TLS configuration for the ingress. -## @param readarr.resources The resources to use for the pod. -## @param readarr.autoscaling.enabled Whether to enable autoscaling. -## @param readarr.autoscaling.minReplicas The minimum number of replicas to scale to. -## @param readarr.autoscaling.maxReplicas The maximum number of replicas to scale to. -## @param readarr.autoscaling.targetCPUUtilizationPercentage The target CPU utilization percentage to use for autoscaling. -## @param readarr.autoscaling.targetMemoryUtilizationPercentage The target memory utilization percentage to use for autoscaling. -## @param readarr.nodeSelector The node selector to use for the pod. -## @param readarr.tolerations The tolerations to use for the pod. -## @param readarr.affinity The affinity to use for the pod. -## @param readarr.env.PUID The user ID to use for the pod. -## @param readarr.env.PGID The group ID to use for the pod. -## @param readarr.env.TZ The timezone to use for the pod. -## @param readarr.env.UMASK The umask to use for the pod. -## @param readarr.persistence.enabled Whether to enable persistence. -## @param readarr.persistence.path The path to use for the persistence. Don't use slashes. -## @param readarr.persistence.storageClass The storage class to use for the persistence. -## @param readarr.persistence.existingClaim The name of an existing claim to use for the persistence. -## @param readarr.persistence.accessMode The access mode to use for the persistence. -## @param readarr.persistence.size The size to use for the persistence. -## @param readarr.persistence.additionalVolumes Additional volumes to add to the pod. -## @param readarr.persistence.additionalMounts Additional volume mounts to add to the pod. +## @section Cleanuparr parameters + +## @param cleanuparr.enabled Whether to enable Cleanuparr. +## @param cleanuparr.replicaCount The number of replicas to deploy. +## @param cleanuparr.image.repository The Docker repository to pull the image from. +## @param cleanuparr.image.tag The image tag to use. +## @param cleanuparr.image.pullPolicy The logic of image pulling. +## @param cleanuparr.imagePullSecrets The image pull secrets to use. +## @param cleanuparr.deployment.strategy.type The deployment strategy to use. +## @param cleanuparr.serviceAccount.create Whether to create a service account. +## @param cleanuparr.serviceAccount.annotations Additional annotations to add to the service account. +## @param cleanuparr.serviceAccount.name The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. +## @param cleanuparr.podAnnotations Additional annotations to add to the pod. +## @param cleanuparr.podSecurityContext The security context to use for the pod. +## @param cleanuparr.securityContext The security context to use for the container. +## @param cleanuparr.initContainers Additional init containers to add to the pod. +## @param cleanuparr.service.type The type of service to create. +## @param cleanuparr.service.port The port on which the service will run. +## @param cleanuparr.service.nodePort The nodePort to use for the service. Only used if service.type is NodePort. +## @param cleanuparr.ingress.enabled Whether to create an ingress for the service. +## @param cleanuparr.ingress.className The ingress class name to use. +## @param cleanuparr.ingress.annotations Additional annotations to add to the ingress. +## @param cleanuparr.ingress.hosts[0].host The host to use for the ingress. +## @param cleanuparr.ingress.hosts[0].paths[0].path The path to use for the ingress. +## @param cleanuparr.ingress.hosts[0].paths[0].pathType The path type to use for the ingress. +## @param cleanuparr.ingress.tls The TLS configuration for the ingress. +## @param cleanuparr.resources The resources to use for the pod. +## @param cleanuparr.autoscaling.enabled Whether to enable autoscaling. +## @param cleanuparr.autoscaling.minReplicas The minimum number of replicas to scale to. +## @param cleanuparr.autoscaling.maxReplicas The maximum number of replicas to scale to. +## @param cleanuparr.autoscaling.targetCPUUtilizationPercentage The target CPU utilization percentage to use for autoscaling. +## @param cleanuparr.autoscaling.targetMemoryUtilizationPercentage The target memory utilization percentage to use for autoscaling. +## @param cleanuparr.nodeSelector The node selector to use for the pod. +## @param cleanuparr.tolerations The tolerations to use for the pod. +## @param cleanuparr.affinity The affinity to use for the pod. +## @param cleanuparr.env.BASE_PATH The base path to use for the service. +## @param cleanuparr.env.PORT The port on which the service will run. +## @param cleanuparr.env.PUID The user ID to use for the pod. +## @param cleanuparr.env.PGID The group ID to use for the pod. +## @param cleanuparr.env.TZ The timezone to use for the pod. +## @param cleanuparr.env.UMASK The umask to use for the pod. +## @param cleanuparr.persistence.enabled Whether to enable persistence. +## @param cleanuparr.persistence.storageClass The storage class to use for the persistence. +## @param cleanuparr.persistence.existingClaim The name of an existing claim to use for the persistence. +## @param cleanuparr.persistence.accessMode The access mode to use for the persistence. +## @param cleanuparr.persistence.size The size to use for the persistence. +## @param cleanuparr.persistence.additionalVolumes Additional volumes to add to the pod. +## @param cleanuparr.persistence.additionalMounts Additional volume mounts to add to the pod. ## -readarr: - enabled: true +cleanuparr: + enabled: false replicaCount: 1 image: - repository: lscr.io/linuxserver/readarr + repository: ghcr.io/cleanuparr/cleanuparr pullPolicy: IfNotPresent - tag: "0.4.2-develop" + tag: "latest" imagePullSecrets: [] @@ -1411,15 +1412,14 @@ readarr: # runAsNonRoot: true # runAsUser: 1000 - initContainers: - [] + initContainers: [] # - name: init-container # image: busybox # command: ['sh', '-c', 'echo "this is an init container"'] service: type: ClusterIP - port: 8787 + port: 11011 nodePort: "" ingress: @@ -1460,310 +1460,18 @@ readarr: affinity: {} env: + BASE_PATH: "/" + PORT: "11011" PUID: "1000" PGID: "1000" TZ: "Europe/London" UMASK: "002" persistence: - enabled: true - path: books + enabled: false storageClass: "" existingClaim: "" accessMode: ReadWriteOnce - size: 800Mi + size: 100Mi additionalVolumes: [] additionalMounts: [] - -## @section Cleanuperr parameters - -## @param cleanuperr.enabled Whether to enable Cleanuperr. -## @param cleanuperr.replicaCount The number of replicas to deploy. -## @param cleanuperr.image.repository The Docker repository to pull the image from. -## @param cleanuperr.image.tag The image tag to use. -## @param cleanuperr.image.pullPolicy The logic of image pulling. -## @param cleanuperr.imagePullSecrets The image pull secrets to use. -## @param cleanuperr.deployment.strategy.type The deployment strategy to use. -## @param cleanuperr.serviceAccount.create Whether to create a service account. -## @param cleanuperr.serviceAccount.annotations Additional annotations to add to the service account. -## @param cleanuperr.serviceAccount.name The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. -## @param cleanuperr.podAnnotations Additional annotations to add to the pod. -## @param cleanuperr.podSecurityContext The security context to use for the pod. -## @param cleanuperr.securityContext The security context to use for the container. -## @param cleanuperr.initContainers Additional init containers to add to the pod. -## @param cleanuperr.resources The resources to use for the pod. -## @param cleanuperr.autoscaling.enabled Whether to enable autoscaling. -## @param cleanuperr.autoscaling.minReplicas The minimum number of replicas to scale to. -## @param cleanuperr.autoscaling.maxReplicas The maximum number of replicas to scale to. -## @param cleanuperr.autoscaling.targetCPUUtilizationPercentage The target CPU utilization percentage to use for autoscaling. -## @param cleanuperr.autoscaling.targetMemoryUtilizationPercentage The target memory utilization percentage to use for autoscaling. -## @param cleanuperr.nodeSelector The node selector to use for the pod. -## @param cleanuperr.tolerations The tolerations to use for the pod. -## @param cleanuperr.affinity The affinity to use for the pod. -## @param cleanuperr.secrets.existingSecret The name of an existing Secret to use for credentials instead of creating a new one. -## @param cleanuperr.secrets.qbittorrent.username The qBittorrent username to be stored in the secret. -## @param cleanuperr.secrets.qbittorrent.password The qBittorrent password to be stored in the secret. -## @param cleanuperr.secrets.sonarr.apiKey The Sonarr API key to be stored in the secret. -## @param cleanuperr.secrets.radarr.apiKey The Radarr API key to be stored in the secret. -## @param cleanuperr.secrets.lidarr.apiKey The Lidarr API key to be stored in the secret. -## @param cleanuperr.env.TZ The timezone to use for the pod. -## @param cleanuperr.env.DRY_RUN Enable dry run mode to log actions without actually performing them. -## @param cleanuperr.env.LOGGING__LOGLEVEL The log level for the application. -## @param cleanuperr.env.LOGGING__FILE__ENABLED Whether to enable file logging. -## @param cleanuperr.env.LOGGING__FILE__PATH The path to store log files. -## @param cleanuperr.env.LOGGING__ENHANCED Whether to enable enhanced logging. -## @param cleanuperr.env.HTTP_MAX_RETRIES The maximum number of HTTP retries. -## @param cleanuperr.env.HTTP_TIMEOUT The HTTP timeout in seconds. -## @param cleanuperr.env.HTTP_VALIDATE_CERT Whether to validate HTTPS certificates. -## @param cleanuperr.env.SEARCH_ENABLED Whether to enable search functionality. -## @param cleanuperr.env.SEARCH_DELAY The delay between searches in seconds. -## @param cleanuperr.env.QUEUECLEANER__ENABLED Whether to enable queue cleaner functionality. -## @param cleanuperr.env.TRIGGERS__QUEUECLEANER The cron schedule for queue cleaner. -## @param cleanuperr.env.QUEUECLEANER__IGNORED_DOWNLOADS_PATH Path to ignored downloads list. Set to /ignored to use the default. -## @param cleanuperr.env.QUEUECLEANER__RUNSEQUENTIALLY Whether to run queue cleaner sequentially. -## @param cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_MAX_STRIKES Maximum failed import strikes before action. -## @param cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_IGNORE_PRIVATE Whether to ignore private trackers for failed imports. -## @param cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_DELETE_PRIVATE Whether to delete private tracker torrents on failed imports. -## @param cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_IGNORE_PATTERNS__0 Patterns to ignore for failed imports. -## @param cleanuperr.env.QUEUECLEANER__IMPORT_FAILED_IGNORE_PATTERNS__1 Additional patterns to ignore for failed imports. -## @param cleanuperr.env.QUEUECLEANER__STALLED_MAX_STRIKES Maximum stalled strikes before action. -## @param cleanuperr.env.QUEUECLEANER__STALLED_RESET_STRIKES_ON_PROGRESS Whether to reset strikes on progress for stalled downloads. -## @param cleanuperr.env.QUEUECLEANER__STALLED_IGNORE_PRIVATE Whether to ignore private trackers for stalled torrents. -## @param cleanuperr.env.QUEUECLEANER__STALLED_DELETE_PRIVATE Whether to delete private tracker torrents when stalled. -## @param cleanuperr.env.QUEUECLEANER__DOWNLOADING_METADATA_MAX_STRIKES Maximum strikes for downloading metadata. -## @param cleanuperr.env.QUEUECLEANER__SLOW_MAX_STRIKES Maximum slow download strikes before action. -## @param cleanuperr.env.QUEUECLEANER__SLOW_RESET_STRIKES_ON_PROGRESS Whether to reset strikes on progress for slow downloads. -## @param cleanuperr.env.QUEUECLEANER__SLOW_IGNORE_PRIVATE Whether to ignore private trackers for slow downloads. -## @param cleanuperr.env.QUEUECLEANER__SLOW_DELETE_PRIVATE Whether to delete private tracker torrents when slow. -## @param cleanuperr.env.QUEUECLEANER__SLOW_MIN_SPEED Minimum speed threshold for slow downloads. -## @param cleanuperr.env.QUEUECLEANER__SLOW_MAX_TIME Maximum time allowed for slow downloads. -## @param cleanuperr.env.QUEUECLEANER__SLOW_IGNORE_ABOVE_SIZE Ignore torrents above this size for slow download checks. -## @param cleanuperr.env.CONTENTBLOCKER__ENABLED Whether to enable content blocker functionality. -## @param cleanuperr.env.TRIGGERS__CONTENTBLOCKER Cron schedule for content blocker. -## @param cleanuperr.env.CONTENTBLOCKER__IGNORED_DOWNLOADS_PATH Path to ignored downloads for content blocker. Set to /ignored to use the default. -## @param cleanuperr.env.CONTENTBLOCKER__IGNORE_PRIVATE Whether to ignore private trackers for content blocking. -## @param cleanuperr.env.CONTENTBLOCKER__DELETE_PRIVATE Whether to delete private tracker torrents when blocked. -## @param cleanuperr.env.DOWNLOADCLEANER__ENABLED Whether to enable download cleaner functionality. -## @param cleanuperr.env.TRIGGERS__DOWNLOADCLEANER Cron schedule for download cleaner. -## @param cleanuperr.env.DOWNLOADCLEANER__IGNORED_DOWNLOADS_PATH Path to ignored downloads for download cleaner. Set to /ignored to use the default. -## @param cleanuperr.env.DOWNLOADCLEANER__DELETE_PRIVATE Whether to delete private tracker torrents when cleaning. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__NAME Name for the first category (Sonarr). -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__NAME Name for the second category (Radarr). -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__NAME Name for the third category (Lidarr). -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__MAX_RATIO Max ratio for the first category. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__MAX_RATIO Max ratio for the second category. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__MAX_RATIO Max ratio for the third category. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__MIN_SEED_TIME Min seed time for the first category in minutes. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__MIN_SEED_TIME Min seed time for the second category in minutes. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__MIN_SEED_TIME Min seed time for the third category in minutes. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__0__MAX_SEED_TIME Max seed time for the first category in minutes. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__1__MAX_SEED_TIME Max seed time for the second category in minutes. -## @param cleanuperr.env.DOWNLOADCLEANER__CATEGORIES__2__MAX_SEED_TIME Max seed time for the third category in minutes. -## @param cleanuperr.env.DOWNLOADCLEANER__UNLINKED_TARGET_CATEGORY Target category for unlinked downloads. -## @param cleanuperr.env.DOWNLOADCLEANER__UNLINKED_USE_TAG Whether to use a tag for unlinked downloads. -## @param cleanuperr.env.DOWNLOADCLEANER__UNLINKED_IGNORED_ROOT_DIR Root directory to ignore for unlinked downloads. -## @param cleanuperr.env.DOWNLOADCLEANER__UNLINKED_CATEGORIES__0 First category to check for unlinked downloads. -## @param cleanuperr.env.DOWNLOADCLEANER__UNLINKED_CATEGORIES__1 Second category to check for unlinked downloads. -## @param cleanuperr.env.DOWNLOADCLEANER__UNLINKED_CATEGORIES__2 Third category to check for unlinked downloads. -## @param cleanuperr.env.DOWNLOAD_CLIENT The download client to use. -## @param cleanuperr.env.QBITTORRENT__URL The URL for qBittorrent web interface. -## @param cleanuperr.env.QBITTORRENT__URL_BASE The base URL for qBittorrent. -## @param cleanuperr.env.SONARR__ENABLED Whether to enable Sonarr integration. -## @param cleanuperr.env.SONARR__IMPORT_FAILED_MAX_STRIKES Maximum failed import strikes for Sonarr. -## @param cleanuperr.env.SONARR__BLOCK__TYPE The block type for Sonarr. -## @param cleanuperr.env.SONARR__BLOCK__PATH Path to the Sonarr blocklist. -## @param cleanuperr.env.SONARR__SEARCHTYPE The search type for Sonarr. -## @param cleanuperr.env.SONARR__INSTANCES__0__URL The URL for Sonarr. -## @param cleanuperr.env.RADARR__ENABLED Whether to enable Radarr integration. -## @param cleanuperr.env.RADARR__IMPORT_FAILED_MAX_STRIKES Maximum failed import strikes for Radarr. -## @param cleanuperr.env.RADARR__BLOCK__TYPE The block type for Radarr. -## @param cleanuperr.env.RADARR__BLOCK__PATH Path to the Radarr blocklist. -## @param cleanuperr.env.RADARR__INSTANCES__0__URL The URL for Radarr. -## @param cleanuperr.env.LIDARR__ENABLED Whether to enable Lidarr integration. -## @param cleanuperr.env.LIDARR__IMPORT_FAILED_MAX_STRIKES Maximum failed import strikes for Lidarr. -## @param cleanuperr.env.LIDARR__BLOCK__TYPE The block type for Lidarr. -## @param cleanuperr.env.LIDARR__BLOCK__PATH Path to the Lidarr blocklist. -## @param cleanuperr.env.LIDARR__INSTANCES__0__URL The URL for Lidarr. -## @param cleanuperr.ignoredDownloads.entries List of torrent names or patterns to ignore in the ignored_downloads.txt ConfigMap. -## @param cleanuperr.persistence.logs.enabled Whether to enable persistence. -## @param cleanuperr.persistence.logs.storageClass The storage class to use for the persistence. -## @param cleanuperr.persistence.logs.existingClaim The name of an existing claim to use for the persistence. -## @param cleanuperr.persistence.logs.accessMode The access mode to use for the persistence. -## @param cleanuperr.persistence.logs.size The size to use for the persistence. -## @param cleanuperr.persistence.logs.additionalVolumes Additional volumes to add to the pod. -## @param cleanuperr.persistence.logs.additionalMounts Additional volume mounts to add to the pod. -## -cleanuperr: - enabled: false - replicaCount: 1 - - image: - repository: ghcr.io/flmorg/cleanuperr - pullPolicy: IfNotPresent - tag: "latest" - - imagePullSecrets: [] - - deployment: - strategy: - type: Recreate - - serviceAccount: - create: true - annotations: {} - name: "" - - podAnnotations: {} - - podSecurityContext: {} - # fsGroup: 2000 - - securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - - initContainers: [] - # - name: init-container - # image: busybox - # command: ['sh', '-c', 'echo "this is an init container"'] - - resources: {} - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - targetMemoryUtilizationPercentage: 80 - - nodeSelector: {} - - tolerations: [] - - affinity: {} - - secrets: - existingSecret: "" - qbittorrent: - username: "" - password: "" - sonarr: - apiKey: "" - radarr: - apiKey: "" - lidarr: - apiKey: "" - - env: - # General Settings - TZ: "Europe/London" - DRY_RUN: false - LOGGING__LOGLEVEL: "Information" - LOGGING__FILE__ENABLED: true - LOGGING__FILE__PATH: "/var/logs" - LOGGING__ENHANCED: true - HTTP_MAX_RETRIES: "3" - HTTP_TIMEOUT: "100" - HTTP_VALIDATE_CERT: "Enabled" - # Search Settings - SEARCH_ENABLED: true - SEARCH_DELAY: "30" - # Queuecleaner Settings - QUEUECLEANER__ENABLED: true - TRIGGERS__QUEUECLEANER: "0 0/5 * * * ?" - QUEUECLEANER__IGNORED_DOWNLOADS_PATH: "/ignored/ignored_downloads" - QUEUECLEANER__RUNSEQUENTIALLY: true - QUEUECLEANER__IMPORT_FAILED_MAX_STRIKES: "0" - QUEUECLEANER__IMPORT_FAILED_IGNORE_PRIVATE: false - QUEUECLEANER__IMPORT_FAILED_DELETE_PRIVATE: false - QUEUECLEANER__IMPORT_FAILED_IGNORE_PATTERNS__0: "title mismatch" - QUEUECLEANER__IMPORT_FAILED_IGNORE_PATTERNS__1: "manual import required" - QUEUECLEANER__STALLED_MAX_STRIKES: "0" - QUEUECLEANER__STALLED_RESET_STRIKES_ON_PROGRESS: "false" - QUEUECLEANER__STALLED_IGNORE_PRIVATE: "false" - QUEUECLEANER__STALLED_DELETE_PRIVATE: "false" - QUEUECLEANER__DOWNLOADING_METADATA_MAX_STRIKES: "0" - QUEUECLEANER__SLOW_MAX_STRIKES: "0" - QUEUECLEANER__SLOW_RESET_STRIKES_ON_PROGRESS: false - QUEUECLEANER__SLOW_IGNORE_PRIVATE: false - QUEUECLEANER__SLOW_DELETE_PRIVATE: false - QUEUECLEANER__SLOW_MIN_SPEED: "" - QUEUECLEANER__SLOW_MAX_TIME: "0" - QUEUECLEANER__SLOW_IGNORE_ABOVE_SIZE: "" - # Content Blocker Settings - CONTENTBLOCKER__ENABLED: true - TRIGGERS__CONTENTBLOCKER: "0 0/5 * * * ?" - CONTENTBLOCKER__IGNORED_DOWNLOADS_PATH: "/ignored/ignored_downloads" - CONTENTBLOCKER__IGNORE_PRIVATE: false - CONTENTBLOCKER__DELETE_PRIVATE: false - # Download Cleaner Settings - DOWNLOADCLEANER__ENABLED: true - TRIGGERS__DOWNLOADCLEANER: "0 0 * * * ?" - DOWNLOADCLEANER__IGNORED_DOWNLOADS_PATH: "/ignored/ignored_downloads" - DOWNLOADCLEANER__DELETE_PRIVATE: false - DOWNLOADCLEANER__CATEGORIES__0__NAME: "tv-sonarr" - DOWNLOADCLEANER__CATEGORIES__1__NAME: "movies-radarr" - DOWNLOADCLEANER__CATEGORIES__2__NAME: "music-lidarr" - DOWNLOADCLEANER__CATEGORIES__0__MAX_RATIO: "1.0" - DOWNLOADCLEANER__CATEGORIES__1__MAX_RATIO: "1.0" - DOWNLOADCLEANER__CATEGORIES__2__MAX_RATIO: "1.0" - DOWNLOADCLEANER__CATEGORIES__0__MIN_SEED_TIME: "360" - DOWNLOADCLEANER__CATEGORIES__1__MIN_SEED_TIME: "360" - DOWNLOADCLEANER__CATEGORIES__2__MIN_SEED_TIME: "360" - DOWNLOADCLEANER__CATEGORIES__0__MAX_SEED_TIME: "720" - DOWNLOADCLEANER__CATEGORIES__1__MAX_SEED_TIME: "720" - DOWNLOADCLEANER__CATEGORIES__2__MAX_SEED_TIME: "720" - DOWNLOADCLEANER__UNLINKED_TARGET_CATEGORY: "cleanuperr-unlinked" - DOWNLOADCLEANER__UNLINKED_USE_TAG: false - DOWNLOADCLEANER__UNLINKED_IGNORED_ROOT_DIR: "/media/downloads" - DOWNLOADCLEANER__UNLINKED_CATEGORIES__0: "tv-sonarr" - DOWNLOADCLEANER__UNLINKED_CATEGORIES__1: "movies-radarr" - DOWNLOADCLEANER__UNLINKED_CATEGORIES__2: "music-lidarr" - # Download Client Settings - DOWNLOAD_CLIENT: "qbittorrent" - QBITTORRENT__URL: "http://servarr-qbittorrent-web:8080" - QBITTORRENT__URL_BASE: "" - # Arrs Settings - SONARR__ENABLED: true - SONARR__IMPORT_FAILED_MAX_STRIKES: "-1" - SONARR__BLOCK__TYPE: "blacklist" - SONARR__BLOCK__PATH: "https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist_permissive" - SONARR__SEARCHTYPE: "Episode" - SONARR__INSTANCES__0__URL: "http://servarr-sonarr:80" - RADARR__ENABLED: true - RADARR__IMPORT_FAILED_MAX_STRIKES: "-1" - RADARR__BLOCK__TYPE: "blacklist" - RADARR__BLOCK__PATH: "https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist_permissive" - RADARR__INSTANCES__0__URL: "http://servarr-radarr:7878" - LIDARR__ENABLED: false - LIDARR__IMPORT_FAILED_MAX_STRIKES: "-1" - LIDARR__BLOCK__TYPE: "blacklist" - LIDARR__BLOCK__PATH: "https://raw.githubusercontent.com/flmorg/cleanuperr/refs/heads/main/blacklist_permissive" - LIDARR__INSTANCES__0__URL: "http://servarr-lidarr:8686" - - ignoredDownloads: - # List of entries to add to the ignored_downloads.txt file - # Each entry should be a torrent name or pattern to ignore - entries: [] - # - "example.torrent" - # - "pattern*to*ignore" - - persistence: - logs: - enabled: false - storageClass: "" - existingClaim: "" - accessMode: ReadWriteOnce - size: 100Mi - additionalVolumes: [] - additionalMounts: []