diff --git a/clusters/cl01tl/platform/qbittorrent/Chart.yaml b/clusters/cl01tl/platform/qbittorrent/Chart.yaml index 6bda90bec..ebfb67308 100644 --- a/clusters/cl01tl/platform/qbittorrent/Chart.yaml +++ b/clusters/cl01tl/platform/qbittorrent/Chart.yaml @@ -13,9 +13,11 @@ sources: - https://github.com/qbittorrent/qBittorrent - https://github.com/qdm12/gluetun - https://github.com/esanchezm/prometheus-qbittorrent-exporter + - https://github.com/StuffAnThings/qbit_manage - https://docs.linuxserver.io/images/docker-qbittorrent/ - https://github.com/qdm12/gluetun/pkgs/container/gluetun - https://hub.docker.com/r/esanchezm/prometheus-qbittorrent-exporter + - https://github.com/stuffanthings/qbit_manage/pkgs/container/qbit_manage - https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template maintainers: - name: alexlebens diff --git a/clusters/cl01tl/platform/qbittorrent/templates/config-map.yaml b/clusters/cl01tl/platform/qbittorrent/templates/config-map.yaml index 82163d485..78d571ff7 100644 --- a/clusters/cl01tl/platform/qbittorrent/templates/config-map.yaml +++ b/clusters/cl01tl/platform/qbittorrent/templates/config-map.yaml @@ -16,3 +16,130 @@ data: fi; echo "updating port with $1"; curl -i -X POST -d "json={\"listen_port\": \"${1}\"}" "http://localhost:8080/api/v2/app/setPreferences"; + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: qbit-manage-config + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: qbit-manage-config + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +data: + config.yml: | + # Please refer to the link below for more details on how to set up the configuration file + # https://github.com/StuffAnThings/qbit_manage/wiki/Config-Setup + + commands: + dry_run: True + recheck: False + cat_update: False + tag_update: False + rem_unregistered: False + tag_tracker_error: False + rem_orphaned: False + tag_nohardlinks: False + share_limits: False + skip_qb_version_check: False + skip_cleanup: False + + qbt: + host: "localhost:8080" + + settings: + force_auto_tmm: True + tracker_error_tag: tracker-error + share_limits_tag: share-limit + share_limits_min_seeding_time_tag: seed-time-not-reached + cat_filter_completed: False + share_limits_filter_completed: False + rem_unregistered_filter_completed: False + cat_update_all: True + disable_qbt_default_share_limits: True + tag_stalled_torrents: True + + directory: + root_dir: "/mnt/store/Torrent/" + recycle_bin: "/qbittorrent/Trash" + torrents_dir: "/qbittorrent/qBittorrent/BT_backup" + orphaned_dir: "/qbittorrent/Orphaned" + + cat: + lidarr: "/mnt/store/Torrent/FINISHED/LIDARR" + prowlarr: "/mnt/store/Torrent/FINISHED/SAVE" + radarr: "/mnt/store/Torrent/FINISHED/RADARR" + radarr-4k: "/mnt/store/Torrent/FINISHED/RADARR4K" + radarr-anime: "/mnt/store/Torrent/FINISHED/RADARRANIME" + radarr-standup: "/mnt/store/Torrent/FINISHED/RADARRSTANDUP" + sonarr: "/mnt/store/Torrent/FINISHED/SONARR" + sonarr-4k: "/mnt/store/Torrent/FINISHED/SONARR4K" + sonarr-anime: "/mnt/store/Torrent/FINISHED/SONARRANIME" + "-< ZIM": "/mnt/store/Kiwix" + "-< SAVE": "/mnt/store/Torrent/FINISHED/SAVE" + "-< IMPORT": "/mnt/store/Torrent/FINISHED/IMPORT" + "-< COMPLETED": /mnt/store/Torrent/FINISHED/COMPLETED + + tracker: + alpharatio.cc: + tag: AlphaRatio + avistaz: + tag: Avistaz + cathod-ray.tube: + tag: CathodeRayTube + mvgroup.org: + tag: MVGroup + torrentleech|tleechreload: + tag: TorrentLeech + + share_limits: + private + priority: 1 + include_all_tags: + - AlphaRatio + - TorrentLeech + categories: + - "-< COMPLETED" + max_ratio: 2.0 + min_seeding_time: 14d + max_seeding_time: 30d + min_num_seeds: 2 + last_active: 3d + cleanup: false + default: + priority: 999 + categories: + - "-< COMPLETED" + max_ratio: 2.0 + max_seeding_time: 7d + limit_upload_speed: 100 + cleanup: false + + recyclebin: + enabled: true + empty_after_x_days: 7 + save_torrents: true + split_by_category: true + + orphaned: + empty_after_x_days: 30 + exclude_patterns: + - "**/.DS_Store" + - "**/Thumbs.db" + - "**/@eaDir" + - "/data/torrents/temp/**" + - "**/*.!qB" + - "**/*_unpackerred" + max_orphaned_files_to_delete: 50 + + apprise: + notify_url: !ENV QBIT_NTFY_URL + + webhooks: + error: apprise + run_start: apprise + run_end: apprise + function: + rem_orphaned: apprise + cleanup_dirs: apprise diff --git a/clusters/cl01tl/platform/qbittorrent/templates/external-secret.yaml b/clusters/cl01tl/platform/qbittorrent/templates/external-secret.yaml index 4df32ee10..acbbd67f7 100644 --- a/clusters/cl01tl/platform/qbittorrent/templates/external-secret.yaml +++ b/clusters/cl01tl/platform/qbittorrent/templates/external-secret.yaml @@ -19,3 +19,26 @@ spec: key: /protonvpn/conf/cl01tl metadataPolicy: None property: private-key + +--- +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: qbittorrent-qbit-manage-config + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: qbittorrent-qbit-manage-config + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + data: + - secretKey: ntfy-url + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/qbittorrent/qbit-manage + metadataPolicy: None + property: ntfy-url diff --git a/clusters/cl01tl/platform/qbittorrent/values.yaml b/clusters/cl01tl/platform/qbittorrent/values.yaml index 8e928deaf..88dd0fea0 100644 --- a/clusters/cl01tl/platform/qbittorrent/values.yaml +++ b/clusters/cl01tl/platform/qbittorrent/values.yaml @@ -109,6 +109,31 @@ qbittorrent: requests: cpu: 10m memory: 64Mi + qbit-manage: + image: + repository: ghcr.io/stuffanthings/qbit_manage + tag: v4.3.0 + pullPolicy: IfNotPresent + env: + - name: QBT_SCHEDULE + value: 0 * * * * + - name: QBT_STARTUP_DELAY + value: 360 + - name: QBT_CONFIG + value: /config/config.yml + - name: QBT_LOGFILE + value: /cache/activity.log + - name: QBT_LOG_LEVEL + value: INFO + - name: QBIT_NTFY_URL + valueFrom: + secretKeyRef: + name: qbittorrent-qbit-manage-config + key: ntfy-url + resources: + requests: + cpu: 10m + memory: 64Mi service: main: controller: main @@ -134,6 +159,9 @@ qbittorrent: qbittorrent: - path: /config readOnly: false + qbit-manage: + - path: /qbittorrent + readOnly: false update-script: enabled: true type: configMap @@ -144,6 +172,32 @@ qbittorrent: gluetun: - path: /gluetun/update.sh subPath: update.sh + qbit-manage-config-data: + storageClass: ceph-block + accessMode: ReadWriteOnce + size: 1Gi + retain: true + advancedMounts: + main: + qbit-manage: + - path: /config + readOnly: false + qbit-manage-config-cache: + type: emptyDir + advancedMounts: + main: + qbit-manage: + - path: /cache + readOnly: false + qbit-manage-config: + enabled: true + type: configMap + name: qbit-manage-config + advancedMounts: + main: + qbit-manage: + - path: /config/config.yml + subPath: config.yml storage: type: persistentVolumeClaim existingClaim: qbittorrent-nfs-storage @@ -152,3 +206,6 @@ qbittorrent: qbittorrent: - path: /mnt/store readOnly: false + qbit-manage: + - path: /mnt/store + readOnly: false