Roon-core native web interface / alternative GUI

We’re very much a linux based home, roon-core is running in Kubernetes and after some tinkering is working well. roon-bridge via RoPieee with a myriad of hat’s on Pi’s are the only destination. All is working well.

One feature request is a full-fat web based GUI built into roon-core. I appreciate that porting the roon-control UI and the overhead of multiple operating systems is a bit much for a somewhat limited user base. If you do want to make a linux client that’d be awesome but understand why it’s not the case.

Have tried the wine solution, it works but wonky at best; it can be used briefly but not exactly something you want to have running in the background all the time chomping away at CPU just to idle.

I don’t think either of those things is going to happen. The server, renderer and control model is baked in. As for Linux client, well the 2% market share…

i5-6400T; Ubuntu 18.04.4 LTS; 5.3.0-28-lowlatency; wine-5.0; Roon Version 1.7 (build 511) stable (64bit)

I never noticed anything unusual regarding CPU usage. When there is nothing to do, it doesn’t use CPU besides for short periodic peaks (I think some sort of keep-alive/ask server about news). While playing, the animations/syncing of time graph use some CPU/GPU cycles, how much depends on your system, but this is the same even on supported platforms (Windows/MacOS X). You might have problems/a misconfiguration on your system or it’s CPU/GPU is outdated/not up to the task.

1 Like

I’m curious about this as well. Does Roon run well in Wine these days?

Honestly feels like a bit of a waste for me to install Wine just for roon… I ended up buying an iPad for this purpose but… What do Linux users typically do?

Using different device available or Wine I guess.

I really want this suggestion to be considered.
Some of my laptops are on Linux and I can’t get a proper remote for them.
Using Wine for this is just… meh.

Simple web interface would do!

1 Like

I ended up using the api ( GitHub - RoonLabs/node-roon-api: Javascript Roon API ) to run a little server, and tied to it emacs keybindings. i also have a little display i put together w/the adafruit pyportal that also lets me control it via touch. it’s not a great solution, but not terrible either. honestly, better than some players because of the api support.

How did you install core on kubernetes? Are there any pre-made helm-charts available for it?

I’m not a huge fan of helm, here is my manifest. I have a nfs server with the volumes.

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: roon
  name: roon
  namespace: home
  annotations:
    external-dns.alpha.kubernetes.io/hostname: roon.lan
spec:
  ports:
  - name: roon
    port: 9330
    targetPort: 9330
  selector:
    app: roon
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    service: roon
  name: roon
  namespace: home
spec:
  strategy:
    type: Recreate
  replicas: 1
  selector:
    matchLabels:
      app: roon
  template:
    metadata:
      labels:
        app: roon
    spec:
      hostNetwork: true
      hostname: roon
      containers:
        - image: steefdebruijn/docker-roonserver:latest
          securityContext:
            privileged: true
          name: roon
          env:
          - name: TZ
            value: "<Insert your TZ here>"
          ports:
            - containerPort: 9101
              protocol: TCP
            - containerPort: 9102
              protocol: TCP
            - containerPort: 9103
              protocol: TCP
            - containerPort: 9104
              protocol: TCP
            - containerPort: 9105
              protocol: TCP
            - containerPort: 9106
              protocol: TCP
            - containerPort: 9107
              protocol: TCP
            - containerPort: 9108
              protocol: TCP
            - containerPort: 9109
              protocol: TCP
            - containerPort: 9110
              protocol: TCP
            - containerPort: 9332
              protocol: TCP
            - containerPort: 9330
              protocol: TCP
            - containerPort: 9003
              protocol: UDP
          resources:
            requests:
              memory: 500Mi
            limits:
              memory: 2000Mi
          volumeMounts:

          - mountPath: /app
            name: roon-app

          - mountPath: /music
            name: roon-music

          - mountPath: /data
            name: roon-data

          - mountPath: /backup
            name: roon-backup

      volumes:

      - name: roon-app
        persistentVolumeClaim:
          claimName: roon-app

      - name: roon-music
        persistentVolumeClaim:
          claimName: roon-music

      - name: roon-data
        persistentVolumeClaim:
          claimName: roon-data

      - name: roon-backup
        persistentVolumeClaim:
          claimName: roon-backup

# Data Volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: roon-data
  namespace: home
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: store.lan
    path: "/volume1/data/music/roon-data"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: roon-data
  namespace: home
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

# Library volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: roon-music
  namespace: home
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: store.lan
    path: "/volume1/data/music/library"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: roon-music
  namespace: home
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

# App volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: roon-app
  namespace: home
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: store.lan
    path: "/volume1/data/music/roon-app"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: roon-app
  namespace: home
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi


# Backup volumes
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: roon-backup
  namespace: home
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: store.lan
    path: "/volume1/data/music/roon-backup"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: roon-backup
  namespace: home
  annotations:
    volume.beta.kubernetes.io/storage-class: ""
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

1 Like