update chart
All checks were successful
lint-test-helm / lint-helm (push) Successful in 10s
render-manifests-push / render-manifests-push (push) Successful in 45s
renovate / renovate (push) Successful in 56s

This commit is contained in:
2025-12-24 00:07:03 -06:00
parent 7b00493594
commit b694333bd7
26 changed files with 213 additions and 508 deletions

View File

@@ -1,10 +1,10 @@
apiVersion: gateway.networking.k8s.io/v1 apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute kind: HTTPRoute
metadata: metadata:
name: http-route-seerr name: seerr
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: http-route-seerr app.kubernetes.io/name: seerr
app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }} app.kubernetes.io/part-of: {{ .Release.Name }}
spec: spec:

View File

@@ -1,19 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: shelly-plug
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: shelly-plug
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: shelly-plug
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: metrics
interval: 30s
scrapeTimeout: 10s
path: /metrics

View File

@@ -58,6 +58,18 @@ shelly-plug:
port: 80 port: 80
targetPort: 80 targetPort: 80
protocol: TCP protocol: TCP
serviceMonitor:
main:
selector:
matchLabels:
app.kubernetes.io/name: shelly-plug
app.kubernetes.io/instance: shelly-plug
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints:
- port: metrics
interval: 30s
scrapeTimeout: 10s
path: /metrics
persistence: persistence:
script: script:
storageClass: ceph-block storageClass: ceph-block

View File

@@ -22,4 +22,5 @@ dependencies:
repository: https://bjw-s-labs.github.io/helm-charts/ repository: https://bjw-s-labs.github.io/helm-charts/
version: 4.5.0 version: 4.5.0
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/slskd.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/slskd.png
# renovate: github=slskd/slskd
appVersion: 0.24.1 appVersion: 0.24.1

View File

@@ -1,28 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http-route-slskd
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: http-route-slskd
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- slskd.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: slskd
port: 5030
weight: 100

View File

@@ -1,19 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: slskd
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: slskd
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: slskd
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: http
interval: 3m
scrapeTimeout: 1m
path: /metrics

View File

@@ -117,6 +117,39 @@ slskd:
port: 5030 port: 5030
targetPort: 5030 targetPort: 5030
protocol: HTTP protocol: HTTP
serviceMonitor:
main:
selector:
matchLabels:
app.kubernetes.io/name: slskd
app.kubernetes.io/instance: slskd
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints:
- port: http
interval: 3m
scrapeTimeout: 1m
path: /metrics
route:
main:
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- slskd.alexlebens.net
rules:
- backendRefs:
- group: ''
kind: Service
name: slskd
port: 5030
weight: 100
matches:
- path:
type: PathPrefix
value: /
persistence: persistence:
slskd-config: slskd-config:
enabled: true enabled: true

View File

@@ -18,4 +18,5 @@ dependencies:
version: 4.2.0 version: 4.2.0
repository: https://piraeus.io/helm-charts/ repository: https://piraeus.io/helm-charts/
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/kubernetes.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/kubernetes.png
# renovate: github=kubernetes-csi/external-snapshotter
appVersion: v8.4.0 appVersion: v8.4.0

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.5.0 version: 4.5.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.1.4 version: 7.4.3
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.6.0 version: 0.6.0
digest: sha256:14a55afad20d644f4296a33cea5cfe1981ed8aca6e86578750071481df00d7c5 digest: sha256:27a29ef32a5c80bee9d8d76f7d6b9fe5017ca5d32145db670b2d97351b62cb06
generated: "2025-12-21T19:06:57.636330697Z" generated: "2025-12-24T00:06:26.378963-06:00"

View File

@@ -27,11 +27,12 @@ dependencies:
version: 4.5.0 version: 4.5.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.1.4 version: 7.4.3
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config
version: 0.6.0 version: 0.6.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png
# renovate: github=linuxserver/sonarr
appVersion: 4.0.14 appVersion: 4.0.14

