apiVersion: v1 kind: Namespace metadata: name: qbittorrent --- apiVersion: apps/v1 kind: Deployment metadata: name: qbittorrent namespace: qbittorrent labels: app: qbittorrent spec: replicas: 1 selector: matchLabels: app: qbittorrent template: metadata: labels: app: qbittorrent spec: containers: - name: qbittorrent image: lscr.io/linuxserver/qbittorrent:latest ports: - containerPort: 6880 # Web UI - containerPort: 6881 # Torrenting (TCP) env: - name: PUID value: "1000" - name: PGID value: "1000" - name: TZ value: "Etc/UTC" - name: WEBUI_PORT value: "6880" - name: TORRENTING_PORT value: "6881" volumeMounts: - name: config mountPath: /config - name: downloads mountPath: /downloads volumes: - name: config persistentVolumeClaim: claimName: qbittorrent-config - name: downloads persistentVolumeClaim: claimName: qbittorrent-downloads --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qbittorrent-config namespace: qbittorrent labels: app: qbittorrent spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: local-path --- apiVersion: v1 kind: PersistentVolume metadata: name: qbittorrent-downloads-pv spec: capacity: storage: 100Gi accessModes: - ReadWriteMany nfs: server: 10.88.88.238 path: /volume1/jellyfin/media/downloads persistentVolumeReclaimPolicy: Retain --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qbittorrent-downloads namespace: qbittorrent labels: app: qbittorrent spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100Gi volumeName: qbittorrent-downloads-pv --- apiVersion: v1 kind: Service metadata: name: qbittorrent namespace: qbittorrent labels: app: qbittorrent spec: type: ClusterIP ports: - port: 80 targetPort: 6880 protocol: TCP name: webui - port: 6881 targetPort: 6881 protocol: TCP name: torrenting-tcp - port: 6881 targetPort: 6881 protocol: UDP name: torrenting-udp selector: app: qbittorrent