add koel
This commit is contained in:
		@@ -260,6 +260,12 @@ homepage:
 | 
			
		||||
                  href: https://navidrome.alexlebens.net
 | 
			
		||||
                  siteMonitor: http://navidrome.navidrome:80
 | 
			
		||||
                  statusStyle: dot
 | 
			
		||||
              - Music:
 | 
			
		||||
                  icon: koel.png
 | 
			
		||||
                  description: Koel
 | 
			
		||||
                  href: https://koel.alexlebens.net
 | 
			
		||||
                  siteMonitor: http://koel.koel:80
 | 
			
		||||
                  statusStyle: dot
 | 
			
		||||
              - Podcasts and Audiobooks:
 | 
			
		||||
                  icon: audiobookshelf.png
 | 
			
		||||
                  description: Audiobookshelf
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								clusters/cl01tl/applications/koel/Chart.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								clusters/cl01tl/applications/koel/Chart.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
apiVersion: v2
 | 
			
		||||
name: koel
 | 
			
		||||
version: 1.0.0
 | 
			
		||||
description: Koel
 | 
			
		||||
keywords:
 | 
			
		||||
  - koel
 | 
			
		||||
  - music
 | 
			
		||||
  - subsonic
 | 
			
		||||
home: https://wiki.alexlebens.dev/doc/koel-fmj6sX2KfJ
 | 
			
		||||
sources:
 | 
			
		||||
  - https://github.com/koel/koel
 | 
			
		||||
  - https://hub.docker.com/r/phanan/koel/
 | 
			
		||||
  - https://github.com/bjw-s/helm-charts/tree/main/charts/other/app-template
 | 
			
		||||
maintainers:
 | 
			
		||||
  - name: alexlebens
 | 
			
		||||
dependencies:
 | 
			
		||||
  - name: app-template
 | 
			
		||||
    alias: koel
 | 
			
		||||
    repository: https://bjw-s.github.io/helm-charts/
 | 
			
		||||
    version: 3.2.1
 | 
			
		||||
  - name: meilisearch
 | 
			
		||||
    version: 0.8.0
 | 
			
		||||
    repository: https://meilisearch.github.io/meilisearch-kubernetes    
 | 
			
		||||
  - name: postgres-cluster
 | 
			
		||||
    alias: postgres-16-cluster
 | 
			
		||||
    version: 3.8.4
 | 
			
		||||
    repository: http://alexlebens.github.io/helm-charts
 | 
			
		||||
icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/koel.png
 | 
			
		||||
appVersion: 7.0.9
 | 
			
		||||
@@ -0,0 +1,94 @@
 | 
			
		||||
apiVersion: external-secrets.io/v1beta1
 | 
			
		||||
kind: ExternalSecret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: koel-config-secret
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: koel-config-secret
 | 
			
		||||
    app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
    app.kubernetes.io/version: {{ .Chart.AppVersion }}
 | 
			
		||||
    app.kubernetes.io/component: backup
 | 
			
		||||
    app.kubernetes.io/part-of: {{ .Release.Name }}
 | 
			
		||||
spec:
 | 
			
		||||
  secretStoreRef:
 | 
			
		||||
    kind: ClusterSecretStore
 | 
			
		||||
    name: vault
 | 
			
		||||
  data:
 | 
			
		||||
    - secretKey: app-key
 | 
			
		||||
      remoteRef:
 | 
			
		||||
        conversionStrategy: Default
 | 
			
		||||
        decodingStrategy: None
 | 
			
		||||
        key: /cl01tl/koel/config
 | 
			
		||||
        metadataPolicy: None
 | 
			
		||||
        property: app-key
 | 
			
		||||
    - secretKey: spotify-client-id
 | 
			
		||||
      remoteRef:
 | 
			
		||||
        conversionStrategy: Default
 | 
			
		||||
        decodingStrategy: None
 | 
			
		||||
        key: /cl01tl/koel/config
 | 
			
		||||
        metadataPolicy: None
 | 
			
		||||
        property: spotify-client-id
 | 
			
		||||
    - secretKey: spotify-client-secret
 | 
			
		||||
      remoteRef:
 | 
			
		||||
        conversionStrategy: Default
 | 
			
		||||
        decodingStrategy: None
 | 
			
		||||
        key: /cl01tl/koel/config
 | 
			
		||||
        metadataPolicy: None
 | 
			
		||||
        property: spotify-client-secret
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
apiVersion: external-secrets.io/v1beta1
 | 
			
		||||
