some tries to get a functioning setup

This commit is contained in:
2025-11-26 21:35:08 +01:00
parent 1d3fa552f6
commit 8c7b532a31
14 changed files with 398 additions and 0 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

@@ -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

@@ -0,0 +1,101 @@
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: "0"
- name: SPOTIFY_CONFIG_ENABLED
value: "0"
volumeMounts:
- name: pipe
mountPath: /mnt/pipe
- name: librespot
image: librespot
resources:
limits:
memory: "2Gi"
cpu: "2"
requests:
memory: "128Mi"
cpu: "250m"
# ports:
env:
- name: BACKEND
value: pipe
- name: DEVICE
value: /mnt/pipe/spotipipe
volumeMounts:
- name: pipe
mountPath: /mnt/pipe
volumes:
- name: pipe
emptyDir: {}
# - name: SPOTIFY_ACCESS_TOKEN
# value: BQBxGPPPXZTXF7WTBzJItu3KNkeoZu2j2-Rlk1RmtnmXvzPh1fWFpOT2VeXwWxMJXlBYwxSOTo1ZKk3hAr08OhDhbQChi6KDl6qEmK-Y8Wq8g3EoP7M-oRnHt4WFMg1zC1C37t90nQUKZ-F9UdSuL9A6Ny6V6pYsai1bUspOU0q5UHn6-Dv9E8gwEKXOPMlBKEXNi1D0sT2m9rzwI7UK1g7ToRPn03eqGe41RRvlfrSCgf41tg
# - name: SPOTIFY_EXTRA_ARGS
# value: " --disable-discovery --access-token BQBxGPPPXZTXF7WTBzJItu3KNkeoZu2j2-Rlk1RmtnmXvzPh1fWFpOT2VeXwWxMJXlBYwxSOTo1ZKk3hAr08OhDhbQChi6KDl6qEmK-Y8Wq8g3EoP7M-oRnHt4WFMg1zC1C37t90nQUKZ-F9UdSuL9A6Ny6V6pYsai1bUspOU0q5UHn6-Dv9E8gwEKXOPMlBKEXNi1D0sT2m9rzwI7UK1g7ToRPn03eqGe41RRvlfrSCgf41tg"
# volumeMounts:
# - name: config
# mountPath: /config
# - name: snapserver-config
# mountPath: /root/.config/
# volumes:
# - name: config
# secret:
# secretName: snapcast-config
# - name: snapserver-config
# emptyDir: {}

View File

@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: snapcast
resources:
- namespace.yaml
- deployment.yaml
- service.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: data
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