2 Commits

19 changed files with 418 additions and 4 deletions

View File

@@ -0,0 +1,25 @@
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: avahi-reflector
spec:
selector:
matchLabels:
app: avahi-reflector
template:
metadata:
labels:
app: avahi-reflector
spec:
hostNetwork: true
containers:
- name: avahi-reflector
image: avahi-reflector
securityContext:
privileged: true # required for raw sockets
env:
- name: REFLECTOR_ENABLE_REFLECTOR
value: "yes"
- name: SERVER_ALLOW_INTERFACES
# use all interfaces
value: ""

View File

@@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: avahi
resources:
- namespace.yaml
- daemonset.yaml
# - configmap.yaml
images:
- name: avahi-reflector
newName: flungo/avahi
newTag: latest

View File

@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: placeholder
labels:
pod-security.kubernetes.io/enforce: privileged

View File

@@ -12,4 +12,4 @@ resources:
images: images:
- name: jellyfin/jellyfin - name: jellyfin/jellyfin
newName: jellyfin/jellyfin newName: jellyfin/jellyfin
newTag: 10.11.4 newTag: 10.11.3

View File

@@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: musicassistant
spec:
selector:
matchLabels:
app: musicassistant
template:
metadata:
labels:
app: musicassistant
spec:
containers:
- name: musicassistant
image: musicassistant
resources:
limits:
memory: "2Gi"
cpu: "2"
requests:
memory: "128Mi"
cpu: "250m"
ports:
# ports required for musicassistant
- containerPort: 80
- containerPort: 443
- containerPort: 8097
- containerPort: 8095
# name: musicassistant-web
- containerPort: 1704
- containerPort: 1705
env:
- name: TZ
value: Europe/Berlin
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: data

View File

@@ -0,0 +1,17 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: musicassistant-ingressroute
spec:
entryPoints:
- websecure
routes:
- match: Host(`musicassistant.kluster.moll.re`)
kind: Rule
services:
- name: musicassistant-web
port: musicassistant-web
tls:
certResolver: default-tls

View File

@@ -0,0 +1,17 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: musicassistant
resources:
- namespace.yaml
- pvc.yaml
- deployment.yaml
- service.yaml
# - ingress.yaml
images:
- name: musicassistant
newName: ghcr.io/music-assistant/server
newTag: 2.6.0

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: placeholder

View File

@@ -0,0 +1,11 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: data
spec:
storageClassName: "nfs-client"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,41 @@
apiVersion: v1
kind: Service
metadata:
name: musicassistant
spec:
selector:
app: musicassistant
ports:
- port: 80
targetPort: 80
name: required-first
- port: 443
targetPort: 443
name: required-second
- port: 8097
targetPort: 8097
name: required-third
- port: 8095
targetPort: 8095
name: required-fourth
- port: 1704
targetPort: 1704
name: required-fifth
- port: 1705
targetPort: 1705
name: required-sixth
type: LoadBalancer
loadBalancerIP: 192.168.3.5
---
apiVersion: v1
kind: Service
metadata:
name: musicassistant-web
spec:
selector:
app: musicassistant
ports:
- port: 8095
targetPort: 8095
name: musicassistant-web
type: ClusterIP

View File

@@ -14,7 +14,7 @@ namespace: paperless
images: images:
- name: paperless - name: paperless
newName: ghcr.io/paperless-ngx/paperless-ngx newName: ghcr.io/paperless-ngx/paperless-ngx
newTag: "2.20.1" newTag: "2.20.0"
helmCharts: helmCharts:

7
apps/snapcast/README.md Normal file
View File

@@ -0,0 +1,7 @@
### Credentials
Since this tries to run in an isolated network we can't rely on autodiscover and the spotify client needs to be tied to an account.
This is achieved by registering the client on startup via oauth. The logs show an url which should be copied to a local browser. The successfull redirect needs to be forwarded back to the client, hence run:
```
k port-forward deployments/snapcast 5588:5588
```

View File