View File

@@ -1,65 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sonarr-4k-postgresql-18-cluster-backup-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-4k-postgresql-18-cluster-backup-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/postgres-backups
metadataPolicy: None
property: access
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/postgres-backups
metadataPolicy: None
property: secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sonarr-4k-postgresql-18-cluster-backup-secret-garage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-4k-postgresql-18-cluster-backup-secret-garage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: ACCESS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_REGION

View File

@@ -1,28 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http-route-sonarr-4k
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: http-route-sonarr-4k
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- sonarr-4k.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: sonarr-4k
port: 80
weight: 100

View File

@@ -1,19 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: sonarr-4k
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-4k
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: sonarr-4k
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: metrics
interval: 3m
scrapeTimeout: 1m
path: /metrics

View File

@@ -59,6 +59,39 @@ sonarr-4k:
port: 9794 port: 9794
targetPort: 9794 targetPort: 9794
protocol: TCP protocol: TCP
serviceMonitor:
main:
selector:
matchLabels:
app.kubernetes.io/name: sonarr-4k
app.kubernetes.io/instance: sonarr-4k
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints:
- port: metrics
interval: 3m
scrapeTimeout: 1m
path: /metrics
route:
main:
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- sonarr-4k.alexlebens.net
rules:
- backendRefs:
- group: ''
kind: Service
name: sonarr-4k
port: 80
weight: 100
matches:
- path:
type: PathPrefix
value: /
persistence: persistence:
config: config:
forceRename: sonarr-4k-config forceRename: sonarr-4k-config
@@ -84,64 +117,50 @@ sonarr-4k:
postgres-18-cluster: postgres-18-cluster:
mode: recovery mode: recovery
cluster: cluster:
storage:
storageClass: local-path
walStorage:
storageClass: local-path
initdb: initdb:
database: app
owner: app
postInitSQL: postInitSQL:
- CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app";
- CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app";
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
destinationPath: s3://postgres-backups/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster
endpointURL: http://garage-main.garage:3900
index: 1 index: 1
endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret-garage
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
destinationPath: s3://postgres-backups/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster
index: 1 index: 1
endpointURL: http://garage-main.garage:3900 destinationBucket: postgres-backups
endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret-garage externalSecretCredentialPath: /garage/home-infra/postgres-backups
endpointCredentialsIncludeRegion: true
retentionPolicy: "3d"
isWALArchiver: true isWALArchiver: true
# - name: external
# destinationPath: s3://postgres-backups-ce540ddf106d186bbddca68a/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster
# index: 1
# endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret
# retentionPolicy: "30d"
# isWALArchiver: false
# - name: garage-remote # - name: garage-remote
# destinationPath: s3://postgres-backups/cl01tl/sonarr-4k/sonarr-4k-postgresql-18-cluster
# index: 1 # index: 1
# endpointURL: https://garage-ps10rp.boreal-beaufort.ts.net:3900 # destinationBucket: postgres-backups
# endpointCredentials: sonarr-4k-postgresql-18-cluster-backup-secret-garage # externalSecretCredentialPath: /garage/home-infra/postgres-backups
# retentionPolicy: "30d" # retentionPolicy: "90d"
# data: # data:
# compression: bzip2 # compression: bzip2
# jobs: 2 # - name: external
# index: 1
# endpointURL: https://nyc3.digitaloceanspaces.com
# destinationBucket: postgres-backups-ce540ddf106d186bbddca68a
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# isWALArchiver: false
scheduledBackups: scheduledBackups:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 0 0 * * *"
backupName: garage-local backupName: garage-local
# - name: daily-backup
# suspend: false
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
# immediate: true # immediate: true
# schedule: "0 0 4 * * SAT" # schedule: "0 0 4 * * SAT"
# backupName: garage-remote # backupName: garage-remote
# - name: daily-backup
# suspend: true
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
volsync-target-config: volsync-target-config:
pvcTarget: sonarr-4k-config pvcTarget: sonarr-4k-config
moverSecurityContext: moverSecurityContext:

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.5.0 version: 4.5.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.1.4 version: 7.4.3
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.6.0 version: 0.6.0
digest: sha256:8e6423c96c136039dd92f1f2f8ae3dd50f5f20dfdb1e47556ed3e0163d241aca digest: sha256:324fe0c8c4492572912c50624a47f9350f0eb9471fa93ca24c3d9ce825a562c9
generated: "2025-12-21T19:07:12.568573834Z" generated: "2025-12-24T00:06:34.718214-06:00"

