Skip to content

Repository files navigation

mpd-alsa-docker

References

First and foremost, the reference to the awesome projects:

Music Player Daemon
MPDScribble

Support

ko-fi
Please see the Goal.
Please note that support goal is limited to cover running costs for subscriptions to music services.

Description

A docker image for mpd with support for both Alsa and PulseAudio.
The container image also includes mpdscribble. In alternative, you can use mpd-scrobbler-docker as the scrobbler for this image.
User mode is now possible when using alsa outputs, and of course it is mandatory (enforced) when using pulse outputs.
Upsampling (even in integer mode) is now available via a patched version of MPD (an unmodified version is available as well).
Also, thanks to a feature request by user XxAcielxX, who also contributed with the necessary documentation, we have a certain degree of support for equalization.
As an alternative, if you don't want to use docker for an audio player, and still would prefer to run mpd using environment variables instead of maintaining your mpd.conf files and bothering with creating the directory structure, take a look at my new project player-launchers. It is still in the initial development phases, but the mpd launcher has quite some options already in place.

Available Archs on Docker Hub

  • linux/amd64
  • linux/arm/v7
  • linux/arm64/v8
  • linux/arm/v6 (for debian-based builds)
  • linux/arm/v5 (for debian-based builds)

Links

Source: GitHub
Images: DockerHub

Why

I prepared this Dockerfile because I wanted to be able to install mpd easily on any machine (provided the architecture is amd64 or arm). Also I wanted to be able to configure and govern the parameters easily, allowing multiple output, also of different types.

Prerequisites

See this page.

Get the image

Here is the repository on DockerHub.

Getting the image from DockerHub is as simple as typing:

docker pull giof71/mpd-alsa

Legacy support OUTPUT_MODE, is still available in the legacy branch, as well as on the images tagged with the legacy prefix.
You might want to use those releases as a stop-gap solution should you encounter issues migrating to the new configuration methods.
Keep in mind that the legacy branch will not be updated with new features. Only relevant bugfix changes will be ported there.

MPD Source code

The source code for the patched MPD is in this GitHub repo.
The version-0.24.13 tag is in-line with the GitHub upstream repo at version 0.24.13.
The version-0.24.13-ups tag contains a patch which is used when INTEGER_UPSAMPLING is set to yes. Use at your own risk.
Two binaries are available in the container image:

  • /app/bin/compiled/mpd (upstream version)
  • /app/bin/compiled/mpd-ups (patched version)

The current mpd version is v0.24.13 when using giof71/mpd-compiler-docker as the base image (Docker repo here). The repo binary is installed also in this case.
Vanilla versions only have the repo binary.
The mpdscribble version depends on the base image. See the following table:

Image tags

Base ImageTagsCompiled MPD versionRepo MPD versionMPDScribble version
giof71/mpd-compiler:trixielatest, stable, trixie0.24.130.24.40.24
debian:trixie-slimvanilla-latest, vanilla-stable, vanilla, vanilla-trixie-0.24.40.24

Usage

Important changes

Starting with release 2023-02-04, you will not be able to use the deprecated PULSE and ALSA as OUTPUT_MODE. Refer to the next chapter for more information about how to change the configuration. Please note that Alsa and PulseAudio are still supported: you just need to slightly modify your docker configurations.
In case of difficulties, you can fall back to the legacy image versions (e.g.: giof71/mpd-alsa:legacy-latest), as those will still work with these deprecated configurations.

What has changed

If you have been using this container image for a while, you might have seen that the output might contain some warnings, telling you that you are using a deprecated configuration. The message usually tries to suggest how to switch to a recommended configuration.
This is happening because this whole project started with the idea of supporting ALSA only (hence the name mpd-alsa-docker). Down the road, I added PulseAudio support, and eventually HTTPD outputs, SHOUTCAST outputs, also in multiple instances.
So now a few variables have a misleading name: the most misleading being ALSA_DEVICE_NAME which, despite the name, refers to the output name, and not to the device name.
So currently, OUTPUT_MODE is not available anymore.
In any case, I suggest you change the configuration as suggested, and use the variables from the appropriate sections below for Alsa and PulseAudio, otherwise, in time, your configurations will not be functional anymore.
Please refer to the legacy branch for the old documentation.
Feel free to contact me with an issue if you need support. I cannot guarantee a timing, but I will try to help if I can.

User mode

See this page.

Volumes

The following tables lists the volumes:

