diff --git a/clusters/cl01tl/applications/bazarr/Chart.yaml b/clusters/cl01tl/applications/bazarr/Chart.yaml new file mode 100644 index 000000000..456463a94 --- /dev/null +++ b/clusters/cl01tl/applications/bazarr/Chart.yaml @@ -0,0 +1,23 @@ +apiVersion: v2 +name: bazarr +version: 1.0.0 +description: Bazarr +keywords: + - bazarr + - servarr + - subtitles +home: https://wiki.alexlebens.dev/s/7f963158-15fd-4eb5-b3ac-8a3aeb79613a +sources: + - https://github.com/morpheus65535/bazarr + - https://github.com/linuxserver/docker-bazarr + - https://github.com/linuxserver/docker-bazarr/pkgs/container/bazarr + - https://github.com/bjw-s-labs/helm-charts/tree/main/charts/other/app-template +maintainers: + - name: alexlebens +dependencies: + - name: app-template + alias: bazarr + repository: https://bjw-s-labs.github.io/helm-charts/ + version: 4.0.1 +icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/bazarr.png +appVersion: 1.5.2 diff --git a/clusters/cl01tl/applications/bazarr/templates/external-secret.yaml b/clusters/cl01tl/applications/bazarr/templates/external-secret.yaml new file mode 100644 index 000000000..40e7170bb --- /dev/null +++ b/clusters/cl01tl/applications/bazarr/templates/external-secret.yaml @@ -0,0 +1,55 @@ +apiVersion: external-secrets.io/v1 +kind: ExternalSecret +metadata: + name: bazarr-config-backup-secret + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: bazarr-config-backup-secret + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +spec: + secretStoreRef: + kind: ClusterSecretStore + name: vault + target: + template: + mergePolicy: Merge + engineVersion: v2 + data: + RESTIC_REPOSITORY: "{{ `{{ .BUCKET_ENDPOINT }}` }}/bazarr/bazarr-config" + data: + - secretKey: BUCKET_ENDPOINT + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/volsync/restic/config + metadataPolicy: None + property: S3_BUCKET_ENDPOINT + - secretKey: RESTIC_PASSWORD + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/volsync/restic/config + metadataPolicy: None + property: RESTIC_PASSWORD + - secretKey: AWS_DEFAULT_REGION + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /cl01tl/volsync/restic/config + 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: access_key + - secretKey: AWS_SECRET_ACCESS_KEY + remoteRef: + conversionStrategy: Default + decodingStrategy: None + key: /digital-ocean/home-infra/volsync-backups + metadataPolicy: None + property: secret_key diff --git a/clusters/cl01tl/applications/bazarr/templates/http-route.yaml b/clusters/cl01tl/applications/bazarr/templates/http-route.yaml new file mode 100644 index 000000000..3e5439d60 --- /dev/null +++ b/clusters/cl01tl/applications/bazarr/templates/http-route.yaml @@ -0,0 +1,28 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: http-route-bazarr + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: http-route-bazarr + 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: + - bazarr.alexlebens.net + rules: + - matches: + - path: + type: PathPrefix + value: / + backendRefs: + - group: '' + kind: Service + name: bazarr + port: 80 + weight: 100 diff --git a/clusters/cl01tl/applications/bazarr/templates/replication-source.yaml b/clusters/cl01tl/applications/bazarr/templates/replication-source.yaml new file mode 100644 index 000000000..fee25927c --- /dev/null +++ b/clusters/cl01tl/applications/bazarr/templates/replication-source.yaml @@ -0,0 +1,30 @@ +apiVersion: volsync.backube/v1alpha1 +kind: ReplicationSource +metadata: + name: bazarr-config-backup-source + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: bazarr-config-backup-source + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/part-of: {{ .Release.Name }} +spec: + sourcePVC: bazarr-config + trigger: + schedule: 0 4 * * * + restic: + pruneIntervalDays: 7 + repository: bazarr-config-backup-secret + retain: + hourly: 1 + daily: 3 + weekly: 2 + monthly: 2 + yearly: 4 + moverSecurityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + copyMethod: Snapshot + storageClassName: ceph-block + volumeSnapshotClassName: ceph-blockpool-snapshot diff --git a/clusters/cl01tl/applications/bazarr/values.yaml b/clusters/cl01tl/applications/bazarr/values.yaml new file mode 100644 index 000000000..1f9622603 --- /dev/null +++ b/clusters/cl01tl/applications/bazarr/values.yaml @@ -0,0 +1,57 @@ +bazarr: + controllers: + main: + type: deployment + replicas: 1 + strategy: Recreate + revisionHistoryLimit: 3 + pod: + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + containers: + main: + image: + repository: ghcr.io/linuxserver/bazarr + tag: 1.5.2@sha256:558d6ddf36cd87bac5d4fb2ee8488730c4f65718961ef4ca7073062378aa7641 + pullPolicy: IfNotPresent + env: + - name: TZ + value: US/Central + - name: PUID + value: 1000 + - name: PGID + value: 1000 + resources: + requests: + cpu: 10m + memory: 256Mi + service: + main: + controller: main + ports: + http: + port: 80 + targetPort: 6767 + protocol: HTTP + persistence: + config: + forceRename: bazarr-config + storageClass: ceph-block + accessMode: ReadWriteOnce + size: 5Gi + retain: true + advancedMounts: + main: + main: + - path: /config + readOnly: false + media: + existingClaim: radarr-nfs-storage + advancedMounts: + main: + main: + - path: /mnt/store + readOnly: false diff --git a/clusters/cl01tl/applications/homepage/values.yaml b/clusters/cl01tl/applications/homepage/values.yaml index 93f4ec63a..827c7c4b7 100644 --- a/clusters/cl01tl/applications/homepage/values.yaml +++ b/clusters/cl01tl/applications/homepage/values.yaml @@ -601,6 +601,12 @@ homepage: href: https://prowlarr.alexlebens.net siteMonitor: http://prowlarr.prowlarr:80 statusStyle: dot + - Bazarr: + icon: sh-bazarr.webp + description: Indexers + href: https://bazarr.alexlebens.net + siteMonitor: http://bazarr.bazarr:80 + statusStyle: dot - Huntarr: icon: https://raw.githubusercontent.com/plexguide/Huntarr.io/main/frontend/static/logo/128.png description: Indexers diff --git a/clusters/cl01tl/services/blocky/values.yaml b/clusters/cl01tl/services/blocky/values.yaml index b1dea9d48..7c5e3f118 100644 --- a/clusters/cl01tl/services/blocky/values.yaml +++ b/clusters/cl01tl/services/blocky/values.yaml @@ -106,6 +106,7 @@ blocky: argocd IN CNAME traefik-cl01tl audiobookshelf IN CNAME traefik-cl01tl authentik IN CNAME traefik-cl01tl + bazarr IN CNAME traefik-cl01tl calibre IN CNAME traefik-cl01tl calibre-downloader IN CNAME traefik-cl01tl ceph IN CNAME traefik-cl01tl diff --git a/hosts/ps08rp/blocky/config.yml b/hosts/ps08rp/blocky/config.yml index 49fada709..1b518621b 100644 --- a/hosts/ps08rp/blocky/config.yml +++ b/hosts/ps08rp/blocky/config.yml @@ -81,6 +81,7 @@ customDNS: argocd IN CNAME traefik-cl01tl audiobookshelf IN CNAME traefik-cl01tl authentik IN CNAME traefik-cl01tl + bazarr IN CNAME traefik-cl01tl calibre IN CNAME traefik-cl01tl calibre-downloader IN CNAME traefik-cl01tl ceph IN CNAME traefik-cl01tl diff --git a/hosts/ps09rp/blocky/config.yml b/hosts/ps09rp/blocky/config.yml index 49fada709..1b518621b 100644 --- a/hosts/ps09rp/blocky/config.yml +++ b/hosts/ps09rp/blocky/config.yml @@ -81,6 +81,7 @@ customDNS: argocd IN CNAME traefik-cl01tl audiobookshelf IN CNAME traefik-cl01tl authentik IN CNAME traefik-cl01tl + bazarr IN CNAME traefik-cl01tl calibre IN CNAME traefik-cl01tl calibre-downloader IN CNAME traefik-cl01tl ceph IN CNAME traefik-cl01tl