Giter Club home page Giter Club logo

docker-mopidy's Introduction

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

Features

You may install additional backend extensions.

Usage

PulseAudio over network

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:

  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

$ 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).
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 \
          -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
    
  3. 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
    
  4. 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

Feedbacks

Having more issues? Report a bug on GitHub. Also if you need some additional extensions/plugins that aren't already installed (please explain why).

docker-mopidy's People

Contributors

wernight avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.