k8s/qbittorrent.yaml
2025-05-19 22:41:11 -04:00

218 lines
4.9 KiB
YAML

---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbittorrent
spec:
replicas: 1
selector:
matchLabels:
app: qbittorrent
template:
metadata:
labels:
app: qbittorrent
spec:
containers:
- name: qbittorrent
image: linuxserver/qbittorrent:libtorrentv1
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
volumeMounts:
- name: qbittorrent-config-volume
mountPath: /config
- name: qbittorrent-downloads-volume
mountPath: /downloads
livenessProbe:
exec:
command:
- ping
- 1.1.1.1
- -I
- tun0
- -nqc
- '1'
- -W
- '4'
periodSeconds: 60
failureThreshold: 5
initialDelaySeconds: 20
timeoutSeconds: 10
ports:
- containerPort: 8080
- name: gluetun
image: qmcgaw/gluetun
env:
- name: VPN_SERVICE_PROVIDER
value: "protonvpn"
- name: OPENVPN_USER
valueFrom:
secretKeyRef:
name: protonvpn-secrets
key: PROTONVPN_USER
- name: OPENVPN_PASSWORD
valueFrom:
secretKeyRef:
name: protonvpn-secrets
key: PROTONVPN_PASSWORD
- name: SERVER_COUNTRIES
value: "United States"
- name: PORT_FORWARD_ONLY
value: "on"
securityContext:
capabilities:
add:
- NET_ADMIN
volumeMounts:
- name: gluetun-config-volume
mountPath: /gluetun
volumes:
- name: qbittorrent-config-volume
persistentVolumeClaim:
claimName: qbittorrent-config-pvc
- name: qbittorrent-downloads-volume
persistentVolumeClaim:
claimName: qbittorrent-downloads-pvc
- name: gluetun-config-volume
persistentVolumeClaim:
claimName: gluetun-config-pvc
---
apiVersion: v1
kind: Service
metadata:
name: qbittorrent-svc
spec:
ports:
- port: 8080
targetPort: 8080
nodePort: 31080
type: NodePort
selector:
app: qbittorrent
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qbittorrent-http
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
rules:
- host: qb.reticulum.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qbittorrent-svc
port:
number: 8080
- host: qb.argentumcation.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qbittorrent-svc
port:
number: 8080
- host: qb.xn--2dkua.xn--tckwe
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qbittorrent-svc
port:
number: 8080
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: qbittorrent-config-pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
path: /mnt/raid/00_meta/05_service_config/qbittorrent
server: 192.168.1.146
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbittorrent-config-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: qbittorrent-config-pv
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: qbittorrent-downloads-pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
path: /mnt/raid/00_meta/01_downloads/
server: 192.168.1.146
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbittorrent-downloads-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: qbittorrent-downloads-pv
storageClassName: ""
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: gluetun-config-pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
path: /mnt/raid/00_meta/05_service_config/gluetun
server: 192.168.1.146
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gluetun-config-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeName: gluetun-config-pv
storageClassName: ""