Files
infrastructure/clusters/cl01tl/manifests/qbittorrent/ConfigMap-glutun-update-script.yaml

1924 lines
55 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: glutun-update-script
namespace: qbittorrent
labels:
app.kubernetes.io/name: glutun-update-script
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
data:
update.sh: |
API_ENDPOINT="http://localhost:8080/api/v2";
MAX_RETRIES=5
SUCCESS=false
echo " "
echo ">> Running Update Port Script ..."
echo " "
echo ">> Verifying required commands ..."
echo " "
for i in $(seq 1 "$MAX_RETRIES"); do
if apk update 2>&1 >/dev/null; then
echo ">> Attempt $i: Repositories are reachable"
SUCCESS=true
break
else
echo ">> Attempt $i: Connection failed, retrying in 5 seconds ..."
sleep 5
fi
done
if [ "$SUCCESS" = false ]; then
echo ">> ERROR: Could not connect to apk repositories after $MAX_RETRIES attempts, exiting ..."
exit 1
fi
if ! command -v curl 2>&1 >/dev/null; then
echo ">> Command curl could not be found, installing";
apk add --no-cache -q curl;
if [ $? -eq 0 ]; then
echo ">> Installation successful"
else
echo ">> Installation failed with exit code $?"
exit 1
fi
fi;
if ! command -v jq 2>&1 >/dev/null; then
echo " "
echo ">> Command jq could not be found, installing";
apk add --no-cache -q jq;
if [ $? -eq 0 ]; then
echo " "
echo ">> Installation successful"
else
echo " "
echo ">> Installation failed with exit code $?"
exit 1
fi
fi;
# echo " ";
# echo ">> Authentication ...";
# curl -i --silent --header 'Referer: http://localhost:8080' --output response_body_auth.json --data 'username=admin&password=adminadmin' "${API_ENDPOINT}/auth/login" -c cookie;
echo " ";
echo ">> Test access ...";
HTTP_STATUS=$(curl -i -X GET --silent --write-out '%{http_code}' --output response_body_test.json -b cookie -c cookie "${API_ENDPOINT}/app/version");
echo ">> HTTP Status Code: $HTTP_STATUS"
VERSION=$(tail -n 1 response_body_test.json)
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Access confirmed, qBittorrent version: ${VERSION}"
HTTP_STATUS=""
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
PAYLOAD=$( jq -n \
'{random_port: true}' );
echo " ";
echo ">> Setting port to random ...";
HTTP_STATUS=$(curl -i -X POST --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_random.json --data "json=$PAYLOAD" "${API_ENDPOINT}/app/setPreferences");
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Random port set"
HTTP_STATUS=""
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
echo " ";
echo ">> Sleeping for changes to take effect";
sleep 5;
PAYLOAD=$( jq -n \
"{listen_port: ${1}}" );
echo " ";
echo ">> Updating port with ${1} ...";
HTTP_STATUS=$(curl -i -X POST --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_update.json --data "json=$PAYLOAD" "${API_ENDPOINT}/app/setPreferences");
if [ "$HTTP_STATUS" == "200" ]; then
echo ">> Port set"
HTTP_STATUS=""
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
echo " ";
echo ">> Sleeping for changes to take effect";
sleep 5;
HTTP_STATUS=$(curl -i -X GET --silent -b cookie -c cookie --write-out '%{http_code}' --output response_body_check.json "${API_ENDPOINT}/app/preferences");
LISTEN_PORT=$(tail -n 1 response_body_check.json | jq -r .listen_port)
echo " ";
echo ">> qBittorrent's post is now: $LISTEN_PORT";
if [[ "$HTTP_STATUS" == "200" && "$LISTEN_PORT" == "${1}" ]]; then
echo ">> Port updated successfully!"
else
echo ">> ERROR: HTTP status code: $HTTP_STATUS"
exit 1
fi
---
apiVersion: v1
kind: ConfigMap
metadata:
name: qbit-manage-config
namespace: qbittorrent
labels:
app.kubernetes.io/name: qbit-manage-config
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
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: false
recheck: true
cat_update: true
tag_update: true
rem_unregistered: true
tag_tracker_error: true
rem_orphaned: true
tag_nohardlinks: false
share_limits: true
skip_qb_version_check: true
skip_cleanup: false
qbt:
host: qbittorrent.qbittorrent:8080
user:
pass:
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
nohardlinks_tag: no-hardlinks
stalled_tag: stalled
share_limits_min_num_seeds_tag: min-seeds-not-reached
share_limits_last_active_tag: last-active-not-reached
tag_nohardlinks_filter_completed: true
force_auto_tmm_ignore_tags: []
rem_unregistered_ignore_list: []
directory:
root_dir: /mnt/store/Torrent/
recycle_bin: /qbittorrent/Trash
torrents_dir: /qbittorrent/qBittorrent/BT_backup
orphaned_dir: /qbittorrent/Orphaned
cat:
-< COMPLETED: /mnt/store/Torrent/FINISHED/COMPLETED
-< IMPORT: /mnt/store/Torrent/FINISHED/IMPORT
-< SAVE: /mnt/store/Torrent/FINISHED/SAVE
-< ZIM: /mnt/store/Kiwix
lidarr: /mnt/store/Torrent/FINISHED/LIDARR
prowlarr: /mnt/store/Torrent/FINISHED/SAVE
radarr-4k: /mnt/store/Torrent/FINISHED/RADARR4K
radarr-anime: /mnt/store/Torrent/FINISHED/RADARRANIME
radarr-standup: /mnt/store/Torrent/FINISHED/RADARRSTANDUP
radarr: /mnt/store/Torrent/FINISHED/RADARR
shelfmark-audiobooks: /mnt/store/Torrent/FINISHED/SHELFMARKAUDIOBOOKS
shelfmark-books: /mnt/store/Torrent/FINISHED/SHELFMARKBOOKS
sonarr-4k: /mnt/store/Torrent/FINISHED/SONARR4K
sonarr-anime: /mnt/store/Torrent/FINISHED/SONARRANIME
sonarr: /mnt/store/Torrent/FINISHED/SONARR
tracker:
alpharatio.cc:
tag: AlphaRatio
avistaz:
tag: Avistaz
cathode-ray.tube:
tag: CathodeRayTube
mvgroup.org:
tag: MVGroup
torrentleech|tleechreload:
tag: TorrentLeech
archive.org:
tag: InternetArchive
openzim.org:
tag: Zim
coppersurfer.tk|arenabg.com|explodie.org|tfile.co|1337x.org|zer0day.to|i2p.rocks|ccc.de|nwps.ws|opentrackr.org:
tag: Other
share_limits:
private:
priority: 1
include_any_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: true
# save:
# priority: 2
# categories:
# - -< SAVE
# max_ratio: 2.0
# min_seeding_time: 14d
# max_seeding_time: 30d
# min_num_seeds: 2
# last_active: 30d
# cleanup: false
# zim:
# priority: 3
# categories:
# - -< ZIM
# max_ratio: 2.0
# min_seeding_time: 14d
# max_seeding_time: 30d
# min_num_seeds: 2
# last_active: 30d
# cleanup: false
default:
priority: 999
include_any_tags:
- Other
categories:
- -< COMPLETED
max_seeding_time: 3d
limit_upload_speed: 100
cleanup: true
recyclebin:
enabled: true
empty_after_x_days: 7
save_torrents: true
split_by_category: true
orphaned:
empty_after_x_days: 30
exclude_patterns:
- /mnt/store/Torrent/QBITTORRENT/*
- /mnt/store/Torrent/TORRENT/*
- /mnt/store/Torrent/DOWNLOADING/*
- '**/.DS_Store'
- '**/Thumbs.db'
- '**/@eaDir'
- '**/*.!qB'
- '**/*_unpackerred'
max_orphaned_files_to_delete: 50
# apprise:
# api_url: http://localhost:8000/notify
# notify_url: ""
#
# webhooks:
# error: apprise
# run_start: apprise
# run_end: apprise
# function:
# rem_orphaned: apprise
# cleanup_dirs: apprise
# tag_tracker_error:
# share_limits:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbittorrent-main
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/controller: main
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: qbittorrent
template:
metadata:
labels:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
spec:
enableServiceLinks: false
serviceAccountName: default
automountServiceAccountToken: true
hostIPC: false
hostNetwork: false
hostPID: false
dnsPolicy: ClusterFirst
initContainers:
- args:
- -ec
- |
sysctl -w net.ipv4.ip_forward=1;
sysctl -w net.ipv6.conf.all.disable_ipv6=1
command:
- /bin/sh
image: busybox:1.37.0
imagePullPolicy: IfNotPresent
name: init-sysctl
resources:
requests:
cpu: 10m
memory: 128Mi
securityContext:
privileged: true
containers:
- env:
- name: QBITTORRENT_HOST
value: localhost
- name: QBITTORRENT_PORT
value: "8080"
- name: EXPORTER_PORT
value: "9022"
- name: EXPORTER_LOG_LEVEL
value: INFO
image: esanchezm/prometheus-qbittorrent-exporter:v1.6.0
imagePullPolicy: IfNotPresent
name: exporter
resources:
requests:
cpu: 10m
memory: 64Mi
- env:
- name: VPN_SERVICE_PROVIDER
value: protonvpn
- name: VPN_TYPE
value: wireguard
- name: WIREGUARD_PRIVATE_KEY
valueFrom:
secretKeyRef:
key: private-key
name: qbittorrent-wireguard-conf
- name: UPDATER_PROTONVPN_EMAIL
valueFrom:
secretKeyRef:
key: proton-email
name: qbittorrent-wireguard-conf
- name: UPDATER_PROTONVPN_PASSWORD
valueFrom:
secretKeyRef:
key: proton-password
name: qbittorrent-wireguard-conf
- name: VPN_PORT_FORWARDING
value: "on"
- name: VPN_PORT_FORWARDING_UP_COMMAND
value: /bin/sh -c "/gluetun/update.sh {{PORTS}}"
- name: PORT_FORWARD_ONLY
value: "on"
- name: FIREWALL_OUTBOUND_SUBNETS
value: 192.168.1.0/24,10.244.0.0/16
- name: FIREWALL_INPUT_PORTS
value: 8080,9022
- name: DNS_UPSTREAM_RESOLVER_TYPE
value: dot
- name: HTTPPROXY
value: "off"
- name: SHADOWSOCKS
value: "off"
image: ghcr.io/qdm12/gluetun:v3.41.1@sha256:1a5bf4b4820a879cdf8d93d7ef0d2d963af56670c9ebff8981860b6804ebc8ab
imagePullPolicy: IfNotPresent
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- (ip rule del table 51820; ip -6 rule del table 51820) || true
livenessProbe:
exec:
command:
- /gluetun-entrypoint
- healthcheck
failureThreshold: 5
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 15
name: gluetun
resources:
limits:
devic.es/tun: "1"
requests:
cpu: 10m
devic.es/tun: "1"
memory: 64Mi
securityContext:
capabilities:
add:
- NET_ADMIN
- SYS_MODULE
privileged: true
volumeMounts:
- mountPath: /gluetun/update.sh
name: update-script
subPath: update.sh
- env:
- name: TZ
value: US/Central
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: UMASK_SET
value: "002"
- name: WEBUI_PORT
value: "8080"
image: ghcr.io/linuxserver/qbittorrent:5.1.4@sha256:6a7ffbfff04dd109bff37c474bfee00aa08dea5edb78c670439be3ed242b70fa
imagePullPolicy: IfNotPresent
name: qbittorrent
resources:
requests:
cpu: 500m
memory: 1Gi
volumeMounts:
- mountPath: /config/qBittorrent
name: config-data
- mountPath: /mnt/store
name: storage
volumes:
- name: config-data
persistentVolumeClaim:
claimName: qbittorrent-config-data
- name: storage
persistentVolumeClaim:
claimName: qbittorrent-nfs-storage
- configMap:
defaultMode: 493
name: glutun-update-script
name: update-script
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbittorrent-qbit-manage
labels:
app.kubernetes.io/controller: qbit-manage
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
annotations:
reloader.stakater.com/auto: "true"
namespace: qbittorrent
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/controller: qbit-manage
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: qbittorrent
template:
metadata:
labels:
app.kubernetes.io/controller: qbit-manage
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
spec:
enableServiceLinks: false
serviceAccountName: default
automountServiceAccountToken: true
hostIPC: false
hostNetwork: false
hostPID: false
dnsPolicy: ClusterFirst
initContainers:
- command:
- /bin/sh
- -ec
- |
cp /config/config.yml /app/config/config.yml
image: busybox:1.37.0
imagePullPolicy: IfNotPresent
name: init-copy-config
resources:
requests:
cpu: 10m
memory: 128Mi
volumeMounts:
- mountPath: /config/config.yml
mountPropagation: None
name: qbit-manage-config
readOnly: true
subPath: config.yml
- mountPath: /app/config
name: qbit-manage-config-data
containers:
- env:
- name: TZ
value: US/Central
- name: PGID
value: "1000"
- name: PUID
value: "1000"
- name: APPRISE_STORAGE_MODE
value: memory
- name: APPRISE_STATEFUL_MODE
value: disabled
- name: APPRISE_WORKER_COUNT
value: "1"
- name: APPRISE_STATELESS_URLS
valueFrom:
secretKeyRef:
key: ntfy-url
name: qbittorrent-qbit-manage-config
image: caronc/apprise:v1.3.2
imagePullPolicy: IfNotPresent
name: apprise-api
resources:
requests:
cpu: 10m
memory: 128Mi
- env:
- name: TZ
value: US/Central
- name: QBT_SCHEDULE
value: 0 * * * *
- name: QBT_STARTUP_DELAY
value: "360"
- name: QBT_CONFIG_DIR
value: /app/config/
- name: QBT_LOGFILE
value: /app/var/activity.log
- name: QBT_LOG_LEVEL
value: INFO
image: ghcr.io/stuffanthings/qbit_manage:v4.6.5
imagePullPolicy: IfNotPresent
name: qbit-manage
resources:
requests:
cpu: 10m
memory: 64Mi
volumeMounts:
- mountPath: /qbittorrent/qBittorrent
name: config-data
- mountPath: /config/config.yml
mountPropagation: None
name: qbit-manage-config
readOnly: true
subPath: config.yml
- mountPath: /app/config
name: qbit-manage-config-data
- mountPath: /app/var
name: qbit-manage-config-var
- mountPath: /mnt/store
name: storage
volumes:
- name: config-data
persistentVolumeClaim:
claimName: qbittorrent-config-data
- configMap:
name: qbit-manage-config
name: qbit-manage-config
- name: qbit-manage-config-data
persistentVolumeClaim:
claimName: qbittorrent-qbit-manage-config-data
- emptyDir: {}
name: qbit-manage-config-var
- name: storage
persistentVolumeClaim:
claimName: qbittorrent-nfs-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbittorrent-qui
labels:
app.kubernetes.io/controller: qui
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/controller: qui
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: qbittorrent
template:
metadata:
labels:
app.kubernetes.io/controller: qui
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
spec:
enableServiceLinks: false
serviceAccountName: default
automountServiceAccountToken: true
hostIPC: false
hostNetwork: false
hostPID: false
dnsPolicy: ClusterFirst
containers:
- env:
- name: QUI__METRICS_ENABLED
value: "true"
- name: QUI__METRICS_HOST
value: 0.0.0.0
- name: QUI__METRICS_PORT
value: "9074"
- name: QUI__OIDC_ENABLED
value: "true"
- name: QUI__OIDC_ISSUER
value: https://auth.alexlebens.dev/application/o/qui/
- name: QUI__OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
key: client
name: qui-oidc-secret
- name: QUI__OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: secret
name: qui-oidc-secret
- name: QUI__OIDC_REDIRECT_URL
value: https://qui.alexlebens.net/api/auth/oidc/callback
- name: QUI__OIDC_DISABLE_BUILT_IN_LOGIN
value: "false"
image: ghcr.io/autobrr/qui:v1.14.1
imagePullPolicy: IfNotPresent
name: qui
resources:
requests:
cpu: 10m
memory: 128Mi
volumeMounts:
- mountPath: /config
name: qui-config-data
volumes:
- name: qui-config-data
persistentVolumeClaim:
claimName: qbittorrent-qui-config-data
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-config-data-backup-secret-external
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-config-data-backup-secret-external
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/digital-ocean
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/digital-ocean
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_DEFAULT_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_SECRET_ACCESS_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-config-data-backup-secret-local
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-config-data-backup-secret-local
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-local
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-local
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-config-data-backup-secret-remote
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-config-data-backup-secret-remote
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-remote
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-remote
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qbit-manage-config-data-backup-secret-external
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qbit-manage-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup-secret-external
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qbit-manage-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/digital-ocean
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/digital-ocean
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_DEFAULT_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_SECRET_ACCESS_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qbit-manage-config-data-backup-secret-local
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qbit-manage-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup-secret-local
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qbit-manage-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-local
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-local
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qbit-manage-config-data-backup-secret-remote
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qbit-manage-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup-secret-remote
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qbit-manage-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-remote
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-remote
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qbit-manage-config
namespace: qbittorrent
labels:
app.kubernetes.io/name: qbittorrent-qbit-manage-config
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
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
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qui-config-data-backup-secret-external
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qui-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qui-config-data-backup-secret-external
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qui-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/digital-ocean
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/digital-ocean
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_DEFAULT_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: AWS_SECRET_ACCESS_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qui-config-data-backup-secret-local
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qui-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qui-config-data-backup-secret-local
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qui-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-local
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-local
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-qui-config-data-backup-secret-remote
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qui-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qui-config-data-backup-secret-remote
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ .BUCKET_ENDPOINT }}/qbittorrent/qbittorrent-qui-config-data"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-remote
metadataPolicy: None
property: BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /volsync/restic/garage-remote
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/volsync-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qbittorrent-wireguard-conf
namespace: qbittorrent
labels:
app.kubernetes.io/name: qbittorrent-wireguard-conf
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: private-key
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /protonvpn/conf/cl01tl
metadataPolicy: None
property: private-key
- secretKey: proton-email
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /protonvpn/conf/cl01tl
metadataPolicy: None
property: email
- secretKey: proton-password
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /protonvpn/conf/cl01tl
metadataPolicy: None
property: password
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: qui-oidc-secret
namespace: qbittorrent
labels:
app.kubernetes.io/name: qui-oidc-secret
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: secret
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /authentik/oidc/qui
metadataPolicy: None
property: secret
- secretKey: client
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /authentik/oidc/qui
metadataPolicy: None
property: client
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: qbittorrent-main
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- "qbittorrent.alexlebens.net"
rules:
- backendRefs:
- group: ""
kind: Service
name: qbittorrent
namespace: qbittorrent
port: 8080
weight: 100
matches:
- path:
type: PathPrefix
value: /
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: qbittorrent-qui
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- "qui.alexlebens.net"
rules:
- backendRefs:
- group: ""
kind: Service
name: qbittorrent-qui
namespace: qbittorrent
port: 80
weight: 100
matches:
- path:
type: PathPrefix
value: /
---
apiVersion: v1
kind: Namespace
metadata:
name: qbittorrent
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/warn: privileged
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: qbittorrent-nfs-storage
namespace: qbittorrent
labels:
app.kubernetes.io/name: qbittorrent-nfs-storage
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
spec:
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-client
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
path: /volume2/Storage
server: synologybond.alexlebens.net
mountOptions:
- vers=4
- minorversion=1
- noac
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: qbittorrent-config-data
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
annotations:
helm.sh/resource-policy: keep
namespace: qbittorrent
spec:
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: "1Gi"
storageClassName: "ceph-filesystem"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbittorrent-nfs-storage
namespace: qbittorrent
labels:
app.kubernetes.io/name: qbittorrent-nfs-storage
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
spec:
volumeName: qbittorrent-nfs-storage
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: qbittorrent-qbit-manage-config-data
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
annotations:
helm.sh/resource-policy: keep
namespace: qbittorrent
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "ceph-block"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: qbittorrent-qui-config-data
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
annotations:
helm.sh/resource-policy: keep
namespace: qbittorrent
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
storageClassName: "ceph-block"
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-config-data-backup-source-external
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-config-data-backup
spec:
sourcePVC: qbittorrent-config-data
trigger:
schedule: 58 10 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-config-data-backup-secret-external
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
moverSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
runAsGroup: 1000
runAsUser: 1000
copyMethod: Snapshot
storageClassName: ceph-filesystem
volumeSnapshotClassName: ceph-filesystem-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-config-data-backup-source-local
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-config-data-backup
spec:
sourcePVC: qbittorrent-config-data
trigger:
schedule: 58 8 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-config-data-backup-secret-local
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
moverSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
runAsGroup: 1000
runAsUser: 1000
copyMethod: Snapshot
storageClassName: ceph-filesystem
volumeSnapshotClassName: ceph-filesystem-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-config-data-backup-source-remote
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-config-data-backup
spec:
sourcePVC: qbittorrent-config-data
trigger:
schedule: 58 9 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-config-data-backup-secret-remote
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
moverSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
runAsGroup: 1000
runAsUser: 1000
copyMethod: Snapshot
storageClassName: ceph-filesystem
volumeSnapshotClassName: ceph-filesystem-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-qbit-manage-config-data-backup-source-external
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qbit-manage-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup
spec:
sourcePVC: qbittorrent-qbit-manage-config-data
trigger:
schedule: 0 13 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-qbit-manage-config-data-backup-secret-external
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-qbit-manage-config-data-backup-source-local
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qbit-manage-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup
spec:
sourcePVC: qbittorrent-qbit-manage-config-data
trigger:
schedule: 0 11 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-qbit-manage-config-data-backup-secret-local
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-qbit-manage-config-data-backup-source-remote
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qbit-manage-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qbit-manage-config-data-backup
spec:
sourcePVC: qbittorrent-qbit-manage-config-data
trigger:
schedule: 0 12 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-qbit-manage-config-data-backup-secret-remote
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-qui-config-data-backup-source-external
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qui-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qui-config-data-backup
spec:
sourcePVC: qbittorrent-qui-config-data
trigger:
schedule: 2 13 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-qui-config-data-backup-secret-external
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-qui-config-data-backup-source-local
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qui-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qui-config-data-backup
spec:
sourcePVC: qbittorrent-qui-config-data
trigger:
schedule: 2 11 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-qui-config-data-backup-secret-local
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi
---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: qbittorrent-qui-config-data-backup-source-remote
namespace: qbittorrent
labels:
helm.sh/chart: volsync-target-qui-config-0.8.0
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/part-of: qbittorrent
app.kubernetes.io/version: "0.8.0"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent-qui-config-data-backup
spec:
sourcePVC: qbittorrent-qui-config-data
trigger:
schedule: 2 12 * * *
restic:
pruneIntervalDays: 7
repository: qbittorrent-qui-config-data-backup-secret-remote
retain:
daily: 7
hourly: 0
monthly: 3
weekly: 4
yearly: 1
copyMethod: Snapshot
storageClassName: ceph-block
volumeSnapshotClassName: ceph-blockpool-snapshot
cacheCapacity: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: qbittorrent-qbit-manage
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/service: qbittorrent-qbit-manage
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
type: ClusterIP
ports:
- port: 8000
targetPort: 8000
protocol: TCP
name: apprise
selector:
app.kubernetes.io/controller: qbit-manage
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
---
apiVersion: v1
kind: Service
metadata:
name: qbittorrent-qui
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/service: qbittorrent-qui
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 7476
protocol: TCP
name: http
- port: 9074
targetPort: 9074
protocol: TCP
name: metrics
selector:
app.kubernetes.io/controller: qui
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
---
apiVersion: v1
kind: Service
metadata:
name: qbittorrent
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/service: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
type: ClusterIP
ports:
- port: 9999
targetPort: 9999
protocol: TCP
name: health
- port: 8080
targetPort: 8080
protocol: TCP
name: http
- port: 9022
targetPort: 9022
protocol: TCP
name: metrics
selector:
app.kubernetes.io/controller: main
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: qbittorrent-apprise
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
jobLabel: qbittorrent-apprise
namespaceSelector:
matchNames:
- qbittorrent
selector:
matchLabels:
app.kubernetes.io/instance: qbittorrent-apprise
app.kubernetes.io/name: qbittorrent-apprise
endpoints:
- interval: 30s
path: /metrics
port: apprise
scrapeTimeout: 15s
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: qbittorrent-main
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
jobLabel: qbittorrent-main
namespaceSelector:
matchNames:
- qbittorrent
selector:
matchLabels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/name: qbittorrent
endpoints:
- interval: 30s
path: /metrics
port: metrics
scrapeTimeout: 15s
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: qbittorrent-qui
labels:
app.kubernetes.io/instance: qbittorrent
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: qbittorrent
helm.sh/chart: qbittorrent-4.6.2
namespace: qbittorrent
spec:
jobLabel: qbittorrent-qui
namespaceSelector:
matchNames:
- qbittorrent
selector:
matchLabels:
app.kubernetes.io/instance: qbittorrent-qui
app.kubernetes.io/name: qbittorrent-qui
endpoints:
- interval: 30s
path: /metrics
port: metrics
scrapeTimeout: 15s