add servarr
This commit is contained in:
18
clusters/cl01tl/applications/lazy-librarian/Chart.yaml
Normal file
18
clusters/cl01tl/applications/lazy-librarian/Chart.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: lazy-librarian
|
||||||
|
version: 1.0.0
|
||||||
|
description: A Helm chart for deploying LazyLibrarian
|
||||||
|
keywords:
|
||||||
|
- lazylibrarian
|
||||||
|
- ebooks
|
||||||
|
sources:
|
||||||
|
- https://gitlab.com/LazyLibrarian/LazyLibrarian.git
|
||||||
|
- https://lazylibrarian.gitlab.io
|
||||||
|
maintainers:
|
||||||
|
- name: alexlebens
|
||||||
|
dependencies:
|
||||||
|
- name: app-template
|
||||||
|
repository: https://bjw-s.github.io/helm-charts/
|
||||||
|
version: 3.1.0
|
||||||
|
icon: https://lazylibrarian.gitlab.io/logo.svg
|
||||||
|
appVersion: version-b3a081ec
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: lazy-librarian-nfs-storage
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: lazy-librarian-nfs-storage
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: lazy-librarian-nfs-storage
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: lazy-librarian-nfs-storage
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: lazy-librarian-nfs-storage
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
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
|
67
clusters/cl01tl/applications/lazy-librarian/values.yaml
Normal file
67
clusters/cl01tl/applications/lazy-librarian/values.yaml
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
app-template:
|
||||||
|
controllers:
|
||||||
|
main:
|
||||||
|
type: deployment
|
||||||
|
replicas: 1
|
||||||
|
strategy: Recreate
|
||||||
|
revisionHistoryLimit: 3
|
||||||
|
containers:
|
||||||
|
main:
|
||||||
|
image:
|
||||||
|
repository: lscr.io/linuxserver/lazylibrarian
|
||||||
|
tag: version-b3a081ec
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
env:
|
||||||
|
PUID: 1001
|
||||||
|
PGID: 1001
|
||||||
|
TZ: US/Central
|
||||||
|
DOCKER_MODS: linuxserver/mods:lazylibrarian-ffmpeg|linuxserver/mods:universal-calibre
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 256Mi
|
||||||
|
serviceAccount:
|
||||||
|
create: true
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
controller: main
|
||||||
|
ports:
|
||||||
|
http:
|
||||||
|
port: 5299
|
||||||
|
protocol: HTTP
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
className: traefik
|
||||||
|
hosts:
|
||||||
|
- host: lazylibrarian.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
service:
|
||||||
|
name: lazy-librarian
|
||||||
|
port: 5299
|
||||||
|
tls:
|
||||||
|
- secretName: lazy-librarian-secret-tls
|
||||||
|
hosts:
|
||||||
|
- lazylibrarian.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
storageClass: ceph-block
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 10Gi
|
||||||
|
retain: true
|
||||||
|
globalMounts:
|
||||||
|
- path: /config
|
||||||
|
storage:
|
||||||
|
enabled: true
|
||||||
|
existingClaim: lazy-librarian-nfs-storage
|
||||||
|
globalMounts:
|
||||||
|
- path: /mnt/store
|
16
clusters/cl01tl/applications/lidarr2/Chart.yaml
Normal file
16
clusters/cl01tl/applications/lidarr2/Chart.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: lidarr
|
||||||
|
version: 1.0.0
|
||||||
|
sources:
|
||||||
|
- https://github.com/Lidarr/Lidarr
|
||||||
|
- https://github.com/k8s-home-lab/helm-charts/tree/master/charts/stable/lidarr
|
||||||
|
- https://github.com/alexlebens/helm-charts/charts/postgres-cluster
|
||||||
|
dependencies:
|
||||||
|
- name: lidarr
|
||||||
|
version: 15.1.1
|
||||||
|
repository: https://k8s-home-lab.github.io/helm-charts/
|
||||||
|
- name: postgres-cluster
|
||||||
|
alias: postgres-16-cluster
|
||||||
|
version: 3.1.0
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "2.2.5.4141"
|
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: lidarr2-postgresql-16-cluster-backup-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: lidarr2-postgresql-16-cluster-backup-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: database
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: ACCESS_KEY_ID
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-lidarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: access_key
|
||||||
|
- secretKey: ACCESS_SECRET_KEY
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-lidarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: secret_key
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
108
clusters/cl01tl/applications/lidarr2/values.yaml
Normal file
108
clusters/cl01tl/applications/lidarr2/values.yaml
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
lidarr:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/lidarr
|
||||||
|
tag: "2.3.3.4204"
|
||||||
|
env:
|
||||||
|
TZ: US/Central
|
||||||
|
LIDARR__POSTGRES_MAIN_DB: lidarr-main
|
||||||
|
LIDARR__POSTGRES_LOG_DB: lidarr-log
|
||||||
|
LIDARR__POSTGRES_HOST:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: lidarr2-postgresql-16-cluster-app
|
||||||
|
key: host
|
||||||
|
LIDARR__POSTGRES_PORT:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: lidarr2-postgresql-16-cluster-app
|
||||||
|
key: port
|
||||||
|
LIDARR__POSTGRES_USER:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: lidarr2-postgresql-16-cluster-app
|
||||||
|
key: user
|
||||||
|
LIDARR__POSTGRES_PASSWORD:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: lidarr2-postgresql-16-cluster-app
|
||||||
|
key: password
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ingressClassName: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
hosts:
|
||||||
|
- host: lidarr.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: lidarr2-secret-tls
|
||||||
|
hosts:
|
||||||
|
- lidarr.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /config
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 5Gi
|
||||||
|
media:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /mnt/store
|
||||||
|
type: pvc
|
||||||
|
existingClaim: lidarr2-nfs-storage
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 2000
|
||||||
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
supplementalGroups:
|
||||||
|
- 44
|
||||||
|
- 100
|
||||||
|
- 109
|
||||||
|
- 65539
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
prometheusRule:
|
||||||
|
enabled: true
|
||||||
|
rules:
|
||||||
|
- alert: LidarrDown
|
||||||
|
annotations:
|
||||||
|
description: Lidarr service is down.
|
||||||
|
summary: Lidarr is down.
|
||||||
|
expr: |
|
||||||
|
lidarr_system_status == 0
|
||||||
|
for: 5m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
exporter:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/exportarr
|
||||||
|
tag: v2.0.1
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
||||||
|
postgres-16-cluster:
|
||||||
|
mode: standalone
|
||||||
|
cluster:
|
||||||
|
walStorage:
|
||||||
|
storageClass: local-path
|
||||||
|
storage:
|
||||||
|
storageClass: local-path
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
initdb:
|
||||||
|
postInitApplicationSQL:
|
||||||
|
- CREATE DATABASE "lidarr-main" OWNER "app";
|
||||||
|
- CREATE DATABASE "lidarr-log" OWNER "app";
|
||||||
|
backup:
|
||||||
|
enabled: true
|
||||||
|
endpointURL: https://s3.us-east-2.amazonaws.com
|
||||||
|
destinationPath: s3://cl01tl-postgresql-backups/lidarr2
|
||||||
|
endpointCredentials: lidarr2-postgresql-16-cluster-backup-secret
|
||||||
|
backupIndex: 1
|
||||||
|
retentionPolicy: 14d
|
11
clusters/cl01tl/applications/prowlarr/Chart.yaml
Normal file
11
clusters/cl01tl/applications/prowlarr/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: prowlarr
|
||||||
|
version: 0.0.1
|
||||||
|
sources:
|
||||||
|
- https://github.com/Prowlarr/Prowlarr
|
||||||
|
- https://github.com/k8s-home-lab/helm-charts/tree/master/charts/stable/prowlarr
|
||||||
|
dependencies:
|
||||||
|
- name: prowlarr
|
||||||
|
version: 5.1.2
|
||||||
|
repository: https://k8s-home-lab.github.io/helm-charts/
|
||||||
|
appVersion: "1.13.3.4273"
|
38
clusters/cl01tl/applications/prowlarr/values.yaml
Normal file
38
clusters/cl01tl/applications/prowlarr/values.yaml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
prowlarr:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/prowlarr
|
||||||
|
tag: "1.17.2.4511"
|
||||||
|
env:
|
||||||
|
TZ: US/Central
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ingressClassName: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
hosts:
|
||||||
|
- host: prowlarr.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: prowlarr-secret-tls
|
||||||
|
hosts:
|
||||||
|
- prowlarr.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
storageClass: ceph-block
|
||||||
|
size: 1Gi
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 2000
|
||||||
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
supplementalGroups:
|
||||||
|
- 44
|
||||||
|
- 100
|
||||||
|
- 109
|
||||||
|
- 65539
|
16
clusters/cl01tl/applications/radarr5-4k/Chart.yaml
Normal file
16
clusters/cl01tl/applications/radarr5-4k/Chart.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: radarr5-4k
|
||||||
|
version: 1.0.0
|
||||||
|
sources:
|
||||||
|
- https://github.com/Radarr/Radarr
|
||||||
|
- https://github.com/k8s-home-lab/helm-charts/tree/master/charts/stable/radarr
|
||||||
|
- https://github.com/alexlebens/helm-charts/charts/postgres-cluster
|
||||||
|
dependencies:
|
||||||
|
- name: radarr
|
||||||
|
version: 17.1.2
|
||||||
|
repository: https://k8s-home-lab.github.io/helm-charts/
|
||||||
|
- name: postgres-cluster
|
||||||
|
alias: postgres-16-cluster
|
||||||
|
version: 3.1.0
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "5.4.6.8723"
|
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: radarr5-4k-postgresql-16-cluster-backup-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: radarr5-4k-postgresql-16-cluster-backup-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: database
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: ACCESS_KEY_ID
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-radarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: access_key
|
||||||
|
- secretKey: ACCESS_SECRET_KEY
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-radarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: secret_key
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
110
clusters/cl01tl/applications/radarr5-4k/values.yaml
Normal file
110
clusters/cl01tl/applications/radarr5-4k/values.yaml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
radarr:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/radarr
|
||||||
|
tag: "5.6.0.8846"
|
||||||
|
env:
|
||||||
|
TZ: US/Central
|
||||||
|
RADARR__POSTGRES_MAIN_DB: radarr-main
|
||||||
|
RADARR__POSTGRES_LOG_DB: radarr-log
|
||||||
|
RADARR__POSTGRES_HOST:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-4k-postgresql-16-cluster-app
|
||||||
|
key: host
|
||||||
|
RADARR__POSTGRES_PORT:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-4k-postgresql-16-cluster-app
|
||||||
|
key: port
|
||||||
|
RADARR__POSTGRES_USER:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-4k-postgresql-16-cluster-app
|
||||||
|
key: user
|
||||||
|
RADARR__POSTGRES_PASSWORD:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-4k-postgresql-16-cluster-app
|
||||||
|
key: password
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ingressClassName: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
hosts:
|
||||||
|
- host: radarr-4k.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: radarr5-4k-secret-tls
|
||||||
|
hosts:
|
||||||
|
- radarr-4k.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /config
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 20Gi
|
||||||
|
media:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /mnt/store
|
||||||
|
type: pvc
|
||||||
|
existingClaim: radarr5-4k-nfs-storage
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 2000
|
||||||
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
supplementalGroups:
|
||||||
|
- 44
|
||||||
|
- 100
|
||||||
|
- 109
|
||||||
|
- 65539
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
prometheusRule:
|
||||||
|
enabled: true
|
||||||
|
rules:
|
||||||
|
- alert: RadarrDown
|
||||||
|
annotations:
|
||||||
|
description: Radarr 4k service is down.
|
||||||
|
summary: Radarr 4k is down.
|
||||||
|
expr: |
|
||||||
|
radarr_system_status == 0
|
||||||
|
for: 5m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
exporter:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/exportarr
|
||||||
|
tag: v2.0.1
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
||||||
|
postgres-16-cluster:
|
||||||
|
mode: standalone
|
||||||
|
cluster:
|
||||||
|
walStorage:
|
||||||
|
storageClass: local-path
|
||||||
|
storage:
|
||||||
|
storageClass: local-path
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
initdb:
|
||||||
|
database: app
|
||||||
|
owner: app
|
||||||
|
postInitApplicationSQL:
|
||||||
|
- CREATE DATABASE "radarr-main" OWNER "app";
|
||||||
|
- CREATE DATABASE "radarr-log" OWNER "app";
|
||||||
|
backup:
|
||||||
|
enabled: true
|
||||||
|
endpointURL: https://s3.us-east-2.amazonaws.com
|
||||||
|
destinationPath: s3://cl01tl-postgresql-backups/radarr5-4k
|
||||||
|
endpointCredentials: radarr5-4k-postgresql-16-cluster-backup-secret
|
||||||
|
backupIndex: 1
|
||||||
|
retentionPolicy: 14d
|
16
clusters/cl01tl/applications/radarr5/Chart.yaml
Normal file
16
clusters/cl01tl/applications/radarr5/Chart.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: radarr5
|
||||||
|
version: 1.0.0
|
||||||
|
sources:
|
||||||
|
- https://github.com/Radarr/Radarr
|
||||||
|
- https://github.com/k8s-home-lab/helm-charts/tree/master/charts/stable/radarr
|
||||||
|
- https://github.com/alexlebens/helm-charts/charts/postgres-cluster
|
||||||
|
dependencies:
|
||||||
|
- name: radarr
|
||||||
|
version: 17.1.2
|
||||||
|
repository: https://k8s-home-lab.github.io/helm-charts/
|
||||||
|
- name: postgres-cluster
|
||||||
|
alias: postgres-16-cluster
|
||||||
|
version: 3.1.0
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "5.4.6.8723"
|
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: radarr5-postgresql-16-cluster-backup-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: radarr5-postgresql-16-cluster-backup-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: database
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: ACCESS_KEY_ID
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-radarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: access_key
|
||||||
|
- secretKey: ACCESS_SECRET_KEY
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-radarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: secret_key
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
110
clusters/cl01tl/applications/radarr5/values.yaml
Normal file
110
clusters/cl01tl/applications/radarr5/values.yaml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
radarr:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/radarr
|
||||||
|
tag: "5.6.0.8846"
|
||||||
|
env:
|
||||||
|
TZ: US/Central
|
||||||
|
RADARR__POSTGRES_MAIN_DB: radarr-main
|
||||||
|
RADARR__POSTGRES_LOG_DB: radarr-log
|
||||||
|
RADARR__POSTGRES_HOST:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-postgresql-16-cluster-app
|
||||||
|
key: host
|
||||||
|
RADARR__POSTGRES_PORT:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-postgresql-16-cluster-app
|
||||||
|
key: port
|
||||||
|
RADARR__POSTGRES_USER:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-postgresql-16-cluster-app
|
||||||
|
key: user
|
||||||
|
RADARR__POSTGRES_PASSWORD:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: radarr5-postgresql-16-cluster-app
|
||||||
|
key: password
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ingressClassName: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
hosts:
|
||||||
|
- host: radarr.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: radarr5-secret-tls
|
||||||
|
hosts:
|
||||||
|
- radarr.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /config
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 20Gi
|
||||||
|
media:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /mnt/store
|
||||||
|
type: pvc
|
||||||
|
existingClaim: radarr5-nfs-storage
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 2000
|
||||||
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
supplementalGroups:
|
||||||
|
- 44
|
||||||
|
- 100
|
||||||
|
- 109
|
||||||
|
- 65539
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
prometheusRule:
|
||||||
|
enabled: true
|
||||||
|
rules:
|
||||||
|
- alert: RadarrDown
|
||||||
|
annotations:
|
||||||
|
description: Radarr service is down.
|
||||||
|
summary: Radarr is down.
|
||||||
|
expr: |
|
||||||
|
radarr_system_status == 0
|
||||||
|
for: 5m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
exporter:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/exportarr
|
||||||
|
tag: v2.0.1
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
||||||
|
postgres-16-cluster:
|
||||||
|
mode: standalone
|
||||||
|
cluster:
|
||||||
|
walStorage:
|
||||||
|
storageClass: local-path
|
||||||
|
storage:
|
||||||
|
storageClass: local-path
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
initdb:
|
||||||
|
database: app
|
||||||
|
owner: app
|
||||||
|
postInitApplicationSQL:
|
||||||
|
- CREATE DATABASE "radarr-main" OWNER "app";
|
||||||
|
- CREATE DATABASE "radarr-log" OWNER "app";
|
||||||
|
backup:
|
||||||
|
enabled: true
|
||||||
|
endpointURL: https://s3.us-east-2.amazonaws.com
|
||||||
|
destinationPath: s3://cl01tl-postgresql-backups/radarr5
|
||||||
|
endpointCredentials: radarr5-postgresql-16-cluster-backup-secret
|
||||||
|
backupIndex: 1
|
||||||
|
retentionPolicy: 14d
|
16
clusters/cl01tl/applications/sonarr4-4k/Chart.yaml
Normal file
16
clusters/cl01tl/applications/sonarr4-4k/Chart.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: sonarr4-4k
|
||||||
|
version: 1.0.0
|
||||||
|
sources:
|
||||||
|
- https://github.com/Sonarr/Sonarr
|
||||||
|
- https://github.com/k8s-home-lab/helm-charts/tree/master/charts/stable/sonarr
|
||||||
|
- https://github.com/alexlebens/helm-charts/charts/postgres-cluster
|
||||||
|
dependencies:
|
||||||
|
- name: sonarr
|
||||||
|
version: 17.1.1
|
||||||
|
repository: https://k8s-home-lab.github.io/helm-charts/
|
||||||
|
- name: postgres-cluster
|
||||||
|
alias: postgres-16-cluster
|
||||||
|
version: 3.1.0
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "4.0.4.1491"
|
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: sonarr4-4k-postgresql-16-cluster-backup-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: sonarr4-4k-postgresql-16-cluster-backup-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: database
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: ACCESS_KEY_ID
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-sonarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: access_key
|
||||||
|
- secretKey: ACCESS_SECRET_KEY
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-sonarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: secret_key
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
110
clusters/cl01tl/applications/sonarr4-4k/values.yaml
Normal file
110
clusters/cl01tl/applications/sonarr4-4k/values.yaml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
sonarr:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/sonarr
|
||||||
|
tag: "4.0.4.1491"
|
||||||
|
env:
|
||||||
|
TZ: US/Central
|
||||||
|
SONARR__POSTGRES_MAIN_DB: sonarr-main
|
||||||
|
SONARR__POSTGRES_LOG_DB: sonarr-log
|
||||||
|
SONARR__POSTGRES_HOST:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-4k-postgresql-16-cluster-app
|
||||||
|
key: host
|
||||||
|
SONARR__POSTGRES_PORT:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-4k-postgresql-16-cluster-app
|
||||||
|
key: port
|
||||||
|
SONARR__POSTGRES_USER:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-4k-postgresql-16-cluster-app
|
||||||
|
key: user
|
||||||
|
SONARR__POSTGRES_PASSWORD:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-4k-postgresql-16-cluster-app
|
||||||
|
key: password
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ingressClassName: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
hosts:
|
||||||
|
- host: sonarr-4k.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: sonarr4-4k-secret-tls
|
||||||
|
hosts:
|
||||||
|
- sonarr-4k.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /config
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 20Gi
|
||||||
|
media:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /mnt/store
|
||||||
|
type: pvc
|
||||||
|
existingClaim: sonarr4-4k-nfs-storage
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 2000
|
||||||
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
supplementalGroups:
|
||||||
|
- 44
|
||||||
|
- 100
|
||||||
|
- 109
|
||||||
|
- 65539
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
prometheusRule:
|
||||||
|
enabled: true
|
||||||
|
rules:
|
||||||
|
- alert: SonarrDown
|
||||||
|
annotations:
|
||||||
|
description: Sonarr 4k service is down.
|
||||||
|
summary: Sonarr 4k is down.
|
||||||
|
expr: |
|
||||||
|
sonarr_system_status == 0
|
||||||
|
for: 5m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
exporter:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/exportarr
|
||||||
|
tag: v2.0.1
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
||||||
|
postgres-16-cluster:
|
||||||
|
mode: standalone
|
||||||
|
cluster:
|
||||||
|
walStorage:
|
||||||
|
storageClass: local-path
|
||||||
|
storage:
|
||||||
|
storageClass: local-path
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
initdb:
|
||||||
|
database: app
|
||||||
|
owner: app
|
||||||
|
postInitApplicationSQL:
|
||||||
|
- CREATE DATABASE "sonarr-main" OWNER "app";
|
||||||
|
- CREATE DATABASE "sonarr-log" OWNER "app";
|
||||||
|
backup:
|
||||||
|
enabled: true
|
||||||
|
endpointURL: https://s3.us-east-2.amazonaws.com
|
||||||
|
destinationPath: s3://cl01tl-postgresql-backups/sonarr4-4k
|
||||||
|
endpointCredentials: sonarr4-4k-postgresql-16-cluster-backup-secret
|
||||||
|
backupIndex: 1
|
||||||
|
retentionPolicy: 14d
|
16
clusters/cl01tl/applications/sonarr4/Chart.yaml
Normal file
16
clusters/cl01tl/applications/sonarr4/Chart.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: sonarr4
|
||||||
|
version: 1.0.0
|
||||||
|
sources:
|
||||||
|
- https://github.com/Sonarr/Sonarr
|
||||||
|
- https://github.com/k8s-home-lab/helm-charts/tree/master/charts/stable/sonarr
|
||||||
|
- https://github.com/alexlebens/helm-charts/charts/postgres-cluster
|
||||||
|
dependencies:
|
||||||
|
- name: sonarr
|
||||||
|
version: 17.1.1
|
||||||
|
repository: https://k8s-home-lab.github.io/helm-charts/
|
||||||
|
- name: postgres-cluster
|
||||||
|
alias: postgres-16-cluster
|
||||||
|
version: 3.1.0
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "4.0.4.1491"
|
@@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: sonarr4-postgresql-16-cluster-backup-secret
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: sonarr4-postgresql-16-cluster-backup-secret
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: database
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: ACCESS_KEY_ID
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-sonarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: access_key
|
||||||
|
- secretKey: ACCESS_SECRET_KEY
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /aws/keys/cl01tl-sonarr-postgresql
|
||||||
|
metadataPolicy: None
|
||||||
|
property: secret_key
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-nfs-storage"
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
110
clusters/cl01tl/applications/sonarr4/values.yaml
Normal file
110
clusters/cl01tl/applications/sonarr4/values.yaml
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
sonarr:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/sonarr
|
||||||
|
tag: "4.0.4.1491"
|
||||||
|
env:
|
||||||
|
TZ: US/Central
|
||||||
|
SONARR__POSTGRES_MAIN_DB: sonarr-main
|
||||||
|
SONARR__POSTGRES_LOG_DB: sonarr-log
|
||||||
|
SONARR__POSTGRES_HOST:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-postgresql-16-cluster-app
|
||||||
|
key: host
|
||||||
|
SONARR__POSTGRES_PORT:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-postgresql-16-cluster-app
|
||||||
|
key: port
|
||||||
|
SONARR__POSTGRES_USER:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-postgresql-16-cluster-app
|
||||||
|
key: user
|
||||||
|
SONARR__POSTGRES_PASSWORD:
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: sonarr4-postgresql-16-cluster-app
|
||||||
|
key: password
|
||||||
|
ingress:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ingressClassName: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
hosts:
|
||||||
|
- host: sonarr.alexlebens.net
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: sonarr4-secret-tls
|
||||||
|
hosts:
|
||||||
|
- sonarr.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /config
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 20Gi
|
||||||
|
media:
|
||||||
|
enabled: true
|
||||||
|
mountPath: /mnt/store
|
||||||
|
type: pvc
|
||||||
|
existingClaim: sonarr4-nfs-storage
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 1000
|
||||||
|
fsGroup: 2000
|
||||||
|
fsGroupChangePolicy: "OnRootMismatch"
|
||||||
|
supplementalGroups:
|
||||||
|
- 44
|
||||||
|
- 100
|
||||||
|
- 109
|
||||||
|
- 65539
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
prometheusRule:
|
||||||
|
enabled: true
|
||||||
|
rules:
|
||||||
|
- alert: SonarrDown
|
||||||
|
annotations:
|
||||||
|
description: Sonarr service is down.
|
||||||
|
summary: Sonarr is down.
|
||||||
|
expr: |
|
||||||
|
sonarr_system_status == 0
|
||||||
|
for: 5m
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
exporter:
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/onedr0p/exportarr
|
||||||
|
tag: v2.0.1
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
||||||
|
postgres-16-cluster:
|
||||||
|
mode: standalone
|
||||||
|
cluster:
|
||||||
|
walStorage:
|
||||||
|
storageClass: local-path
|
||||||
|
storage:
|
||||||
|
storageClass: local-path
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
initdb:
|
||||||
|
database: app
|
||||||
|
owner: app
|
||||||
|
postInitApplicationSQL:
|
||||||
|
- CREATE DATABASE "sonarr-main" OWNER "app";
|
||||||
|
- CREATE DATABASE "sonarr-log" OWNER "app";
|
||||||
|
backup:
|
||||||
|
enabled: true
|
||||||
|
endpointURL: https://s3.us-east-2.amazonaws.com
|
||||||
|
destinationPath: s3://cl01tl-postgresql-backups/sonarr4
|
||||||
|
endpointCredentials: sonarr4-postgresql-16-cluster-backup-secret
|
||||||
|
backupIndex: 1
|
||||||
|
retentionPolicy: 14d
|
12
clusters/cl01tl/applications/tdarr/Chart.yaml
Normal file
12
clusters/cl01tl/applications/tdarr/Chart.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: tdarr
|
||||||
|
version: 0.0.3
|
||||||
|
home:
|
||||||
|
sources:
|
||||||
|
- https://github.com/HaveAGitGat/Tdarr
|
||||||
|
- https://github.com/alexlebens/helm-charts/tree/main/charts/tdarr
|
||||||
|
dependencies:
|
||||||
|
- name: tdarr
|
||||||
|
version: 0.0.6
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "2.17.01"
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: tdarr-nfs-storage
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: tdarr-nfs-storage
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: tdarr-nfs-storage
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
54
clusters/cl01tl/applications/tdarr/values.yaml
Normal file
54
clusters/cl01tl/applications/tdarr/values.yaml
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
tdarr:
|
||||||
|
global:
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
claimName: tdarr-nfs-storage
|
||||||
|
mountPath: /mnt/store
|
||||||
|
server:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 256Mi
|
||||||
|
limits:
|
||||||
|
cpu: 5000m
|
||||||
|
memory: 2Gi
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
className: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
host: tdarr.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
storageClassName: ceph-block
|
||||||
|
storageSize: 50Gi
|
||||||
|
server:
|
||||||
|
storageClassName: ceph-block
|
||||||
|
storageSize: 50Gi
|
||||||
|
node:
|
||||||
|
replicas: 3
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
gpu.intel.com/i915: 1
|
||||||
|
cpu: 100m
|
||||||
|
memory: 1Gi
|
||||||
|
limits:
|
||||||
|
gpu.intel.com/i915: 1
|
||||||
|
cpu: 5000m
|
||||||
|
memory: 5Gi
|
||||||
|
persistence:
|
||||||
|
cache:
|
||||||
|
size: 5Gi
|
||||||
|
tdarr-exporter:
|
||||||
|
metrics:
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: true
|
||||||
|
settings:
|
||||||
|
config:
|
||||||
|
url: https://tdarr.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
14
clusters/cl01tl/platform/qbittorrent/Chart.yaml
Normal file
14
clusters/cl01tl/platform/qbittorrent/Chart.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: qbittorrent
|
||||||
|
version: 0.0.7
|
||||||
|
home:
|
||||||
|
sources:
|
||||||
|
- https://github.com/qbittorrent/qBittorrent
|
||||||
|
- https://docs.linuxserver.io/images/docker-qbittorrent/
|
||||||
|
- https://github.com/qdm12/gluetun
|
||||||
|
- https://github.com/alexlebens/helm-charts/tree/main/charts/homepage
|
||||||
|
dependencies:
|
||||||
|
- name: qbittorrent
|
||||||
|
version: 0.0.8
|
||||||
|
repository: http://alexlebens.github.io/helm-charts
|
||||||
|
appVersion: "version-4.6.3-r0"
|
@@ -0,0 +1,48 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: qbittorrent-auth
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: web
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: admin-password
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /qbittorrent/auth
|
||||||
|
metadataPolicy: None
|
||||||
|
property: admin-password
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: qbittorrent-wireguard-conf
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: web
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
secretStoreRef:
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
name: vault
|
||||||
|
data:
|
||||||
|
- secretKey: wg0.conf
|
||||||
|
remoteRef:
|
||||||
|
conversionStrategy: Default
|
||||||
|
decodingStrategy: None
|
||||||
|
key: /qbittorrent/config
|
||||||
|
metadataPolicy: None
|
||||||
|
property: wg0.conf
|
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: qbittorrent-nfs-storage
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
volumeName: qbittorrent-nfs-storage
|
||||||
|
storageClassName: nfs-client
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
@@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
name: qbittorrent-nfs-storage
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/component: storage
|
||||||
|
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||||
|
spec:
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: nfs-client
|
||||||
|
capacity:
|
||||||
|
storage: 1Gi
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
nfs:
|
||||||
|
path: {{ .Values.persistence.media.nfsPath }}
|
||||||
|
server: {{ .Values.persistence.media.nfsServer }}
|
||||||
|
mountOptions:
|
||||||
|
- vers=4
|
||||||
|
- minorversion=1
|
||||||
|
- noac
|
64
clusters/cl01tl/platform/qbittorrent/values.yaml
Normal file
64
clusters/cl01tl/platform/qbittorrent/values.yaml
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
qbittorrent:
|
||||||
|
global:
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
claimName: qbittorrent-nfs-storage
|
||||||
|
mountPath: /mnt/store
|
||||||
|
server:
|
||||||
|
env:
|
||||||
|
- name: TZ
|
||||||
|
value: US/Central
|
||||||
|
- name: PUID
|
||||||
|
value: "1000"
|
||||||
|
- name: PGID
|
||||||
|
value: "1000"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 2Gi
|
||||||
|
limits:
|
||||||
|
cpu: 2000m
|
||||||
|
memory: 2Gi
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
className: traefik
|
||||||
|
annotations:
|
||||||
|
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||||
|
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||||
|
host: qbittorrent.alexlebens.net
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
storageClassName: nfs-client
|
||||||
|
storageSize: 1Gi
|
||||||
|
gluetun:
|
||||||
|
enabled: true
|
||||||
|
env:
|
||||||
|
- name: VPN_SERVICE_PROVIDER
|
||||||
|
value: custom
|
||||||
|
- name: VPN_TYPE
|
||||||
|
value: wireguard
|
||||||
|
- name: FIREWALL_OUTBOUND_SUBNETS
|
||||||
|
value: 192.168.1.0/24,10.244.0.0/16
|
||||||
|
- name: FIREWALL_INPUT_PORTS
|
||||||
|
value: 8080,9022
|
||||||
|
- name: DOT
|
||||||
|
value: "off"
|
||||||
|
existingSecretName: qbittorrent-wireguard-conf
|
||||||
|
metrics:
|
||||||
|
enabled: true
|
||||||
|
serviceMonitor:
|
||||||
|
enabled: true
|
||||||
|
exporter:
|
||||||
|
env:
|
||||||
|
- name: QBITTORRENT_USER
|
||||||
|
value: admin
|
||||||
|
- name: QBITTORRENT_PASS
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: qbittorrent-auth
|
||||||
|
key: admin-password
|
||||||
|
persistence:
|
||||||
|
media:
|
||||||
|
nfsPath: /volume2/Storage
|
||||||
|
nfsServer: synologybond.alexlebens.net
|
Reference in New Issue
Block a user