2015-04-27 14:52:11 +02:00
2015-04-21 15:13:36 +02:00
2015-04-27 14:52:11 +02:00
2015-04-21 15:13:36 +02:00
2015-04-27 14:52:11 +02:00
2015-04-27 14:52:11 +02:00

docker-mopidy

Containerized Mopidy music server with support for MPD clients and HTTP clients.

Features

You may install additional backend extensions.

Usage

First for audio in a docker container to work, enabled PulseAudio over network. If you have X11 you may for example do:

  1. Install PulseAudio Preferences. Debian/Ubuntu users can do this:

    $ sudo apt-get install paprefs
    
  2. 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).

  3. 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 like tcp:myhostname:4713.

General usage (see mopidy commands):

$ 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 \
      -o spotify/username=USERNAME -o spotify/password=PASSWORD \
      -o gmusic/username=USERNAME -o gmusic/password=PASSWORD \
      -o soundcloud/auth_token=TOKEN

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
  • 6680 - HTTP server

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).
  • /dev/snd - Used to share ALSA socket and play audio along with --lxc-conf (see http://stackoverflow.com/q/28985714/167897).

Example using HTTP client to stream local files

  1. 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).

  2. Index local files:

    $ docker run --rm -v $PWD/media:/var/lib/mopidy/media:ro -v $PWD/local:/var/lib/mopidy/local -p 6800:6800 wernight/mopidy local scan
    
  3. Start the server:

    $ docker run -d -v $PWD/media:/var/lib/mopidy/media:ro -v $PWD/local:/var/lib/mopidy/local -p 6800:6800 wernight/mopidy
    
  4. Browse to http://localhost:6800/

Example using ncmpcpp MPD console client

$ docker run --name mopidy -d wernight/mopidy
$ docker run --rm -it --link mopidy:mopidy wernight/ncmpcpp --host mopidy

Feedbacks

Having more issues? Report a bug on GitHub.

Description
Containerized Mopidy MPD (Music Player Daemon) along with Spotify, Google Music... plugins.
Readme 272 KiB
Languages
Dockerfile 92.3%
Shell 7.7%