For the past few weeks I have been amused to configure an instance of Moode on my streamer Volumio Primo based on Asus TinkerBoard.
VolumioOS is powerful, but I like being able to A/B test this excellent hardware and have access to different options depending on my needs.
According to my research, this had never been attempted before, and the good news is that I succeeded.
Everything seems to work, I have access to my shared mount points with volumio, spotify connect is very stable, camilladsp is present even if I haven't had the time to test it yet.
This "exploit" wasn't easy, as Docker wasn't initially designed to run a complex set of applications demonetized by systemd, but rather to run one or two simple applications in a light, virtualized environment. As you can see, we're at the very limits of the system.
Another particularity is that I was unable to create an image via a dockerfile. Here again, the size of the layers and the presence of systemd prevented me from completing my build, so for the time being I'll have to make do with a step-by-step recipe. It's a bit tedious, but the result is there!
Here's the recipe:
in a volumio ssh console
TIP: when using nano command during the recipe, displace in the opened file with arrow, change what needed simply with your keyboard, save/exit with [CTRL+X], [y] to confirm, [enter] to overwrite, that's it !
**************************************
* install docker (host side) *
**************************************
'sudo apt update
'sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
'curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
'sudo add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
'sudo apt update
'sudo apt install docker-ce
'sudo usermod -aG docker $USER
******************************************************************************
* Optional - Prepare Alsa just in case of external DAC (host side) *
******************************************************************************
'sudo nano /etc/modprobe.d/alsa-base.conf
comment the last line with #, it will modify the order of soundcard in ALSA to make it moode compatible
# options snd-usb-audio index=1,5 vid=0x0bda pid=0x481a
'sudo reboot
*************************************************************************************
* Optional - If you want to use your device as bluetooth receiver (host side) *
*************************************************************************************
'sudo systemctl stop bluetooth.service (or deactivate it in volumio and reboot)
* this is needed to make Bluetooth accessible from within container*
************************************************************************
* create container with systemd in priviledged mode and start it *
************************************************************************
'docker volume create moode
'sudo chown volumio /var/lib/docker/volumes
'docker create --name debian-moode -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /mnt/NAS:/mnt/NAS -v moode:/boot:rw --device /dev/snd --net host --privileged -e LANG=C.UTF-8 --cap-add=NET_ADMIN --security-opt seccomp:unconfined navikey/raspbian-bullseye /lib/systemd/systemd
'docker container start debian-moode
'docker exec -ti debian-moode /bin/bash *with this command you enter the container with a console*
*********************************************
* install moode player (container side) *
*********************************************
'apt-get update -y
'apt-get upgrade -y
'apt-get install -y curl sudo libxaw7 ssh libsndfile1 libsndfile1-dev
'sudo nano /etc/ssh/sshd_config *to change ssh port to 2222 and fix openssh*
'sudo service sshd restart
'curl -1sLf 'https://dl.cloudsmith.io/public/moodeaudio/m8y/setup.deb.sh' | sudo -E distro=raspbian codename=bullseye arch=armv7hf bash -
'apt-get update -y |apt-get install moode-player -y --fix-missing
# in general this step is giving error but you can correct with
'apt --fix-broken install
'exit *with this command you come back to volumio console*
****************************************
* restart moode player (host side) *
****************************************
'docker container stop debian-moode
'docker container start debian-moode
'docker exec -ti debian-moode /bin/bash *with this command you enter the container with a console*
***************************************
* configure nginx (host side) *
***************************************
'nano /etc/nginx/sites-available/moode-http.conf *to change http port to 8008 for example*
'systemctl restart nginx
****************************
* Access Moode web UI *
****************************
http://volumioip:8008
Enjoy
Nice. Why dont you use Dockerfile for creating the docker image?It would be nice to see the image on Docker Hub
yesss ! It works like a charm, Greetings from Germany.