View File

@@ -26,11 +26,12 @@ dependencies:
version: 4.5.0 version: 4.5.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.1.4 version: 7.4.3
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config
version: 0.6.0 version: 0.6.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png
# renovate: github=linuxserver/sonarr
appVersion: 4.0.14 appVersion: 4.0.14

View File

@@ -1,65 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sonarr-anime-postgresql-18-cluster-backup-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-anime-postgresql-18-cluster-backup-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/postgres-backups
metadataPolicy: None
property: access
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/postgres-backups
metadataPolicy: None
property: secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sonarr-anime-postgresql-18-cluster-backup-secret-garage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-anime-postgresql-18-cluster-backup-secret-garage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: ACCESS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_REGION

View File

@@ -1,28 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http-route-sonarr-anime
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: http-route-sonarr-anime
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- sonarr-anime.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: sonarr-anime
port: 80
weight: 100

View File

@@ -1,19 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: sonarr-anime
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-anime
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: sonarr-anime
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: metrics
interval: 3m
scrapeTimeout: 1m
path: /metrics

View File

@@ -59,6 +59,39 @@ sonarr-anime:
port: 9794 port: 9794
targetPort: 9794 targetPort: 9794
protocol: TCP protocol: TCP
serviceMonitor:
main:
selector:
matchLabels:
app.kubernetes.io/name: sonarr-anime
app.kubernetes.io/instance: sonarr-anime
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints:
- port: metrics
interval: 3m
scrapeTimeout: 1m
path: /metrics
route:
main:
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- sonarr-anime.alexlebens.net
rules:
- backendRefs:
- group: ''
kind: Service
name: sonarr-anime
port: 80
weight: 100
matches:
- path:
type: PathPrefix
value: /
persistence: persistence:
config: config:
forceRename: sonarr-anime-config forceRename: sonarr-anime-config
@@ -84,64 +117,50 @@ sonarr-anime:
postgres-18-cluster: postgres-18-cluster:
mode: recovery mode: recovery
cluster: cluster:
storage:
storageClass: local-path
walStorage:
storageClass: local-path
initdb: initdb:
database: app
owner: app
postInitSQL: postInitSQL:
- CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app";
- CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app";
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
destinationPath: s3://postgres-backups/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster
endpointURL: http://garage-main.garage:3900
index: 1 index: 1
endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret-garage
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
destinationPath: s3://postgres-backups/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster
index: 1 index: 1
endpointURL: http://garage-main.garage:3900 destinationBucket: postgres-backups
endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret-garage externalSecretCredentialPath: /garage/home-infra/postgres-backups
endpointCredentialsIncludeRegion: true
retentionPolicy: "3d"
isWALArchiver: true isWALArchiver: true
# - name: external # - name: garage-remote
# destinationPath: s3://postgres-backups-ce540ddf106d186bbddca68a/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster
# index: 1 # index: 1
# endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret # destinationBucket: postgres-backups
# retentionPolicy: "30d" # externalSecretCredentialPath: /garage/home-infra/postgres-backups
# retentionPolicy: "90d"
# data:
# compression: bzip2
# - name: external
# index: 1
# endpointURL: https://nyc3.digitaloceanspaces.com
# destinationBucket: postgres-backups-ce540ddf106d186bbddca68a
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# isWALArchiver: false # isWALArchiver: false
# - name: garage-remote
# destinationPath: s3://postgres-backups/cl01tl/sonarr-anime/sonarr-anime-postgresql-18-cluster
# index: 1
# endpointURL: https://garage-ps10rp.boreal-beaufort.ts.net:3900
# endpointCredentials: sonarr-anime-postgresql-18-cluster-backup-secret-garage
# retentionPolicy: "30d"
# data:
# compression: bzip2
# jobs: 2
scheduledBackups: scheduledBackups:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 0 0 * * *"
backupName: garage-local backupName: garage-local
# - name: daily-backup
# suspend: false
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
# immediate: true # immediate: true
# schedule: "0 0 4 * * SAT" # schedule: "0 0 4 * * SAT"
# backupName: garage-remote # backupName: garage-remote
# - name: daily-backup
# suspend: true
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
volsync-target-config: volsync-target-config:
pvcTarget: sonarr-anime-config pvcTarget: sonarr-anime-config
moverSecurityContext: moverSecurityContext:

