top of page
Search
Writer's picturechourmovs vs

Install Moode in a Docker container on Volumio Primo (Asus Tinkerboard ARMv7l)

Updated: Aug 16, 2023



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
Don't hesitate to try it out and let me know what you think.

News of 15.08.23 : github host my automated script https://github.com/chourmovs/moode_tinkerboard

Changelog :
04.08.23 : v 1.0 initial release
14.08.23 : v 1.1 added Bluetooth functionality and various fixes and improvements.
15.08.23 ; v1.2 fix mpd confict that break Moode radio (optional)
creation of a script hosted on github

Screenshots






1,052 views3 comments

3 Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Guest
Oct 17, 2023
Rated 4 out of 5 stars.

Nice. Why dont you use Dockerfile for creating the docker image?It would be nice to see the image on Docker Hub

Like
chourmovs vs
chourmovs vs
Nov 16, 2023
Replying to

Hi, this was my first intend but I failed creating such a big image with systemd on github/dockerhub using action

Like

Guest
Aug 16, 2023
Rated 5 out of 5 stars.

yesss ! It works like a charm, Greetings from Germany.

Like
bottom of page