Giter Club home page Giter Club logo

docker-roon's Introduction

What

Two Docker images for Roon Bridge & Roon Server

Image features

  • multi-architecture:
    • linux/amd64
    • linux/arm64 (bridge only)
    • linux/arm/v7 (bridge only)
    • linux/arm/v6
  • hardened:
    • image runs read-only
    • image runs with no capabilities
    • process runs as a non-root user, disabled login, no shell
  • lightweight
    • based on our slim Debian buster version
    • simple entrypoint script
    • multi-stage build with no installed dependencies for the Bridge runtime image, one dependency for Server:
      • ffmpeg
  • observable
    • healthcheck (server only)
    • log to stdout
    • prometheus endpoint not applicable

Run

docker run -d \
    --net host \
    --name bridge \
    --read-only \
    --cap-drop ALL \
    --group-add audio \
    --device /dev/snd \
    --rm \
    dubodubonduponey/roon-bridge:v1

docker run -d \
    --net host \
    --name server \
    --read-only \
    --cap-drop ALL \
    --group-add audio \
    --device /dev/snd \
    --rm \
    dubodubonduponey/roon-server:v1

GOTCHA

Debian by default limits inotify watches to 8192, which might turns out to be too little.

You probably want to bump that up to prevent your system from crashing / rebooting...

Typically, on the host:

echo "fs.inotify.max_user_watches = 1048576" > /etc/sysctl.conf
echo 1048576 > /proc/sys/fs/inotify/max_user_watches

Notes

Building your own

# In case you want to download the latest from Roon servers
# ./refresh.sh

Roon packages version

The builder uses the packages stored under cache.

If you want to rebuild with fresh versions, call the ./refresh.sh script first to redownload from Roon servers.

Alpine

This is currently running on Debian, and I have no intention in trying again to make this work on Alpine.

If you do, here are some notes:

  • I first tried using gcompat. Past a linker name mismatch, mono-gen will just SIGBUS.
  • I then tried to cross-compile mono (using qemu). This failed as well with some obscure ARM syscall apparently being not implemented in qemu.

At this time, ncopa just enabled armv7 for mono (https://git.alpinelinux.org/aports/tree/testing/mono/APKBUILD): https://pkgs.alpinelinux.org/package/edge/testing/armv7/mono

Whether you can use it as a drop-in replacement for Roon embedded Mono is yet to be determined. Assuming this would work, it's unclear also if gcompat would still be necessary.

Moar?

See DEVELOP.md

docker-roon's People

Contributors

dubo-dubon-duponey avatar

Watchers

 avatar

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.