VOLUMEDESCRIPTION
/dbWhere the mpd database is saved
/musicWhere the music is stored. You might consider to mount your directory in read-only mode (:ro)
/playlistsWhere the playlists are stored
/logWhere all logs are written (e.g. mpd.log, scrobbler.log etc)
/user/configAdditional user-provided configuration files, see this paragraph for the details

User Configuration volume

Several files can be located in the user configuration (/user/config) volume. Here is a table of those files.

FILEDESCRIPTION
lastfm.txtLastFM Credentials
librefm.txtLibreFM Credentials
jamendo.txtJamendo Credentials
additional-alsa-presets.confAdditional alsa presets
additional-outputs.txtAdditional outputs, which will be added to the configuration file during the container startup phase
asoundrc.txtAlsa configuration file: this will be copied to /home/mpd-user/.asoundrc or to /root/.asoundrc, depending on user mode to be enabled or not
override.mpd.confUser provided mpd configuration file (see #356). Use at your own risk. If this file is available, it will be used in the final phase of the run script instead of the generated file.

For a reference for the structure of the credentials file, see the corresponding example file in the doc folder of the repository.

Environment Variables

The following tables lists all the currently supported environment variables:

VARIABLEDESCRIPTION
DATABASE_MODECan be simple (default), proxy or upnp (requires host networking)
DATABASE_PROXY_HOSTMPD server hostname, only used when DATABASE_MODE is set to proxy
DATABASE_PROXY_PORTMPD server port, only used when DATABASE_MODE is set to proxy
DATABASE_PROXY_PASSWORDThe password used to log in to the master MPD instance, only used when DATABASE_MODE is set to proxy
DATABASE_PROXY_KEEPALIVESend TCP keepalive packets to the master MPD instance (yes or no), only used when DATABASE_MODE is set to proxy
MUSIC_DIRECTORYLocation of music files, defaults to /music
MPD_BIND_ADDRESSThe MPD listen address, more than one can be specified (just use MPD_BIND_ADDRESS_1, MPD_BIND_ADDRESS_2, etc), defaults to 0.0.0.0
MPD_PORTThe MPD port, defaults to 6600
USER_MODESet to y or yes for user mode. Case insensitive. See User mode. Required when using any PulseAudio outputs (so when PULSE_AUDIO_OUTPUT_CREATE is set to yes)
PUIDUser id. Defaults to 1000. The user/group will be created when a PulseAudio output is created unless USER_MODE is set to no.
PGIDGroup id. Defaults to 1000. The user/group will be created when a PulseAudio output is created unless USER_MODE is set to no.
AUDIO_GIDaudio group id from the host machine. Mandatory for alsa output in user mode. See User mode.
INPUT_CACHE_SIZESets the input cache size. Example value: 1 GB
SAMPLERATE_CONVERTERConfigure samplerate_converter. Example value: soxr very high. Note that this configuration cannot be used when SOXR_PLUGIN_ENABLE is set to enabled. There are some preset values for sox: very_high and very-high map to soxr very high, high maps to soxr high, medium maps to soxr medium, low maps to soxr low and quick maps to soxr quick. Refer to this page for details.
MPD_ENABLE_LOGGINGDefaults to yes, set to no to disable
MPD_LOG_LEVELCan be default or verbose
FFMPEG_ENABLEDEnable ffmpeg decoder, defaults to no. Plugin documentation here
CURL_ENABLEDEnable CURL input plugin, defaults to yes. This is required if you plan to use upmpdcli. Input plugin documentation here
CURL_PROXYParameter for CURL input plugin
CURL_PROXY_USERParameter for CURL input plugin
CURL_PROXY_PASSWORDParameter for CURL input plugin
CURL_VERIFY_PEERParameter for CURL input plugin
CURL_VERIFY_HOSTParameter for CURL input plugin
CURL_CACERTParameter for CURL input plugin
ZEROCONF_ENABLEDSet to yes to enable, disabled by default.
ZEROCONF_NAMESet zeroconf name, used only if ZEROCONF_ENABLED is set to yes
HYBRID_DSD_ENABLEDHybrid dsd is enabled by default, set to no to disable. Disabled when at least one PulseAudio output is created.
OPUS_DECODER_ENABLEDDefaults to yes, if set to no, the opus decoder will be disabled.
MIXRAMP_ANALYZER_ENABLEDEnable MixRamp support. Set to yes to enable
AUDIO_BUFFER_SIZEAdjust the size of the internal audio buffer. Default is 4 MB (4 MiB).
MAX_ADDITIONAL_OUTPUTS_BY_TYPEThe maximum number of outputs by type, defaults to 20
RESTORE_PAUSEDIf set to yes, then MPD is put into pause mode instead of starting playback after startup. Default is no.
STATE_FILE_INTERVALAuto-save the state file this number of seconds after each state change, defaults to 10 seconds
ENFORCE_PLAYER_STATEIf set to yes, it will remove player state information from the state file, so the player state will only depend on the environment variables. Defaults to yes
FORCE_REPO_BINARYIf set to yes, the binary from the distro repository will be used
DEFAULT_PERMISSIONSSets default_permissions, see here
LOCAL_PERMISSIONSSets local_permissions, see here
HOST_PERMISSIONSAdds a host_permissions, you can add multiple (up to MAX_PERMISSIONS), append _1, _2, etc to the variable name for additional entries, see here
PASSWORDAdds a password, you can add multiple (up to MAX_PERMISSIONS), append _1, _2, etc to the variable name for additional entries, see here
MAX_PERMISSIONSSpecify the maximum number of host_permissions and passwords, defaults to 10
STDERR_ENABLEDPrint messages to the standard error, enabled by default. Set to no to disable
CONNECTION_TIMEOUTIf a client does not send any new data in this time period (seconds), the connection is closed. Clients waiting in “idle” mode are excluded from this. Default is 60
MAX_CONNECTIONSThis specifies the maximum number of clients that can be connected to MPD at the same time, default is 100
MAX_PLAYLIST_LENGTHThe maximum number of songs that can be in the playlist, default is 16384
MAX_COMMAND_LIST_SIZEThe maximum size a command list in KBYTES, default is 2048 (2 MiB)
MAX_OUTPUT_BUFFER_SIZEThe maximum size of the output buffer to a client (maximum response size), in KBYTES, default is 8192 (8 MiB)
AUTO_UPDATESet to yes to enable autoupdate of database
AUTO_UPDATE_DEPTHLimit the depth of the directories being watched, 0 means only watch the music directory itself. There is no limit by default.
STARTUP_DELAY_SECDelay before starting the application in seconds, defaults to 0

SOXR Plugin

Please find here the variables used to configure the SOXR plugin.

VARIABLEDESCRIPTION
SOXR_PLUGIN_ENABLEEnable the soxr plugin. Do not use in conjunction with variable SAMPLERATE_CONVERTER
SOXR_PLUGIN_PRESETPresets for SOXR_PLUGIN configuration. Available presets: goldilocks, extremus, max32
SOXR_PLUGIN_THREADSThe number of libsoxr threads. 0 means automatic. The default is 1 which disables multi-threading.
SOXR_PLUGIN_QUALITYThe quality of soxr resampler. Possible values: very high, high (the default), medium, low, quick, custom. When set to custom, the additional soxr parameters can be set.
SOXR_PLUGIN_PRECISIONThe precision in bits. Valid values 16,20,24,28 and 32 bits.
SOXR_PLUGIN_PHASE_RESPONSEBetween the 0-100, where 0 is MINIMUM_PHASE and 50 is LINEAR_PHASE
SOXR_PLUGIN_PASSBAND_ENDThe % of source bandwidth where to start filtering. Typical between the 90-99.7.
SOXR_PLUGIN_STOPBAND_BEGINThe % of the source bandwidth Where the anti aliasing filter start. Value 100+.
SOXR_PLUGIN_ATTENUATIONReduction in dB’s to prevent clipping from the resampling process
SOXR_PLUGIN_FLAGSBitmask with additional options, see soxr documentation for specific flags

ReplayGain Settings

Please find here the variables used to configure ReplayGain.

VARIABLEDESCRIPTION
REPLAYGAIN_MODEReplayGain Mode, defaults to off
REPLAYGAIN_PREAMPReplayGain Preamp, defaults to 0
REPLAYGAIN_MISSING_PREAMPReplayGain missing preamp, defaults to 0
REPLAYGAIN_LIMITReplayGain Limit, defaults to yes
VOLUME_NORMALIZATIONVolume normalization, defaults to no

Qobuz Plugin

Please find here the variables used to configure the Qobuz plugin.

VARIABLEDESCRIPTION
QOBUZ_PLUGIN_ENABLEDEnables the Qobuz plugin, defaults to no
QOBUZ_APP_IDQobuz application id
QOBUZ_APP_SECRETYour Qobuz application Secret
QOBUZ_USERNAMEQobuz account username
QOBUZ_PASSWORDQobuz account password
QOBUZ_FORMAT_IDThe Qobuz format identifier, i.e. a number which chooses the format and quality to be requested from Qobuz. The default is 5 (320 kbit/s MP3).

Scrobbling

Please find here the variables used to configure scrobbling. All of those are of course optional.
Credentials of course go in pairs, so in order to enable one serve, you must provide both username and password.

VARIABLEDESCRIPTION
LASTFM_USERNAMEUsername for Last.fm
LASTFM_PASSWORDPassword for Last.fm
LIBREFM_USERNAMEUsername for Libre.fm
LIBREFM_PASSWORDPassword for Libre.fm
JAMENDO_USERNAMEUsername for Jamendo
JAMENDO_PASSWORDPassword for Jamendo
SCRIBBLE_VERBOSEHow verbose mpdscribble's logging should be. Default is 1.
SCROBBLER_MPD_HOSTNAMESet when using host mode, defaults to localhost
SCROBBLER_MPD_PORTSet when using host mode, defaults to 6600
PROXYProxy support for mpdscribble. Example value: http://the.proxy.server:3128

Additional Outputs

You can define additional outputs of various types. Refer to the following paragraphs.
For each type, that you can add up to 20 (or what is specified for the variable MAX_ADDITIONAL_OUTPUTS_BY_TYPE) additional outputs for each type. In order to specify distinct values, you can add _1, _2 to every variable names in this set. The first output does not require to specify _0, that index is implicit.
The output name of those outputs, if not explicitly set, is created by appending with _1, _2, ... to the defaut name, so in the case of PulseAudio, the names of output will be PulseAudio_1, PulseAudio_2, ...

ALSA additional outputs

Additional alsa outputs can be configured using the following variables:

VARIABLEDESCRIPTION
ALSA_OUTPUT_CREATESet to yes if you want to create an additional alsa output
ALSA_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
ALSA_OUTPUT_NAMEThe name of the alsa output, defaults to alsa
ALSA_OUTPUT_PRESETUse an Alsa preset for easier configuration
ALSA_OUTPUT_DEVICEThe audio device. Common examples: hw:DAC or hw:x20 or hw:X20 for usb dac based on XMOS chips. Defaults to default
ALSA_OUTPUT_AUTO_FIND_MIXERAllows to auto-select the mixer for easy hardware volume configuration
ALSA_OUTPUT_MIXER_TYPEMixer type, defaults to hardware
ALSA_OUTPUT_MIXER_DEVICEMixer device, defaults to default
ALSA_OUTPUT_MIXER_CONTROLMixer Control, defaults to PCM
ALSA_OUTPUT_MIXER_INDEXMixer Index, defaults to 0
ALSA_OUTPUT_ALLOWED_FORMATS_PRESETAlternative to ALSA_OUTPUT_ALLOWED_FORMATS. Possible values: 16x, 8x, 4x, 2x, 16x-nodsd, 8x-nodsd, 4x-nodsd, 2x-nodsd, plus additional presets with trailing -32bit are available
ALSA_OUTPUT_ALLOWED_FORMATSSets allowed formats
ALSA_OUTPUT_FORMATSets output format
ALSA_OUTPUT_AUTO_RESAMPLEIf set to no, then libasound will not attempt to resample. In this case, the user is responsible for ensuring that the requested sample rate can be produced natively by the device, otherwise an error will occur.
ALSA_OUTPUT_STOP_DSD_SILENCEIf enabled, silence is played before manually stopping playback (“stop” or “pause”) in DSD mode (native DSD or DoP). This is a workaround for some DACs which emit noise when stopping DSD playback. Can be left blank or to yes or no
ALSA_OUTPUT_THESYCON_DSD_WORKAROUNDIf enabled, enables a workaround for a bug in Thesycon USB audio receivers. On these devices, playing DSD512 or PCM causes all subsequent attempts to play other DSD rates to fail, which can be fixed by briefly playing PCM at 44.1 kHz. Can be left blank or to yes or no
ALSA_OUTPUT_INTEGER_UPSAMPLINGIf one or more ALSA_ALLOWED_FORMATS are set and INTEGER_UPSAMPLING is set to yes, the formats which are evenly divided by the source sample rate are preferred. The ALSA_ALLOWED_FORMATS list is processed in order as provided to the container. So if you want to upsample, put higher sampling rates first. Using this feature causes a patched version of mpd to be run. Use at your own risk.
ALSA_OUTPUT_INTEGER_UPSAMPLING_ALLOWEDAllows selection of sample rates to be upsampled. If set, only specified values are allowed. The values should respect the same format user for ALSA_OUTPUT_ALLOWED_FORMATS
ALSA_OUTPUT_INTEGER_UPSAMPLING_ALLOWED_PRESETPreset for ALSA_OUTPUT_INTEGER_UPSAMPLING_ALLOWED. Allowed values are base (for 44.1kHz and 48.0kHz) and 44 for 44.1kHz only
ALSA_OUTPUT_DOPEnables Dsd-Over-Pcm. Possible values: yes or no. Empty by default: this it lets mpd handle dop setting.

Refer to the MPD documentation for the meaning of the variables.

PulseAudio additional outputs

Remember to setup user mode when using PulseAudio outputs, otherwise they won't work.
Additional PulseAudio outputs can be configured using the following variables:

VARIABLEDESCRIPTION
PULSE_AUDIO_OUTPUT_CREATESet to yes if you want to create an additional PulseAudio output
PULSE_AUDIO_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
PULSE_AUDIO_OUTPUT_NAMEThe name of the PulseAudio output, defaults to PulseAudio
PULSE_AUDIO_OUTPUT_SINKSpecifies the name of the PulseAudio sink MPD should play on
PULSE_AUDIO_OUTPUT_MEDIA_ROLEMedia role for the PulseAudio output
PULSE_AUDIO_OUTPUT_SCALING_FACTORScaling factor for the PulseAudio output

Refer to the MPD documentation for the meaning of the variables.

HTTPD additional outputs

Additional httpd outputs can be configured using the following variables:

VARIABLEDESCRIPTION
HTTPD_OUTPUT_CREATESet to yes if you want to create an additional httpd output
HTTPD_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
HTTPD_OUTPUT_NAMEThe name of the httpd output, defaults to httpd
HTTPD_OUTPUT_PORTThe port for the httpd output stream, defaults to 8000 if not specified
HTTPD_OUTPUT_BIND_TO_ADDRESSAllows to specify the bind address
HTTPD_OUTPUT_ENCODERThe encoder defaults to wave, see here for other options
HTTPD_OUTPUT_ENCODER_BITRATEEncoder bitrate. Refer to the encoder documentation
HTTPD_OUTPUT_ENCODER_QUALITYEncoder quality. Refer to the encoder documentation
HTTPD_OUTPUT_MAX_CLIENTSSets a limit, number of concurrent clients. When set to 0 no limit will apply. Defaults to 0
HTTPD_OUTPUT_ALWAYS_ONIf set to yes, then MPD attempts to keep this audio output always open. This may be useful for streaming servers, when you don’t want to disconnect all listeners even when playback is accidentally stopped. Defaults to yes
HTTPD_OUTPUT_TAGSIf set to no, then MPD will not send tags to this output. This is only useful for output plugins that can receive tags, for example the httpd output plugin. Defaults to yes
HTTPD_OUTPUT_FORMATThe output format, defaults to 44100:16:2
HTTPD_OUTPUT_MIXER_TYPESet to software if you want to be able to change the volume of the output stream

The port number default is calculated for each index by incrementing the default (8000) value.
When using multiple httpd outputs, remember to open all the relevant ports, not only 8000, otherwise only the first output will work.

Shout additional outputs

VARIABLEDESCRIPTION
SHOUT_OUTPUT_CREATESet to yes if you want to create an additional shout output
SHOUT_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
SHOUT_OUTPUT_NAMEThe name of the shout output, defaults to shout
SHOUT_OUTPUT_PROTOCOLSpecifies the protocol that wil be used to connect to the server, can be icecast2 (default), icecast1, shoutcast
SHOUT_OUTPUT_TLSSpecifies what kind of TLS to use, can be disabled (default), auto, auto_no_plain, rfc2818, rfc2817
SHOUT_OUTPUT_FORMATThe output format, defaults to 44100:16:2
SHOUT_OUTPUT_ENCODERThe encoder defaults to vorbis, see here for other options. BITRATE and QUALITY are typically alternative, so do not specify both of them.
SHOUT_OUTPUT_ENCODER_BITRATEEncoder bitrate. Refer to the encoder documentation
SHOUT_OUTPUT_ENCODER_QUALITYEncoder quality. Refer to the encoder documentation
SHOUT_OUTPUT_HOSTSets the host name of the ShoutCast / IceCast server, defaults to icecast, this seems a sensible default in a docker environment
SHOUT_OUTPUT_PORTConnect to this port number on the specified host, defaults to 8000
SHOUT_OUTPUT_MOUNTMounts the MPD stream in the specified URI
SHOUT_OUTPUT_USERSets the user name for submitting the stream to the server, defaults to source
SHOUT_OUTPUT_PASSWORDSets the password for submitting the stream to the server, defaults to hackme
SHOUT_OUTPUT_PUBLICSpecifies whether the stream should be "public", defaults to no
SHOUT_OUTPUT_MIXER_TYPESet to software if you want to be able to change the volume of the output stream
SHOUT_OUTPUT_ALWAYS_ONIf set to yes, then MPD attempts to keep this audio output always open. This may be useful for streaming servers, when you don’t want to disconnect all listeners even when playback is accidentally stopped. Defaults to yes

Null additional outputs

Additional null outputs can be configured using the following variables:

VARIABLEDESCRIPTION
NULL_OUTPUT_CREATESet to yes if you want to create an additional null output
NULL_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
NULL_OUTPUT_NAMEThe name of the Null output, defaults to null
NULL_OUTPUT_SYNCSync mode for the null output, can be yes (default) or no
NULL_OUTPUT_MIXER_TYPESet to software if you want to be able to change the volume of the output stream

Refer to the MPD documentation for the meaning of the variables.

Snapcast additional outputs

Additional snapcast outputs can be configured using the following variables:

VARIABLEDESCRIPTION
SNAPCAST_OUTPUT_CREATESet to yes if you want to create an additional Snapcast output
SNAPCAST_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
SNAPCAST_OUTPUT_NAMEThe name of the Snapcast output, defaults to snapcast
SNAPCAST_OUTPUT_FORMATSnapcast audio format
SNAPCAST_OUTPUT_MIXER_TYPESnapcast mixer type, defaults to software
SNAPCAST_OUTPUT_PORTBinds the Snapcast server to the specified port, defaults to 1704
SNAPCAST_OUTPUT_BIND_TO_ADDRESSBinds the Snapcast server to the specified address
SNAPCAST_OUTPUT_ZEROCONFPublish the Snapcast server, default is yes.

Refer to the MPD documentation for the meaning of the variables.

Fifo additional outputs

Additional snapcast outputs can be configured using the following variables:

VARIABLEDESCRIPTION
FIFO_OUTPUT_CREATESet to yes if you want to create an additional Fifo output
FIFO_OUTPUT_ENABLEDSets the output as enabled if set to yes, otherwise mpd's default behavior applies
FIFO_OUTPUT_NAMEThe name of the Fifo output, defaults to fifo
FIFO_OUTPUT_FORMATFifo audio format
FIFO_OUTPUT_MIXER_TYPEFifo mixer type, defaults to software
FIFO_OUTPUT_PATHPath of the fifo file

Refer to the MPD documentation for the meaning of the variables.

Examples

See some usage examples here.

Support for Scrobbling

If at least one set of credentials for Last.fm, Libre.fm or Jamendo are provided, mpdscribble will be started and it will scrobble the songs you play.
You can provide credential using the environment variables or using credential files stored in the volume /user/config.
The relevant files are:

  • lastfm.txt
  • librefm.txt
  • jamendo.txt

Run as a user-level systemd

When using a desktop system with PulseAudio, running a docker-compose with a restart=unless-stopped is likely to cause issues to the entire PulseAudio. At least that is what is systematically happening to me on my desktop systems.
You might want to create a user-level systemd unit. In order to do that, move to the pulse directory of this repo, then run the following to install the service:

./install.sh

After that, the service can be controlled using ./start.sh, ./stop.sh, ./restart.sh.
You can completely uninstall the service by running:

./uninstall.sh

Equalization support

Please find documentation here.

Build

See this document.

Change history

See this document.

About

Easily run mpd with Alsa or PulseAudio output with Docker. Upsampling 2x 4x 8x 16x with multiple soxr presets including goldilocks and extremus settings by Archimago. Scrobbling support.

Topics

Resources

Stars

43 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages