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
mopidy
user inside the container (for security reasons).
You may install additional backend extensions.
First to make audio from 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 restart
or
$ pulseaudio -k $ pulseaudio --start
On 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).