kind: ExternalSecret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: koel-meilisearch-master-key-secret
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: koel-meilisearch-master-key-secret
 | 
			
		||||
    app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
    app.kubernetes.io/version: {{ .Chart.AppVersion }}
 | 
			
		||||
    app.kubernetes.io/component: meilisearch
 | 
			
		||||
    app.kubernetes.io/part-of: {{ .Release.Name }}
 | 
			
		||||
spec:
 | 
			
		||||
  secretStoreRef:
 | 
			
		||||
    kind: ClusterSecretStore
 | 
			
		||||
    name: vault
 | 
			
		||||
  data:
 | 
			
		||||
    - secretKey: MEILI_MASTER_KEY
 | 
			
		||||
      remoteRef:
 | 
			
		||||
        conversionStrategy: Default
 | 
			
		||||
        decodingStrategy: None
 | 
			
		||||
        key: /cl01tl/koel/meilisearch
 | 
			
		||||
        metadataPolicy: None
 | 
			
		||||
        property: MEILI_MASTER_KEY
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
apiVersion: external-secrets.io/v1beta1
 | 
			
		||||
kind: ExternalSecret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: koel-postgresql-16-cluster-backup-secret
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: koel-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-koel-postgresql
 | 
			
		||||
        metadataPolicy: None
 | 
			
		||||
        property: access_key
 | 
			
		||||
    - secretKey: ACCESS_SECRET_KEY
 | 
			
		||||
      remoteRef:
 | 
			
		||||
        conversionStrategy: Default
 | 
			
		||||
        decodingStrategy: None
 | 
			
		||||
        key: /aws/keys/cl01tl-koel-postgresql
 | 
			
		||||
        metadataPolicy: None
 | 
			
		||||
        property: secret_key
 | 
			
		||||
@@ -0,0 +1,33 @@
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: IngressRoute
 | 
			
		||||
metadata:
 | 
			
		||||
  name: koel
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: koel
 | 
			
		||||
    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:
 | 
			
		||||
  entryPoints:
 | 
			
		||||
    - websecure
 | 
			
		||||
  routes:
 | 
			
		||||
    - kind: Rule
 | 
			
		||||
      match: Host(`koel.alexlebens.net`)
 | 
			
		||||
      middlewares:
 | 
			
		||||
        - name: authentik-koel
 | 
			
		||||
          namespace: {{ .Release.Namespace }}
 | 
			
		||||
      priority: 10
 | 
			
		||||
      services:
 | 
			
		||||
        - kind: Service
 | 
			
		||||
          name: koel
 | 
			
		||||
          port: 80
 | 
			
		||||
    - kind: Rule
 | 
			
		||||
      match: Host(`koel.alexlebens.net`) && PathPrefix(`/outpost.goauthentik.io/`)"
 | 
			
		||||
      priority: 15
 | 
			
		||||
      services:
 | 
			
		||||
        - kind: Service
 | 
			
		||||
          name: authentik-outpost-proxy
 | 
			
		||||
          port: 9000
 | 
			
		||||
          namespace: authentik
 | 
			
		||||
							
								
								
									
										27
									
								
								clusters/cl01tl/applications/koel/templates/middleware.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								clusters/cl01tl/applications/koel/templates/middleware.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
apiVersion: traefik.io/v1alpha1
 | 
			
		||||
kind: Middleware
 | 
			
		||||
metadata:
 | 
			
		||||
  name: authentik-koel
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: authentik-koel
 | 
			
		||||
    app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
    app.kubernetes.io/version: {{ .Chart.AppVersion }}
 | 
			
		||||
    app.kubernetes.io/component: auth
 | 
			
		||||
    app.kubernetes.io/part-of: {{ .Release.Name }}
 | 
			
		||||
spec:
 | 
			
		||||
  forwardAuth:
 | 
			
		||||
    address: http://authentik-outpost-proxy.authentik:9000/outpost.goauthentik.io/auth/traefik
 | 
			
		||||
    trustForwardHeader: true
 | 
			
		||||
    authResponseHeaders:
 | 
			
		||||
      - X-authentik-username
 | 
			
		||||
      - X-authentik-groups
 | 
			
		||||
      - X-authentik-email
 | 
			
		||||
      - X-authentik-name
 | 
			
		||||
      - X-authentik-uid
 | 
			
		||||
      - X-authentik-jwt
 | 
			
		||||
      - X-authentik-meta-jwks
 | 
			
		||||
      - X-authentik-meta-outpost
 | 
			
		||||
      - X-authentik-meta-provider
 | 
			
		||||
      - X-authentik-meta-app
 | 
			
		||||
      - X-authentik-meta-version
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolumeClaim
 | 
			
		||||