View File

@@ -4,9 +4,9 @@ dependencies:
version: 4.5.0 version: 4.5.0
- name: postgres-cluster - name: postgres-cluster
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 7.1.4 version: 7.4.3
- name: volsync-target - name: volsync-target
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
version: 0.6.0 version: 0.6.0
digest: sha256:25518e72f0e08cf246a831f8ad7289a39f2a69783b2be16b4e5821f0ca7ec82a digest: sha256:4b717a89825e34b7d6ba77d8198c07d82107565325d78b99866d09e3c8974213
generated: "2025-12-21T19:07:26.935967475Z" generated: "2025-12-24T00:06:09.13493-06:00"

View File

@@ -26,11 +26,12 @@ dependencies:
version: 4.5.0 version: 4.5.0
- name: postgres-cluster - name: postgres-cluster
alias: postgres-18-cluster alias: postgres-18-cluster
version: 7.1.4 version: 7.4.3
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
- name: volsync-target - name: volsync-target
alias: volsync-target-config alias: volsync-target-config
version: 0.6.0 version: 0.6.0
repository: oci://harbor.alexlebens.net/helm-charts repository: oci://harbor.alexlebens.net/helm-charts
icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/sonarr.png
# renovate: github=linuxserver/sonarr
appVersion: 4.0.16 appVersion: 4.0.16

View File

@@ -1,65 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sonarr-postgresql-18-cluster-backup-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-postgresql-18-cluster-backup-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/postgres-backups
metadataPolicy: None
property: access
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/postgres-backups
metadataPolicy: None
property: secret
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: sonarr-postgresql-18-cluster-backup-secret-garage
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr-postgresql-18-cluster-backup-secret-garage
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_KEY_ID
- secretKey: ACCESS_SECRET_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_SECRET_KEY
- secretKey: ACCESS_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /garage/home-infra/postgres-backups
metadataPolicy: None
property: ACCESS_REGION

View File

@@ -1,28 +0,0 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: http-route-sonarr
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: http-route-sonarr
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- sonarr.alexlebens.net
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- group: ''
kind: Service
name: sonarr
port: 80
weight: 100

View File

@@ -1,19 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: sonarr
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: sonarr
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: sonarr
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: metrics
interval: 3m
scrapeTimeout: 1m
path: /metrics

View File