@@ -0,0 +1,109 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: snapcast
spec:
selector:
matchLabels:
app: snapcast
template:
metadata:
labels:
app: snapcast
spec:
containers:
- name: snapcast
image: snapcast
resources:
limits:
memory: "2Gi"
cpu: "2"
requests:
memory: "128Mi"
cpu: "250m"
ports:
# snapcast ports
- containerPort: 1704
- containerPort: 1705
# web interface
- containerPort: 1780
- containerPort: 1788
# avahi
- containerPort: 5353
# airplay
- containerPort: 3689
- containerPort: 5000
- containerPort: 6000
- containerPort: 6001
- containerPort: 6002
- containerPort: 6003
- containerPort: 6004
- containerPort: 6005
- containerPort: 6006
- containerPort: 6007
- containerPort: 6008
- containerPort: 6009
- containerPort: 7000
- containerPort: 319
- containerPort: 320
env:
- name: TZ
value: Europe/Berlin
- name: AIRPLAY_CONFIG_ENABLED
value: "1"
- name: SPOTIFY_CONFIG_ENABLED
value: "0"
- name: PIPE_CONFIG_ENABLED
value: "1"
- name: PIPE_PATH
value: /mnt/pipe/spotipipe
- name: PIPE_SOURCE_NAME
value: "Librespot"
# - name: PIPE_MODE
# value: "read"
- name: PIPE_EXTRA_ARGS
# see https://github.com/badaix/snapcast/issues/1248
value: "&sampleformat=44100:16:2"
volumeMounts:
- name: pipe
mountPath: /mnt/pipe
- name: librespot
image: librespot
resources:
limits:
memory: "2Gi"
cpu: "2"
requests:
memory: "128Mi"
cpu: "250m"
ports:
- containerPort: 5588 # default port for oauth callback
env:
- name: BACKEND
value: pipe
- name: DEVICE
value: /mnt/pipe/spotipipe
- name: DISABLE_DISCOVERY
value: Y
- name: AUTOPLAY
value: Y
# - name: VERBOSE
# value: Y
# - name: PASSTHROUGH
# value: Y
- name: ADDITIONAL_ARGUMENTS
value: "--enable-oauth --cache /cache"
volumeMounts:
- name: pipe
mountPath: /mnt/pipe
- name: credentials-cache
mountPath: /cache
volumes:
- name: pipe
emptyDir: {}
- name: credentials-cache
persistentVolumeClaim:
claimName: cache

View File

@@ -0,0 +1,19 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: snapcast
resources:
- namespace.yaml
- deployment.yaml
- service.yaml
- pvc.yaml
- snapcast-config.secret.yaml
images:
- name: snapcast
newName: ghcr.io/firefrei/snapcast/server
newTag: latest
- name: librespot
newName: giof71/librespot
newTag: latest

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: placeholder

11
apps/snapcast/pvc.yaml Normal file
View File

@@ -0,0 +1,11 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cache
spec:
storageClassName: "nfs-client"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

View File

@@ -0,0 +1,86 @@
apiVersion: v1
kind: Service
metadata:
name: snapcast
spec:
selector:
app: snapcast
ports:
- name: snapcast
port: 1704
targetPort: 1704
protocol: TCP
- name: snapcast-ctl
port: 1705
targetPort: 1705
protocol: TCP
- name: web
port: 1780
targetPort: 1780
protocol: TCP
- name: web-alt
port: 1788
targetPort: 1788
protocol: TCP
# - name: airplay-3689
# port: 3689
# targetPort: 3689
# protocol: TCP
# - name: airplay-5000
# port: 5000
# targetPort: 5000
# protocol: TCP
# - name: airplay-6000
# port: 6000
# targetPort: 6000
# protocol: TCP
# - name: airplay-6001
# port: 6001
# targetPort: 6001
# protocol: TCP
# - name: airplay-6002
# port: 6002
# targetPort: 6002
# protocol: TCP
# - name: airplay-6003
# port: 6003
# targetPort: 6003
# protocol: TCP
# - name: airplay-6004
# port: 6004
# targetPort: 6004
# protocol: TCP
# - name: airplay-6005
# port: 6005
# targetPort: 6005
# protocol: TCP
# - name: airplay-6006
# port: 6006
# targetPort: 6006
# protocol: TCP
# - name: airplay-6007
# port: 6007
# targetPort: 6007
# protocol: TCP
# - name: airplay-6008
# port: 6008
# targetPort: 6008
# protocol: TCP
# - name: airplay-6009
# port: 6009
# targetPort: 6009
# protocol: TCP
# - name: airplay-7000
# port: 7000
# targetPort: 7000
# protocol: TCP
# - name: airplay-319
# port: 319
# targetPort: 319
# protocol: UDP
# - name: airplay-320
# port: 320
# targetPort: 320
# protocol: UDP
type: LoadBalancer
loadBalancerIP: 192.168.3.5

View File

@@ -4,7 +4,7 @@ kind: Kustomization
namespace: argocd namespace: argocd
resources: resources:
- namespace.yaml - namespace.yaml
- https://github.com/argoproj/argo-cd//manifests/cluster-install?timeout=120&ref=v3.2.1 - https://github.com/argoproj/argo-cd//manifests/cluster-install?timeout=120&ref=v3.2.0
- ingress.yaml - ingress.yaml
- argo-apps.application.yaml - argo-apps.application.yaml
- bootstrap-repo.sealedsecret.yaml - bootstrap-repo.sealedsecret.yaml

View File

@@ -11,4 +11,4 @@ resources:
images: images:
- name: dns - name: dns
newName: git.kluster.moll.re/remoll/dns newName: git.kluster.moll.re/remoll/dns
newTag: 0.0.2-build.116 newTag: 0.0.2-build.113