Containerized Mopidy music server with support for MPD clients and HTTP clients.
- Follows official installation on top of Debian.
- With backend extensions for:
- Mopidy-Spotify for Spotify (Premium)
- Mopidy-GMusic for Google Play Music
- Mopidy-SoundClound for SoundCloud
- Mopidy-YouTube for YouTube
- With Mopidy-Moped web extension.
- Runs as
mopidyuser inside the container (for security reasons).
You may install additional backend extensions.
First to make audio work from within a Docker container, you should enable PulseAudio over network; so if you have X11 you may for example do:
-
Install PulseAudio Preferences. Debian/Ubuntu users can do this:
$ sudo apt-get install paprefs -
Launch
paprefs(PulseAudio Preferences) > "Network Server" tab > Check "Enable network access to local sound devices" (you may check "Don't require authentication" to avoid mounting cookie file described below). -
Restart PulseAudio
$ sudo service pulseaudio restartor
$ pulseaudio -k $ pulseaudio --startOn some distributions, it may be necessary to completely restart your computer. You can confirm that the settings have successfully been applied running
pax11publish | grep -Eo 'tcp:[^ ]*'. You should see something liketcp:myhostname:4713.
$ docker run -d \
-e "PULSE_SERVER=tcp:$(hostname -i):4713" \
-e "PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*')" \
-v "$PWD/media:/var/lib/mopidy/media:ro" \
-v "$PWD/local:/var/lib/mopidy/local" \
-p 6600:6600 -p 6680:6680 \
wernight/mopidy \
mopidy \
-o spotify/username=USERNAME -o spotify/password=PASSWORD \
-o gmusic/username=USERNAME -o gmusic/password=PASSWORD \
-o soundcloud/auth_token=TOKEN
See mopidy's command for possible additional options.
Most elements are optional (see some examples below). Replace USERNAME, PASSWORD, TOKEN accordingly if needed, or disable services (e.g., -o spotify/enabled=false):
- For Spotify you'll need a Premium account.
- For Google Music use your Google account (if you have 2-Step Authentication, generate an app specific password).
- For SoundCloud, just get a token after registering.
Ports:
- 6600 - MPD server (if you use for example ncmpcpp client)
- 6680 - HTTP server (if you use your browser as client)
Environment variables:
PULSE_SERVER- PulseAudio server socket.PULSE_COOKIE_DATA- Hexadecimal encoded PulseAudio cookie commonly at~/.config/pulse/cookie.
Volumes:
/var/lib/mopidy/media- Path to directory with local media files (optional)./var/lib/mopidy/local- Path to directory to store local metadata such as libraries and playlists in (optional).
-
Give read access to your audio files to user 102 (
mopidy), group 29 (audio), or all users (e.g.,$ chgrp -R 29 $PWD/media && chmod -R g+r $PWD/media). -
Index local files:
$ docker run --rm \ -e "PULSE_SERVER=tcp:$(hostname -i):4713" \ -e "PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*')" \ -v "$PWD/media:/var/lib/mopidy/media:ro" \ -v "$PWD/local:/var/lib/mopidy/local" \ -p 6680:6680 \ wernight/mopidy mopidy local scan -
Start the server:
$ docker run -d \ -e "PULSE_SERVER=tcp:$(hostname -i):4713" \ -e "PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*')" \ -v "$PWD/media:/var/lib/mopidy/media:ro" \ -v "$PWD/local:/var/lib/mopidy/local" \ -p 6680:6680 \ wernight/mopidy -
Browse to http://localhost:6680/
Example using ncmpcpp MPD console client
$ docker run --name mopidy -d \
-e "PULSE_SERVER=tcp:$(hostname -i):4713" \
-e "PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*')" \
wernight/mopidy
$ docker run --rm -it --link mopidy:mopidy wernight/ncmpcpp ncmpcpp --host mopidy
Having more issues? Report a bug on GitHub. Also if you need some additional extensions/plugins that aren't already installed (please explain why).