metadata:
 | 
			
		||||
  name: koel-nfs-storage
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: koel-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: koel-nfs-storage
 | 
			
		||||
  storageClassName: nfs-client
 | 
			
		||||
  accessModes:
 | 
			
		||||
    - ReadWriteMany
 | 
			
		||||
  resources:
 | 
			
		||||
    requests:
 | 
			
		||||
      storage: 1Gi
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolume
 | 
			
		||||
metadata:
 | 
			
		||||
  name: koel-nfs-storage
 | 
			
		||||
  namespace: {{ .Release.Namespace }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: koel-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/Music
 | 
			
		||||
    server: synologybond.alexlebens.net
 | 
			
		||||
  mountOptions:
 | 
			
		||||
    - vers=4
 | 
			
		||||
    - minorversion=1
 | 
			
		||||
    - noac
 | 
			
		||||
							
								
								
									
										164
									
								
								clusters/cl01tl/applications/koel/values.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								clusters/cl01tl/applications/koel/values.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,164 @@
 | 
			
		||||
koel:
 | 
			
		||||
  controllers:
 | 
			
		||||
    main:
 | 
			
		||||
      type: deployment
 | 
			
		||||
      replicas: 1
 | 
			
		||||
      strategy: Recreate
 | 
			
		||||
      revisionHistoryLimit: 3
 | 
			
		||||
      containers:
 | 
			
		||||
        main:
 | 
			
		||||
          image:
 | 
			
		||||
            repository: phanan/koel
 | 
			
		||||
            tag: 7.0.9
 | 
			
		||||
            pullPolicy: IfNotPresent
 | 
			
		||||
          env:
 | 
			
		||||
            - name: APP_NAME
 | 
			
		||||
              value: Koel
 | 
			
		||||
            - name: APP_ENV
 | 
			
		||||
              value: production
 | 
			
		||||
            - name: APP_DEBUG
 | 
			
		||||
              value: false
 | 
			
		||||
            - name: APP_URL
 | 
			
		||||
              value: https://koel.alexlebens.dev
 | 
			
		||||
            - name: APP_KEY
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-config-secret
 | 
			
		||||
                  key: app-key
 | 
			
		||||
            - name: STREAMING_METHOD
 | 
			
		||||
              value: x-accel-redirect
 | 
			
		||||
            - name: OUTPUT_BIT_RATE
 | 
			
		||||
              value: 320
 | 
			
		||||
            - name: MEDIA_PATH
 | 
			
		||||
              value: /music
 | 
			
		||||
            - name: MEILISEARCH_HOST
 | 
			
		||||
              value: http://koel-meilisearch.koel:7700
 | 
			
		||||
            - name: MEILISEARCH_KEY
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-meilisearch-master-key-secret
 | 
			
		||||
                  key: MEILI_MASTER_KEY
 | 
			
		||||
            - name: SPOTIFY_CLIENT_ID
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-config-secret
 | 
			
		||||
                  key: spotify-client-id
 | 
			
		||||
            - name: SPOTIFY_CLIENT_SECRET
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-config-secret
 | 
			
		||||
                  key: spotify-client-secret
 | 
			
		||||
            - name: PROXY_AUTH_ENABLED
 | 
			
		||||
              value: true
 | 
			
		||||
            - name: PROXY_AUTH_USER_HEADER
 | 
			
		||||
              value: X-authentik-email
 | 
			
		||||
            - name: PROXY_AUTH_PREFERRED_NAME_HEADER
 | 
			
		||||
              value: X-authentik-username
 | 
			
		||||
            - name: PROXY_AUTH_ALLOW_LIST
 | 
			
		||||
              value: 10.244.0.0/16,10.96.0.0/12
 | 
			
		||||
            - name: DB_CONNECTION
 | 
			
		||||
              value: pgsql
 | 
			
		||||
            - name: DB_HOST
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-postgresql-16-cluster-app
 | 
			
		||||
                  key: host
 | 
			
		||||
            - name: DB_PORT
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-postgresql-16-cluster-app
 | 
			
		||||
                  key: port
 | 
			
		||||
            - name: DB_USERNAME
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-postgresql-16-cluster-app
 | 
			
		||||
                  key: username
 | 
			
		||||
            - name: DB_PASSWORD
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-postgresql-16-cluster-app
 | 
			
		||||
                  key: password
 | 
			
		||||
            - name: DB_DATABASE
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                secretKeyRef:
 | 
			
		||||
                  name: koel-postgresql-16-cluster-app
 | 
			
		||||
                  key: dbname
 | 
			
		||||
          resources:
 | 
			
		||||
            requests:
 | 
			
		||||
              cpu: 100m
 | 
			
		||||
              memory: 256Mi
 | 
			
		||||
  serviceAccount:
 | 
			
		||||
    create: true
 | 
			
		||||
  service:
 | 
			
		||||
    main:
 | 
			
		||||
      controller: main
 | 
			
		||||
      ports:
 | 
			
		||||
        http:
 | 
			
		||||
          port: 80
 | 
			
		||||
          targetPort: 80
 | 
			
		||||
          protocol: HTTP
 | 
			
		||||
  persistence:
 | 
			
		||||
    covers:
 | 
			
		||||
      storageClass: ceph-block
 | 
			
		||||
      accessMode: ReadWriteOnce
 | 
			
		||||
      size: 5Gi
 | 
			
		||||
      retain: true
 | 
			
		||||
      advancedMounts:
 | 
			
		||||
        main:
 | 
			
		||||
          main:
 | 
			
		||||
            - path: /var/www/html/public/img/covers
 | 
			
		||||
              readOnly: false
 | 
			
		||||
    search:
 | 
			
		||||
      storageClass: ceph-block
 | 
			
		||||
      accessMode: ReadWriteOnce
 | 
			
		||||
      size: 5Gi
 | 
			
		||||
      retain: true
 | 
			
		||||
      advancedMounts:
 | 
			
		||||
        main:
 | 
			
		||||
          main:
 | 
			
		||||
            - path: /var/www/html/storage/search-indexes
 | 
			
		||||
              readOnly: false
 | 
			
		||||
    music:
 | 
			
		||||
      existingClaim: koel-nfs-storage
 | 
			
		||||
      advancedMounts:
 | 
			
		||||
        main:
 | 
			
		||||
          main:
 | 
			
		||||
            - path: /music
 | 
			
		||||
              readOnly: true
 | 
			
		||||
meilisearch:
 | 
			
		||||
  environment:
 | 
			
		||||
    MEILI_NO_ANALYTICS: true
 | 
			
		||||
    MEILI_ENV: production
 | 
			
		||||
  auth:
 | 
			
		||||
    existingMasterKeySecret: koel-meilisearch-master-key-secret
 | 
			
		||||
  service:
 | 
			
		||||
    type: ClusterIP
 | 
			
		||||
    port: 7700
 | 
			
		||||
  persistence:
 | 
			
		||||
    enabled: true
 | 
			
		||||
    storageClass: ceph-block
 | 
			
		||||
    size: 10Gi
 | 
			
		||||
  resources:
 | 
			
		||||
    requests:
 | 
			
		||||
      cpu: 100m
 | 
			
		||||
      memory: 128Mi
 | 
			
		||||
  serviceMonitor:
 | 
			
		||||
    enabled: true
 | 
			
		||||
postgres-16-cluster:
 | 
			
		||||
  mode: standalone
 | 
			
		||||
  cluster:
 | 
			
		||||
    walStorage:
 | 
			
		||||
      storageClass: local-path
 | 
			
		||||
    storage:
 | 
			
		||||
      storageClass: local-path
 | 
			
		||||
    monitoring:
 | 
			
		||||
      enabled: true
 | 
			
		||||
      prometheusRule:
 | 
			
		||||
        enabled: false
 | 
			
		||||
  backup:
 | 
			
		||||
    enabled: true
 | 
			
		||||
    endpointURL: https://s3.us-east-2.amazonaws.com
 | 
			
		||||
    destinationPath: s3://cl01tl-postgresql-backups/koel
 | 
			
		||||
    endpointCredentials: koel-postgresql-16-cluster-backup-secret
 | 
			
		||||
    backupIndex: 1
 | 
			
		||||
    retentionPolicy: 14d
 | 
			
		||||
		Reference in New Issue
	
	Block a user