Code Monkey home page Code Monkey logo

roon-bridge-docker's Introduction

Roon Bridge on Docker

Links

Repo URL
Source code GitHub
Docker images Docker Hub

Available Archs on Docker Hub

  • linux/amd64
  • linux/arm/v7
  • linux/arm64/v8

Install Docker

Docker is a prerequisite. On debian and derived distributions (this includes Raspberry Pi OS, DietPi, Moode Audio, Volumio, OSMC), we can install the necessary packages using the following commands:

sudo apt-get update
sudo apt-get install -y docker.io docker-compose
sudo usermod -a -G docker $USER

The last command adds the current user to the docker group. This is not mandatory; if you choose to skip this step, you might need to execute docker-compose commands by prepending sudo.

Build docker image

Use the included script to build the image:

./build.sh

Environment Variables

Variable Description
BASE_URL If set, files are downloaded from that URL instead of from the roon servers
FORCE_ARCH If set, we are using the value instead of uname -m when selecting the binary file to use/download. This can be useful for example with LibreElec or OSMC on the Pi4, which have a 64bit kernel (aarch64) but a 32bit docker version: in this situation, then container starts but then the binary does not work. Setting this variable to armv7l solved the issue for me. Possible values are aarch64, armv7l and x86_64.

Volumes

Volume Description
/files If set, we try and see if the volume contains the files that would instead be downloaded. Setting this volume can speed up the startup phase slightly.

Example

You can use the published images or the one you build by yourself. See the repo here.

Docker Run

docker run \
    -d \
    --name roon-bridge \
    --restart always \
    --network host \
    --device /dev/snd \
    --label com.centurylinklabs.watchtower.enable=false \
    giof71/roon-bridge:latest

Docker Compose

---
version: "3"

services:
  roon-bridge:
    container_name: roon-bridge
    image: giof71/roon-bridge:latest
    network_mode: host
    devices:
      - /dev/snd:/dev/snd
    labels:
      - com.centurylinklabs.watchtower.enable=false
    restart: always

Disabling watchtower

Watchtower is an excellent tool, but it can disrupt your listening experience if an image update can trigger a container recreation.
I am therefore keeping watchtower disabled in my examples.

Installation on Moode Audio or Volumio

It is possible to use this solution for easy installation of Roon Bridge on Moode Audio and Volumio.
It is required to have a ssh connection to the Moode/Volumio audio box. In order to enable ssh on Volumio, refer to this page.
Those two platforms do not ship docker out of the box (unsurprisingly), so docker installation is required. See Docker Installation earlier in this page.

Changelog

Date Description
2023-09-28 Switch to debian stable by default (see #20)
2023-03-29 Allow BASE_URL as alternate source for downloads
2023-03-29 Removed /roon mountpoint for ease of use
2023-03-29 Add volume /files for providing the necessary binary files (avoid downloads)
2023-03-27 Added FORCE_ARCH variable

roon-bridge-docker's People

Contributors

giof71 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

cv8r

roon-bridge-docker's Issues

[Maintenance] Simplify startup process

  • Allow custom BASE_URL (allow custom http/https file server, possibly local)
  • Remove /roon mountpoint (confusing)
  • Add /files mountpoint, allows user to provide binaries (avoids downloads at container startup file)
  • Binary is expanded on every startup (the files are very small, it takes negligible time)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.