@@ -59,6 +59,39 @@ sonarr:
port: 9794 port: 9794
targetPort: 9794 targetPort: 9794
protocol: TCP protocol: TCP
serviceMonitor:
main:
selector:
matchLabels:
app.kubernetes.io/name: sonarr
app.kubernetes.io/instance: sonarr
serviceName: '{{ include "bjw-s.common.lib.chart.names.fullname" $ }}'
endpoints:
- port: metrics
interval: 3m
scrapeTimeout: 1m
path: /metrics
route:
main:
kind: HTTPRoute
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: traefik-gateway
namespace: traefik
hostnames:
- sonarr.alexlebens.net
rules:
- backendRefs:
- group: ''
kind: Service
name: sonarr
port: 80
weight: 100
matches:
- path:
type: PathPrefix
value: /
persistence: persistence:
config: config:
forceRename: sonarr-config forceRename: sonarr-config
@@ -84,64 +117,50 @@ sonarr:
postgres-18-cluster: postgres-18-cluster:
mode: recovery mode: recovery
cluster: cluster:
storage:
storageClass: local-path
walStorage:
storageClass: local-path
initdb: initdb:
database: app
owner: app
postInitSQL: postInitSQL:
- CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-main" OWNER "app";
- CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app"; - CREATE DATABASE IF NOT EXISTS "sonarr-log" OWNER "app";
recovery: recovery:
method: objectStore method: objectStore
objectStore: objectStore:
destinationPath: s3://postgres-backups/cl01tl/sonarr/sonarr-postgresql-18-cluster
endpointURL: http://garage-main.garage:3900
index: 1 index: 1
endpointCredentials: sonarr-postgresql-18-cluster-backup-secret-garage
backup: backup:
objectStore: objectStore:
- name: garage-local - name: garage-local
destinationPath: s3://postgres-backups/cl01tl/sonarr/sonarr-postgresql-18-cluster
index: 1 index: 1
endpointURL: http://garage-main.garage:3900 destinationBucket: postgres-backups
endpointCredentials: sonarr-postgresql-18-cluster-backup-secret-garage externalSecretCredentialPath: /garage/home-infra/postgres-backups
endpointCredentialsIncludeRegion: true
retentionPolicy: "3d"
isWALArchiver: true isWALArchiver: true
# - name: external
# destinationPath: s3://postgres-backups-ce540ddf106d186bbddca68a/cl01tl/sonarr/sonarr-postgresql-18-cluster
# index: 1
# endpointCredentials: sonarr-postgresql-18-cluster-backup-secret
# retentionPolicy: "30d"
# isWALArchiver: false
# - name: garage-remote # - name: garage-remote
# destinationPath: s3://postgres-backups/cl01tl/sonarr/sonarr-postgresql-18-cluster
# index: 1 # index: 1
# endpointURL: https://garage-ps10rp.boreal-beaufort.ts.net:3900 # destinationBucket: postgres-backups
# endpointCredentials: sonarr-postgresql-18-cluster-backup-secret-garage # externalSecretCredentialPath: /garage/home-infra/postgres-backups
# retentionPolicy: "30d" # retentionPolicy: "90d"
# data: # data:
# compression: bzip2 # compression: bzip2
# jobs: 2 # - name: external
# index: 1
# endpointURL: https://nyc3.digitaloceanspaces.com
# destinationBucket: postgres-backups-ce540ddf106d186bbddca68a
# externalSecretCredentialPath: /garage/home-infra/postgres-backups
# isWALArchiver: false
scheduledBackups: scheduledBackups:
- name: live-backup - name: live-backup
suspend: false suspend: false
immediate: true immediate: true
schedule: "0 0 0 * * *" schedule: "0 0 0 * * *"
backupName: garage-local backupName: garage-local
# - name: daily-backup
# suspend: false
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
# - name: weekly-backup # - name: weekly-backup
# suspend: true # suspend: true
# immediate: true # immediate: true
# schedule: "0 0 4 * * SAT" # schedule: "0 0 4 * * SAT"
# backupName: garage-remote # backupName: garage-remote
# - name: daily-backup
# suspend: true
# immediate: true
# schedule: "0 0 0 * * *"
# backupName: external
volsync-target-config: volsync-target-config:
pvcTarget: sonarr-config pvcTarget: sonarr-config
moverSecurityContext: moverSecurityContext: