mirror of
https://github.com/Burningstone91/smart-home-setup.git
synced 2022-05-05 21:16:50 +03:00
Add mopidy config and dockerfile
This commit is contained in:
39
mopidy/bedroom/mopidy.conf
Executable file
39
mopidy/bedroom/mopidy.conf
Executable file
@@ -0,0 +1,39 @@
|
||||
[core]
|
||||
data_dir = /var/lib/mopidy
|
||||
|
||||
[mpd]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[http]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[iris]
|
||||
country = CH
|
||||
locale = de_CH
|
||||
|
||||
[local]
|
||||
media_dir = /var/lib/mopidy/media
|
||||
|
||||
[audio]
|
||||
output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/run/snapserver/bedroom_fifo
|
||||
|
||||
[spotify]
|
||||
enabled = false
|
||||
|
||||
[soundcloud]
|
||||
enabled = false
|
||||
|
||||
[file]
|
||||
enabled = false
|
||||
|
||||
[gmusic]
|
||||
enabled = false
|
||||
|
||||
[moped]
|
||||
enabled = false
|
||||
|
||||
[pandora]
|
||||
enabled = false
|
||||
|
||||
[youtube]
|
||||
enabled = false
|
||||
77
mopidy/docker/Dockerfile
Executable file
77
mopidy/docker/Dockerfile
Executable file
@@ -0,0 +1,77 @@
|
||||
FROM debian:buster-slim
|
||||
|
||||
RUN set -ex \
|
||||
# Official Mopidy install for Debian/Ubuntu along with some extensions
|
||||
# (see https://docs.mopidy.com/en/latest/installation/debian/ )
|
||||
&& apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
curl \
|
||||
dumb-init \
|
||||
gnupg \
|
||||
gstreamer1.0-alsa \
|
||||
gstreamer1.0-plugins-bad \
|
||||
python3-crypto \
|
||||
python3-distutils \
|
||||
&& curl -L https://bootstrap.pypa.io/get-pip.py | python3 - \
|
||||
&& pip install pipenv \
|
||||
# Clean-up
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ~/.cache
|
||||
|
||||
RUN set -ex \
|
||||
&& curl -L https://apt.mopidy.com/mopidy.gpg | apt-key add - \
|
||||
&& curl -L https://apt.mopidy.com/mopidy.list -o /etc/apt/sources.list.d/mopidy.list \
|
||||
&& apt-get update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
mopidy \
|
||||
mopidy-soundcloud \
|
||||
mopidy-spotify \
|
||||
# Clean-up
|
||||
&& apt-get purge --auto-remove -y \
|
||||
gcc \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ~/.cache
|
||||
|
||||
COPY Pipfile Pipfile.lock /
|
||||
|
||||
RUN set -ex \
|
||||
&& pipenv install --system --deploy --python=$(which python3)
|
||||
|
||||
RUN set -ex \
|
||||
&& mkdir -p /var/lib/mopidy/.config \
|
||||
&& ln -s /config /var/lib/mopidy/.config/mopidy
|
||||
|
||||
RUN python3 -m pip install Mopidy-Local
|
||||
Run python3 -m pip install Mopidy-MPD
|
||||
|
||||
# Start helper script.
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
# Default configuration.
|
||||
COPY mopidy.conf /config/mopidy.conf
|
||||
|
||||
# Copy the pulse-client configuratrion.
|
||||
COPY pulse-client.conf /etc/pulse/client.conf
|
||||
|
||||
# Allows any user to run mopidy, but runs by default as a randomly generated UID/GID.
|
||||
ENV HOME=/var/lib/mopidy
|
||||
RUN set -ex \
|
||||
&& usermod -G audio,sudo mopidy \
|
||||
&& chown mopidy:audio -R $HOME /entrypoint.sh \
|
||||
&& chmod go+rwx -R $HOME /entrypoint.sh
|
||||
|
||||
# Runs as mopidy user by default.
|
||||
USER mopidy
|
||||
|
||||
# Basic check,
|
||||
RUN /usr/bin/dumb-init /entrypoint.sh /usr/bin/mopidy --version
|
||||
|
||||
VOLUME ["/var/lib/mopidy/local", "/var/lib/mopidy/media"]
|
||||
|
||||
EXPOSE 6600 6680 5555/udp
|
||||
|
||||
ENTRYPOINT ["/usr/bin/dumb-init", "/entrypoint.sh"]
|
||||
CMD ["/usr/bin/mopidy"]
|
||||
|
||||
HEALTHCHECK --interval=5s --timeout=2s --retries=20 \
|
||||
CMD curl --connect-timeout 5 --silent --show-error --fail http://localhost:6680/ || exit 1
|
||||
21
mopidy/docker/LICENSE
Executable file
21
mopidy/docker/LICENSE
Executable file
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Werner Beroux
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
18
mopidy/docker/Pipfile
Executable file
18
mopidy/docker/Pipfile
Executable file
@@ -0,0 +1,18 @@
|
||||
[[source]]
|
||||
name = "pypi"
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[packages]
|
||||
youtube-dl = "*"
|
||||
mopidy-iris = "*"
|
||||
mopidy-moped = "*"
|
||||
mopidy-gmusic = "*"
|
||||
mopidy-pandora = "*"
|
||||
mopidy-youtube = "*"
|
||||
pyopenssl = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.8"
|
||||
473
mopidy/docker/Pipfile.lock
generated
Executable file
473
mopidy/docker/Pipfile.lock
generated
Executable file
@@ -0,0 +1,473 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "448e096d4b0c6dcdaafc8ea665ccd0fa0ccbd7f5b672b5fe5853efb3530cddf3"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.8"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"appdirs": {
|
||||
"hashes": [
|
||||
"sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41",
|
||||
"sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"
|
||||
],
|
||||
"version": "==1.4.4"
|
||||
},
|
||||
"beautifulsoup4": {
|
||||
"hashes": [
|
||||
"sha256:73cc4d115b96f79c7d77c1c7f7a0a8d4c57860d1041df407dd1aae7f07a77fd7",
|
||||
"sha256:a6237df3c32ccfaee4fd201c8f5f9d9df619b93121d01353a64a73ce8c6ef9a8",
|
||||
"sha256:e718f2342e2e099b640a34ab782407b7b676f47ee272d6739e60b8ea23829f2c"
|
||||
],
|
||||
"version": "==4.9.1"
|
||||
},
|
||||
"blowfish": {
|
||||
"hashes": [
|
||||
"sha256:1626d96d2672a6cf021d9b66a5013b6e594865403b4a06d75034e0a9ff1cbdc6",
|
||||
"sha256:a08c6a640ae39afab34dd73f7536a34fa318dfb4c281bc6cb246122210c1e176"
|
||||
],
|
||||
"version": "==0.6.1"
|
||||
},
|
||||
"cachetools": {
|
||||
"hashes": [
|
||||
"sha256:513d4ff98dd27f85743a8dc0e92f55ddb1b49e060c2d5961512855cda2c01a98",
|
||||
"sha256:bbaa39c3dede00175df2dc2b03d0cf18dd2d32a7de7beb68072d13043c9edb20"
|
||||
],
|
||||
"markers": "python_version ~= '3.5'",
|
||||
"version": "==4.1.1"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
|
||||
"sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
|
||||
],
|
||||
"version": "==2020.6.20"
|
||||
},
|
||||
"cffi": {
|
||||
"hashes": [
|
||||
"sha256:267adcf6e68d77ba154334a3e4fc921b8e63cbb38ca00d33d40655d4228502bc",
|
||||
"sha256:26f33e8f6a70c255767e3c3f957ccafc7f1f706b966e110b855bfe944511f1f9",
|
||||
"sha256:3cd2c044517f38d1b577f05927fb9729d3396f1d44d0c659a445599e79519792",
|
||||
"sha256:4a03416915b82b81af5502459a8a9dd62a3c299b295dcdf470877cb948d655f2",
|
||||
"sha256:4ce1e995aeecf7cc32380bc11598bfdfa017d592259d5da00fc7ded11e61d022",
|
||||
"sha256:4f53e4128c81ca3212ff4cf097c797ab44646a40b42ec02a891155cd7a2ba4d8",
|
||||
"sha256:4fa72a52a906425416f41738728268072d5acfd48cbe7796af07a923236bcf96",
|
||||
"sha256:66dd45eb9530e3dde8f7c009f84568bc7cac489b93d04ac86e3111fb46e470c2",
|
||||
"sha256:6923d077d9ae9e8bacbdb1c07ae78405a9306c8fd1af13bfa06ca891095eb995",
|
||||
"sha256:833401b15de1bb92791d7b6fb353d4af60dc688eaa521bd97203dcd2d124a7c1",
|
||||
"sha256:8416ed88ddc057bab0526d4e4e9f3660f614ac2394b5e019a628cdfff3733849",
|
||||
"sha256:892daa86384994fdf4856cb43c93f40cbe80f7f95bb5da94971b39c7f54b3a9c",
|
||||
"sha256:98be759efdb5e5fa161e46d404f4e0ce388e72fbf7d9baf010aff16689e22abe",
|
||||
"sha256:a6d28e7f14ecf3b2ad67c4f106841218c8ab12a0683b1528534a6c87d2307af3",
|
||||
"sha256:b1d6ebc891607e71fd9da71688fcf332a6630b7f5b7f5549e6e631821c0e5d90",
|
||||
"sha256:b2a2b0d276a136146e012154baefaea2758ef1f56ae9f4e01c612b0831e0bd2f",
|
||||
"sha256:b87dfa9f10a470eee7f24234a37d1d5f51e5f5fa9eeffda7c282e2b8f5162eb1",
|
||||
"sha256:bac0d6f7728a9cc3c1e06d4fcbac12aaa70e9379b3025b27ec1226f0e2d404cf",
|
||||
"sha256:c991112622baee0ae4d55c008380c32ecfd0ad417bcd0417ba432e6ba7328caa",
|
||||
"sha256:cda422d54ee7905bfc53ee6915ab68fe7b230cacf581110df4272ee10462aadc",
|
||||
"sha256:d3148b6ba3923c5850ea197a91a42683f946dba7e8eb82dfa211ab7e708de939",
|
||||
"sha256:d6033b4ffa34ef70f0b8086fd4c3df4bf801fee485a8a7d4519399818351aa8e",
|
||||
"sha256:ddff0b2bd7edcc8c82d1adde6dbbf5e60d57ce985402541cd2985c27f7bec2a0",
|
||||
"sha256:e23cb7f1d8e0f93addf0cae3c5b6f00324cccb4a7949ee558d7b6ca973ab8ae9",
|
||||
"sha256:effd2ba52cee4ceff1a77f20d2a9f9bf8d50353c854a282b8760ac15b9833168",
|
||||
"sha256:f90c2267101010de42f7273c94a1f026e56cbc043f9330acd8a80e64300aba33",
|
||||
"sha256:f960375e9823ae6a07072ff7f8a85954e5a6434f97869f50d0e41649a1c8144f",
|
||||
"sha256:fcf32bf76dc25e30ed793145a57426064520890d7c02866eb93d3e4abe516948"
|
||||
],
|
||||
"version": "==1.14.1"
|
||||
},
|
||||
"chardet": {
|
||||
"hashes": [
|
||||
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
|
||||
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
|
||||
],
|
||||
"version": "==3.0.4"
|
||||
},
|
||||
"cryptography": {
|
||||
"hashes": [
|
||||
"sha256:0c608ff4d4adad9e39b5057de43657515c7da1ccb1807c3a27d4cf31fc923b4b",
|
||||
"sha256:0cbfed8ea74631fe4de00630f4bb592dad564d57f73150d6f6796a24e76c76cd",
|
||||
"sha256:124af7255ffc8e964d9ff26971b3a6153e1a8a220b9a685dc407976ecb27a06a",
|
||||
"sha256:384d7c681b1ab904fff3400a6909261cae1d0939cc483a68bdedab282fb89a07",
|
||||
"sha256:45741f5499150593178fc98d2c1a9c6722df88b99c821ad6ae298eff0ba1ae71",
|
||||
"sha256:4b9303507254ccb1181d1803a2080a798910ba89b1a3c9f53639885c90f7a756",
|
||||
"sha256:4d355f2aee4a29063c10164b032d9fa8a82e2c30768737a2fd56d256146ad559",
|
||||
"sha256:51e40123083d2f946794f9fe4adeeee2922b581fa3602128ce85ff813d85b81f",
|
||||
"sha256:8713ddb888119b0d2a1462357d5946b8911be01ddbf31451e1d07eaa5077a261",
|
||||
"sha256:8e924dbc025206e97756e8903039662aa58aa9ba357d8e1d8fc29e3092322053",
|
||||
"sha256:8ecef21ac982aa78309bb6f092d1677812927e8b5ef204a10c326fc29f1367e2",
|
||||
"sha256:8ecf9400d0893836ff41b6f977a33972145a855b6efeb605b49ee273c5e6469f",
|
||||
"sha256:9367d00e14dee8d02134c6c9524bb4bd39d4c162456343d07191e2a0b5ec8b3b",
|
||||
"sha256:a09fd9c1cca9a46b6ad4bea0a1f86ab1de3c0c932364dbcf9a6c2a5eeb44fa77",
|
||||
"sha256:ab49edd5bea8d8b39a44b3db618e4783ef84c19c8b47286bf05dfdb3efb01c83",
|
||||
"sha256:bea0b0468f89cdea625bb3f692cd7a4222d80a6bdafd6fb923963f2b9da0e15f",
|
||||
"sha256:bec7568c6970b865f2bcebbe84d547c52bb2abadf74cefce396ba07571109c67",
|
||||
"sha256:ce82cc06588e5cbc2a7df3c8a9c778f2cb722f56835a23a68b5a7264726bb00c",
|
||||
"sha256:dea0ba7fe6f9461d244679efa968d215ea1f989b9c1957d7f10c21e5c7c09ad6"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==3.0"
|
||||
},
|
||||
"decorator": {
|
||||
"hashes": [
|
||||
"sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760",
|
||||
"sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"
|
||||
],
|
||||
"version": "==4.4.2"
|
||||
},
|
||||
"gmusicapi": {
|
||||
"hashes": [
|
||||
"sha256:b3548a8aa9ac834de05248f1ad7f32a11e96a3aeb265efa76f04796889d1b891"
|
||||
],
|
||||
"version": "==13.0.0"
|
||||
},
|
||||
"gpsoauth": {
|
||||
"hashes": [
|
||||
"sha256:1c3f45824d45ac3d06b9d9a0c0eccafe1052505d31ac9a698aef8b00fb0dfc37"
|
||||
],
|
||||
"version": "==0.4.1"
|
||||
},
|
||||
"httplib2": {
|
||||
"hashes": [
|
||||
"sha256:8af66c1c52c7ffe1aa5dc4bcd7c769885254b0756e6e69f953c7f0ab49a70ba3",
|
||||
"sha256:ca2914b015b6247791c4866782fa6042f495b94401a0f0bd3e1d6e0ba2236782"
|
||||
],
|
||||
"version": "==0.18.1"
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
|
||||
"sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.10"
|
||||
},
|
||||
"lxml": {
|
||||
"hashes": [
|
||||
"sha256:05a444b207901a68a6526948c7cc8f9fe6d6f24c70781488e32fd74ff5996e3f",
|
||||
"sha256:08fc93257dcfe9542c0a6883a25ba4971d78297f63d7a5a26ffa34861ca78730",
|
||||
"sha256:107781b213cf7201ec3806555657ccda67b1fccc4261fb889ef7fc56976db81f",
|
||||
"sha256:121b665b04083a1e85ff1f5243d4a93aa1aaba281bc12ea334d5a187278ceaf1",
|
||||
"sha256:1fa21263c3aba2b76fd7c45713d4428dbcc7644d73dcf0650e9d344e433741b3",
|
||||
"sha256:2b30aa2bcff8e958cd85d907d5109820b01ac511eae5b460803430a7404e34d7",
|
||||
"sha256:4b4a111bcf4b9c948e020fd207f915c24a6de3f1adc7682a2d92660eb4e84f1a",
|
||||
"sha256:5591c4164755778e29e69b86e425880f852464a21c7bb53c7ea453bbe2633bbe",
|
||||
"sha256:59daa84aef650b11bccd18f99f64bfe44b9f14a08a28259959d33676554065a1",
|
||||
"sha256:5a9c8d11aa2c8f8b6043d845927a51eb9102eb558e3f936df494e96393f5fd3e",
|
||||
"sha256:5dd20538a60c4cc9a077d3b715bb42307239fcd25ef1ca7286775f95e9e9a46d",
|
||||
"sha256:74f48ec98430e06c1fa8949b49ebdd8d27ceb9df8d3d1c92e1fdc2773f003f20",
|
||||
"sha256:786aad2aa20de3dbff21aab86b2fb6a7be68064cbbc0219bde414d3a30aa47ae",
|
||||
"sha256:7ad7906e098ccd30d8f7068030a0b16668ab8aa5cda6fcd5146d8d20cbaa71b5",
|
||||
"sha256:80a38b188d20c0524fe8959c8ce770a8fdf0e617c6912d23fc97c68301bb9aba",
|
||||
"sha256:8f0ec6b9b3832e0bd1d57af41f9238ea7709bbd7271f639024f2fc9d3bb01293",
|
||||
"sha256:92282c83547a9add85ad658143c76a64a8d339028926d7dc1998ca029c88ea6a",
|
||||
"sha256:94150231f1e90c9595ccc80d7d2006c61f90a5995db82bccbca7944fd457f0f6",
|
||||
"sha256:9dc9006dcc47e00a8a6a029eb035c8f696ad38e40a27d073a003d7d1443f5d88",
|
||||
"sha256:a76979f728dd845655026ab991df25d26379a1a8fc1e9e68e25c7eda43004bed",
|
||||
"sha256:aa8eba3db3d8761db161003e2d0586608092e217151d7458206e243be5a43843",
|
||||
"sha256:bea760a63ce9bba566c23f726d72b3c0250e2fa2569909e2d83cda1534c79443",
|
||||
"sha256:c3f511a3c58676147c277eff0224c061dd5a6a8e1373572ac817ac6324f1b1e0",
|
||||
"sha256:c9d317efde4bafbc1561509bfa8a23c5cab66c44d49ab5b63ff690f5159b2304",
|
||||
"sha256:cc411ad324a4486b142c41d9b2b6a722c534096963688d879ea6fa8a35028258",
|
||||
"sha256:cdc13a1682b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6",
|
||||
"sha256:cfd7c5dd3c35c19cec59c63df9571c67c6d6e5c92e0fe63517920e97f61106d1",
|
||||
"sha256:e1cacf4796b20865789083252186ce9dc6cc59eca0c2e79cca332bdff24ac481",
|
||||
"sha256:e70d4e467e243455492f5de463b72151cc400710ac03a0678206a5f27e79ddef",
|
||||
"sha256:ecc930ae559ea8a43377e8b60ca6f8d61ac532fc57efb915d899de4a67928efd",
|
||||
"sha256:f161af26f596131b63b236372e4ce40f3167c1b5b5d459b29d2514bd8c9dc9ee"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==4.5.2"
|
||||
},
|
||||
"mechanicalsoup": {
|
||||
"hashes": [
|
||||
"sha256:39a60627a97981869251837b8bd082485f2f681df8a3315836ffaa74663627bd",
|
||||
"sha256:cddd80b0975f4fdafd137a473df4697854e6be3e332a5fa3200e607ee20d5238"
|
||||
],
|
||||
"version": "==0.12.0"
|
||||
},
|
||||
"mopidy": {
|
||||
"hashes": [
|
||||
"sha256:479189b372aaf2a3b05cb969a1c153361398905b40bf2fcec7d4a277e031e115",
|
||||
"sha256:60b6f48e53069ac280e8271e89f50161d8a3e0c9bee83ac4d862174b3e38cedb"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.0.2"
|
||||
},
|
||||
"mopidy-gmusic": {
|
||||
"hashes": [
|
||||
"sha256:8376054f5a3a088e67bc654d2faf6189d373aa01a6a43287cea918ed68e5da93",
|
||||
"sha256:8e5a4012efdd9d43b602a6eaee29b1d0e9444790b60e9c700ba435eff644f541"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==4.0.0"
|
||||
},
|
||||
"mopidy-iris": {
|
||||
"hashes": [
|
||||
"sha256:0fdce088797e8d2dfec77380abc8b16d094387b56ef6f3528e122ddc80e3b112"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==3.50.0"
|
||||
},
|
||||
"mopidy-moped": {
|
||||
"hashes": [
|
||||
"sha256:15461174037d87af93dd59a236d4275c5abf71cea0670ffff24a7d0399a8a2e4"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.7.1"
|
||||
},
|
||||
"mopidy-pandora": {
|
||||
"hashes": [
|
||||
"sha256:470fb260b19fc4ee9b0c7e7bdc2f6cd1b8e6037eb2cec5395c24699162dbab5e",
|
||||
"sha256:6d9c84abe1aec1c54d436b164d0035e8b1757499ab7b6675e0eeba13d7cd5b00"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.4.2"
|
||||
},
|
||||
"mopidy-youtube": {
|
||||
"hashes": [
|
||||
"sha256:6880cc8086b9df1fe0c6ed8b9f77b37024143b138ea71f904b542dab62b7c3ae"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==3.1"
|
||||
},
|
||||
"mutagen": {
|
||||
"hashes": [
|
||||
"sha256:a8ba761d3bed7c1508ec4c3b5601262f84c0443956fe6d5579afde9fc40908af",
|
||||
"sha256:b2d56a0471eabcce0881974bed98dfc2135126ab01d253652b74b64df4da73e8"
|
||||
],
|
||||
"markers": "python_version >= '3.5' and python_version < '4'",
|
||||
"version": "==1.45.0"
|
||||
},
|
||||
"oauth2client": {
|
||||
"hashes": [
|
||||
"sha256:b8a81cc5d60e2d364f0b1b98f958dbd472887acaf1a5b05e21c28c31a2d6d3ac",
|
||||
"sha256:d486741e451287f69568a4d26d70d9acd73a2bbfa275746c535b4209891cccc6"
|
||||
],
|
||||
"version": "==4.1.3"
|
||||
},
|
||||
"proboscis": {
|
||||
"hashes": [
|
||||
"sha256:b822b243a7c82030fce0de97bdc432345941306d2c24ef227ca561dd019cd238"
|
||||
],
|
||||
"version": "==1.2.6.0"
|
||||
},
|
||||
"protobuf": {
|
||||
"hashes": [
|
||||
"sha256:304e08440c4a41a0f3592d2a38934aad6919d692bb0edfb355548786728f9a5e",
|
||||
"sha256:49ef8ab4c27812a89a76fa894fe7a08f42f2147078392c0dee51d4a444ef6df5",
|
||||
"sha256:50b5fee674878b14baea73b4568dc478c46a31dd50157a5b5d2f71138243b1a9",
|
||||
"sha256:5524c7020eb1fb7319472cb75c4c3206ef18b34d6034d2ee420a60f99cddeb07",
|
||||
"sha256:612bc97e42b22af10ba25e4140963fbaa4c5181487d163f4eb55b0b15b3dfcd2",
|
||||
"sha256:6f349adabf1c004aba53f7b4633459f8ca8a09654bf7e69b509c95a454755776",
|
||||
"sha256:85b94d2653b0fdf6d879e39d51018bf5ccd86c81c04e18a98e9888694b98226f",
|
||||
"sha256:87535dc2d2ef007b9d44e309d2b8ea27a03d2fa09556a72364d706fcb7090828",
|
||||
"sha256:a7ab28a8f1f043c58d157bceb64f80e4d2f7f1b934bc7ff5e7f7a55a337ea8b0",
|
||||
"sha256:a96f8fc625e9ff568838e556f6f6ae8eca8b4837cdfb3f90efcb7c00e342a2eb",
|
||||
"sha256:b5a114ea9b7fc90c2cc4867a866512672a47f66b154c6d7ee7e48ddb68b68122",
|
||||
"sha256:be04fe14ceed7f8641e30f36077c1a654ff6f17d0c7a5283b699d057d150d82a",
|
||||
"sha256:bff02030bab8b969f4de597543e55bd05e968567acb25c0a87495a31eb09e925",
|
||||
"sha256:c9ca9f76805e5a637605f171f6c4772fc4a81eced4e2f708f79c75166a2c99ea",
|
||||
"sha256:e1464a4a2cf12f58f662c8e6421772c07947266293fb701cb39cd9c1e183f63c",
|
||||
"sha256:e72736dd822748b0721f41f9aaaf6a5b6d5cfc78f6c8690263aef8bba4457f0e",
|
||||
"sha256:eafe9fa19fcefef424ee089fb01ac7177ff3691af7cc2ae8791ae523eb6ca907",
|
||||
"sha256:f4b73736108a416c76c17a8a09bc73af3d91edaa26c682aaa460ef91a47168d3"
|
||||
],
|
||||
"version": "==3.12.2"
|
||||
},
|
||||
"pyasn1": {
|
||||
"hashes": [
|
||||
"sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359",
|
||||
"sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576",
|
||||
"sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf",
|
||||
"sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7",
|
||||
"sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d",
|
||||
"sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00",
|
||||
"sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8",
|
||||
"sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86",
|
||||
"sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12",
|
||||
"sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776",
|
||||
"sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba",
|
||||
"sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2",
|
||||
"sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"
|
||||
],
|
||||
"version": "==0.4.8"
|
||||
},
|
||||
"pyasn1-modules": {
|
||||
"hashes": [
|
||||
"sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8",
|
||||
"sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199",
|
||||
"sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811",
|
||||
"sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed",
|
||||
"sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4",
|
||||
"sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e",
|
||||
"sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74",
|
||||
"sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb",
|
||||
"sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45",
|
||||
"sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd",
|
||||
"sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0",
|
||||
"sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d",
|
||||
"sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405"
|
||||
],
|
||||
"version": "==0.2.8"
|
||||
},
|
||||
"pycparser": {
|
||||
"hashes": [
|
||||
"sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0",
|
||||
"sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.20"
|
||||
},
|
||||
"pycryptodomex": {
|
||||
"hashes": [
|
||||
"sha256:06f5a458624c9b0e04c0086c7f84bcc578567dab0ddc816e0476b3057b18339f",
|
||||
"sha256:1714675fb4ac29a26ced38ca22eb8ffd923ac851b7a6140563863194d7158422",
|
||||
"sha256:17272d06e4b2f6455ee2cbe93e8eb50d9450a5dc6223d06862ee1ea5d1235861",
|
||||
"sha256:2199708ebeed4b82eb45b10e1754292677f5a0df7d627ee91ea01290b9bab7e6",
|
||||
"sha256:2275a663c9e744ee4eace816ef2d446b3060554c5773a92fbc79b05bf47debda",
|
||||
"sha256:2710fc8d83b3352b370db932b3710033b9d630b970ff5aaa3e7458b5336e3b32",
|
||||
"sha256:35b9c9177a9fe7288b19dd41554c9c8ca1063deb426dd5a02e7e2a7416b6bd11",
|
||||
"sha256:3caa32cf807422adf33c10c88c22e9e2e08b9d9d042f12e1e25fe23113dd618f",
|
||||
"sha256:48cc2cfc251f04a6142badeb666d1ff49ca6fdfc303fd72579f62b768aaa52b9",
|
||||
"sha256:4ae6379350a09339109e9b6f419bb2c3f03d3e441f4b0f5b8ca699d47cc9ff7e",
|
||||
"sha256:4e0b27697fa1621c6d3d3b4edeec723c2e841285de6a8d378c1962da77b349be",
|
||||
"sha256:58e19560814dabf5d788b95a13f6b98279cf41a49b1e49ee6cf6c79a57adb4c9",
|
||||
"sha256:8044eae59301dd392fbb4a7c5d64e1aea8ef0be2540549807ecbe703d6233d68",
|
||||
"sha256:89be1bf55e50116fe7e493a7c0c483099770dd7f81b87ac8d04a43b1a203e259",
|
||||
"sha256:8fcdda24dddf47f716400d54fc7f75cadaaba1dd47cc127e59d752c9c0fc3c48",
|
||||
"sha256:914fbb18e29c54585e6aa39d300385f90d0fa3b3cc02ed829b08f95c1acf60c2",
|
||||
"sha256:93a75d1acd54efed314b82c952b39eac96ce98d241ad7431547442e5c56138aa",
|
||||
"sha256:9fd758e5e2fe02d57860b85da34a1a1e7037155c4eadc2326fc7af02f9cae214",
|
||||
"sha256:a2bc4e1a2e6ca3a18b2e0be6131a23af76fecb37990c159df6edc7da6df913e3",
|
||||
"sha256:a2ee8ba99d33e1a434fcd27d7d0aa7964163efeee0730fe2efc9d60edae1fc71",
|
||||
"sha256:b2d756620078570d3f940c84bc94dd30aa362b795cce8b2723300a8800b87f1c",
|
||||
"sha256:c0d085c8187a1e4d3402f626c9e438b5861151ab132d8761d9c5ce6491a87761",
|
||||
"sha256:c990f2c58f7c67688e9e86e6557ed05952669ff6f1343e77b459007d85f7df00",
|
||||
"sha256:ccbbec59bf4b74226170c54476da5780c9176bae084878fc94d9a2c841218e34",
|
||||
"sha256:dc2bed32c7b138f1331794e454a953360c8cedf3ee62ae31f063822da6007489",
|
||||
"sha256:e070a1f91202ed34c396be5ea842b886f6fa2b90d2db437dc9fb35a26c80c060",
|
||||
"sha256:e42860fbe1292668b682f6dabd225fbe2a7a4fa1632f0c39881c019e93dea594",
|
||||
"sha256:e4e1c486bf226822c8dceac81d0ec59c0a2399dbd1b9e04f03c3efa3605db677",
|
||||
"sha256:ea4d4b58f9bc34e224ef4b4604a6be03d72ef1f8c486391f970205f6733dbc46",
|
||||
"sha256:f60b3484ce4be04f5da3777c51c5140d3fe21cdd6674f2b6568f41c8130bcdeb"
|
||||
],
|
||||
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==3.9.8"
|
||||
},
|
||||
"pydora": {
|
||||
"hashes": [
|
||||
"sha256:36f8de8de5a4f683f40247c360e02dbdd51a33540280b00915e9126f62ef5915",
|
||||
"sha256:762a283549f458dd65b3beb501818fea3f083221259ce8bcc023d88f24d09595",
|
||||
"sha256:de797db5d58401b61828b41d2ddd53e514375c5902459e155155b6465e3c89e1",
|
||||
"sha256:edccfc5ca8236e1157ae15f2be4e6a604f8ae3085f03c363b25464025915c1e8"
|
||||
],
|
||||
"version": "==1.13.0"
|
||||
},
|
||||
"pykka": {
|
||||
"hashes": [
|
||||
"sha256:895cc2ed8779b65dd14a90ba3f4b8cb0f7904c7bf0710fe96a923019f8e82a39",
|
||||
"sha256:ebc39fc9994b71250dbd21f05217dd3f188bcdc3117ce829fd3777335f0f0702"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==2.0.2"
|
||||
},
|
||||
"pyopenssl": {
|
||||
"hashes": [
|
||||
"sha256:621880965a720b8ece2f1b2f54ea2071966ab00e2970ad2ce11d596102063504",
|
||||
"sha256:9a24494b2602aaf402be5c9e30a0b82d4a5c67528fe8fb475e3f3bc00dd69507"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==19.1.0"
|
||||
},
|
||||
"python-dateutil": {
|
||||
"hashes": [
|
||||
"sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
|
||||
"sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==2.8.1"
|
||||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
|
||||
"sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
|
||||
"version": "==2.24.0"
|
||||
},
|
||||
"rsa": {
|
||||
"hashes": [
|
||||
"sha256:109ea5a66744dd859bf16fe904b8d8b627adafb9408753161e766a92e7d681fa",
|
||||
"sha256:6166864e23d6b5195a5cfed6cd9fed0fe774e226d8f854fcb23b7bbef0350233"
|
||||
],
|
||||
"markers": "python_version >= '3.5' and python_version < '4'",
|
||||
"version": "==4.6"
|
||||
},
|
||||
"six": {
|
||||
"hashes": [
|
||||
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
|
||||
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
|
||||
"version": "==1.15.0"
|
||||
},
|
||||
"soupsieve": {
|
||||
"hashes": [
|
||||
"sha256:1634eea42ab371d3d346309b93df7870a88610f0725d47528be902a0d95ecc55",
|
||||
"sha256:a59dc181727e95d25f781f0eb4fd1825ff45590ec8ff49eadfd7f1a537cc0232"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==2.0.1"
|
||||
},
|
||||
"tornado": {
|
||||
"hashes": [
|
||||
"sha256:0fe2d45ba43b00a41cd73f8be321a44936dc1aba233dee979f17a042b83eb6dc",
|
||||
"sha256:22aed82c2ea340c3771e3babc5ef220272f6fd06b5108a53b4976d0d722bcd52",
|
||||
"sha256:2c027eb2a393d964b22b5c154d1a23a5f8727db6fda837118a776b29e2b8ebc6",
|
||||
"sha256:5217e601700f24e966ddab689f90b7ea4bd91ff3357c3600fa1045e26d68e55d",
|
||||
"sha256:5618f72e947533832cbc3dec54e1dffc1747a5cb17d1fd91577ed14fa0dc081b",
|
||||
"sha256:5f6a07e62e799be5d2330e68d808c8ac41d4a259b9cea61da4101b83cb5dc673",
|
||||
"sha256:c58d56003daf1b616336781b26d184023ea4af13ae143d9dda65e31e534940b9",
|
||||
"sha256:c952975c8ba74f546ae6de2e226ab3cc3cc11ae47baf607459a6728585bb542a",
|
||||
"sha256:c98232a3ac391f5faea6821b53db8db461157baa788f5d6222a193e9456e1740"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==6.0.4"
|
||||
},
|
||||
"urllib3": {
|
||||
"hashes": [
|
||||
"sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a",
|
||||
"sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
|
||||
"version": "==1.25.10"
|
||||
},
|
||||
"validictory": {
|
||||
"hashes": [
|
||||
"sha256:3a87b84658592f75f37d6bab77ac223774c9989dc7349c8aad19a424770835ba",
|
||||
"sha256:eb7ec9d811f3cf062fb943ce369a9b34a9f291037217ecf5a40a5f2421d29c0a"
|
||||
],
|
||||
"version": "==1.1.2"
|
||||
},
|
||||
"youtube-dl": {
|
||||
"hashes": [
|
||||
"sha256:4af90dac41dba8b2c8bdce3903177c4ecbc27d75e03a3f08070f9d9decbae829",
|
||||
"sha256:c1bf9a20b0bc8cf6489930b96b9830156e2a7e865fc96ef628e97fa37aad8de9"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2020.7.28"
|
||||
}
|
||||
},
|
||||
"develop": {}
|
||||
}
|
||||
221
mopidy/docker/README.md
Executable file
221
mopidy/docker/README.md
Executable file
@@ -0,0 +1,221 @@
|
||||
[](http://microbadger.com/images/wernight/mopidy "Get your own image badge on microbadger.com")
|
||||
|
||||
What is Mopidy?
|
||||
===============
|
||||
|
||||
[**Mopidy**](https://www.mopidy.com/) is a music server with support for [MPD clients](https://docs.mopidy.com/en/latest/clients/mpd/) and [HTTP clients](https://docs.mopidy.com/en/latest/ext/web/#ext-web).
|
||||
|
||||
Features of this image
|
||||
----------------------
|
||||
|
||||
* Follows [official installation](https://docs.mopidy.com/en/latest/installation/debian/) on top of [Debian](https://registry.hub.docker.com/_/debian/).
|
||||
* With backend extensions for:
|
||||
* [Mopidy-Spotify](https://docs.mopidy.com/en/latest/ext/backends/#mopidy-spotify) for **[Spotify](https://www.spotify.com/us/)** (Premium)
|
||||
* [Mopidy-GMusic](https://docs.mopidy.com/en/latest/ext/backends/#mopidy-gmusic) for **[Google Play Music](https://play.google.com/music/listen)**
|
||||
* [Mopidy-SoundClound](https://docs.mopidy.com/en/latest/ext/backends/#mopidy-soundcloud) for **[SoundCloud](https://soundcloud.com/stream)**
|
||||
* [Mopidy-Pandora](https://github.com/rectalogic/mopidy-pandora) for **[Pandora](https://www.pandora.com/)**
|
||||
* [Mopidy-YouTube](https://docs.mopidy.com/en/latest/ext/backends/#mopidy-youtube) for **[YouTube](https://www.youtube.com)**
|
||||
* With [Mopidy-Moped](https://docs.mopidy.com/en/latest/ext/web/#mopidy-moped) web extension.
|
||||
* Can run as any user and runs as UID/GID `84044` user inside the container by default (for security reasons).
|
||||
|
||||
You may install additional [backend extensions](https://docs.mopidy.com/en/latest/ext/backends/).
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
### Playing sound from the container
|
||||
|
||||
There are various ways to have the audio from Mopidy running in your container
|
||||
to play on your system's audio output. Here are various ways, try them and find
|
||||
which one works for you.
|
||||
|
||||
#### /dev/snd
|
||||
|
||||
Simplest is by adding docker argument: `--device /dev/snd`. Try via:
|
||||
|
||||
$ docker run --rm \
|
||||
--user root --device /dev/snd \
|
||||
wernight/mopidy \
|
||||
gst-launch-1.0 audiotestsrc ! audioresample ! autoaudiosink
|
||||
|
||||
#### PulseAudio native
|
||||
|
||||
Mount the current user's pulse directory to the pulseuadio user (UID `105`).
|
||||
Based on https://github.com/TheBiggerGuy/docker-pulseaudio-example.
|
||||
|
||||
$ docker run --rm \
|
||||
--user $UID:$GID -v /run/user/$UID/pulse:/run/user/105/pulse \
|
||||
wernight/mopidy \
|
||||
gst-launch-1.0 audiotestsrc ! audioresample ! autoaudiosink
|
||||
|
||||
#### PulseAudio over network
|
||||
|
||||
First to make [audio work from within a Docker container](http://stackoverflow.com/q/28985714/167897),
|
||||
you should enable [PulseAudio over network](https://wiki.freedesktop.org/www/Software/PulseAudio/Documentation/User/Network/);
|
||||
so if you have X11 you may for example do:
|
||||
|
||||
1. Install [PulseAudio Preferences](http://freedesktop.org/software/pulseaudio/paprefs/). 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
|
||||
|
||||
Note: 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`.
|
||||
|
||||
Now set the environment variables:
|
||||
|
||||
* `PULSE_SERVER` - PulseAudio server socket.
|
||||
* `PULSE_COOKIE_DATA` - Hexadecimal encoded PulseAudio cookie commonly at `~/.config/pulse/cookie`.
|
||||
|
||||
Example to check it works:
|
||||
|
||||
$ docker run --rm \
|
||||
-e "PULSE_SERVER=tcp:$(hostname -i):4713" \
|
||||
-e "PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*')" \
|
||||
wernight/mopidy \
|
||||
gst-launch-1.0 audiotestsrc ! audioresample ! autoaudiosink
|
||||
|
||||
### General usage
|
||||
|
||||
$ docker run -d \
|
||||
$PUT_HERE_EXRA_DOCKER_ARGUMENTS_FOR_AUDIO_TO_WORK \
|
||||
-v "$PWD/media:/var/lib/mopidy/media:ro" \
|
||||
-v "$PWD/local:/var/lib/mopidy/local" \
|
||||
-p 6600:6600 -p 6680:6680 \
|
||||
--user $UID:$GID \
|
||||
wernight/mopidy \
|
||||
mopidy \
|
||||
-o spotify/username=USERNAME -o spotify/password=PASSWORD \
|
||||
-o gmusic/username=USERNAME -o gmusic/password=PASSWORD \
|
||||
-o soundcloud/auth_token=TOKEN
|
||||
|
||||
Most arguments are optional (see some examples below):
|
||||
|
||||
* Docker arguments:
|
||||
* `$PUT_HERE_EXRA_DOCKER_ARGUMENTS_FOR_AUDIO_TO_WORK` should be replaced
|
||||
with some arguments that work to play audio from within the docker
|
||||
container as tested above.
|
||||
* `-v ...:/var/lib/mopidy/media:ro` - (optional) Path to directory with local media files.
|
||||
* `-v ...:/var/lib/mopidy/local` - (optional) Path to directory to store local metadata such as libraries and playlists in.
|
||||
* `-p 6600:6600` - (optional) Exposes MPD server (if you use for example ncmpcpp client).
|
||||
* `-p 6680:6680` - (optional) Exposes HTTP server (if you use your browser as client).
|
||||
* `-p 5555:5555/udp` - (optional) Exposes [UDP streaming for FIFE sink](https://github.com/mopidy/mopidy/issues/775) (e.g. for visualizers).
|
||||
* `--user $UID:$GID` - (optional) You may run as any UID/GID, and by default it'll run as UID/GID `84044` (`mopidy:audio` from within the container).
|
||||
The main restriction is if you want to read local media files: That the user (UID) you run as should have read access to these files.
|
||||
Similar for other mounts. If you have issues, try first as `--user root`.
|
||||
* Mopidy arguments (see [mopidy's command](https://docs.mopidy.com/en/latest/command/) for possible additional options),
|
||||
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](https://security.google.com/settings/security/apppasswords)).
|
||||
* For *SoundCloud*, just [get a token](https://www.mopidy.com/authenticate/) after registering.
|
||||
|
||||
NOTE: Any user on your system may run `ps aux` and see the command-line you're running, so your passwords may be exposed.
|
||||
A safer option if it's a concern, is using putting these passwords in a Mopidy configuration file based on [mopidy.conf](mopidy.conf):
|
||||
|
||||
[core]
|
||||
data_dir = /var/lib/mopidy
|
||||
|
||||
[local]
|
||||
media_dir = /var/lib/mopidy/media
|
||||
|
||||
[audio]
|
||||
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink host=0.0.0.0 port=5555
|
||||
|
||||
[m3u]
|
||||
playlists_dir = /var/lib/mopidy/playlists
|
||||
|
||||
[http]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[mpd]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[spotify]
|
||||
username=USERNAME
|
||||
password=PASSWORD
|
||||
|
||||
[gmusic]
|
||||
username=USERNAME
|
||||
password=PASSWORD
|
||||
|
||||
[soundcloud]
|
||||
auth_token=TOKEN
|
||||
|
||||
Then run it:
|
||||
|
||||
$ docker run -d \
|
||||
$PUT_HERE_EXRA_DOCKER_ARGUMENTS_FOR_AUDIO_TO_WORK \
|
||||
-v "$PWD/media:/var/lib/mopidy/media:ro" \
|
||||
-v "$PWD/local:/var/lib/mopidy/local" \
|
||||
-v "$PWD/mopidy.conf:/config/mopidy.conf" \
|
||||
-p 6600:6600 -p 6680:6680 \
|
||||
--user $UID:$GID \
|
||||
wernight/mopidy
|
||||
|
||||
|
||||
##### Example using HTTP client to stream local files
|
||||
|
||||
1. Give read access to your audio files to user **84044**, group **84044**, or all users (e.g., `$ chgrp -R 84044 $PWD/media && chmod -R g+rX $PWD/media`).
|
||||
2. Index local files:
|
||||
|
||||
$ docker run --rm \
|
||||
--device /dev/snd \
|
||||
-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](https://docs.mopidy.com/en/latest/clients/mpd/#ncmpcpp) MPD console client
|
||||
|
||||
$ docker run --name mopidy -d \
|
||||
-v /run/user/$UID/pulse:/run/user/105/pulse \
|
||||
wernight/mopidy
|
||||
$ docker run --rm -it --net container:mopidy wernight/ncmpcpp ncmpcpp
|
||||
|
||||
Alternatively if you don't need visualizers you can do:
|
||||
|
||||
$ docker run --rm -it --link mopidy:mopidy wernight/ncmpcpp ncmpcpp --host mopidy
|
||||
|
||||
|
||||
### Feedbacks
|
||||
|
||||
Having more issues? [Report a bug on GitHub](https://github.com/wernight/docker-mopidy/issues). Also if you need some additional extensions/plugins that aren't already installed (please explain why).
|
||||
|
||||
|
||||
### Alsa Audio
|
||||
|
||||
For non debian distros. The gid for audio group in /etc/group must be 29 to match debians default as `audio:x:29:<your user outside of docker>` this is to match the user id inside the docker container. You'll also need to add the `output = alsasink` config line under the audio section in your `mopidy.conf`.
|
||||
|
||||
```
|
||||
$ docker run -d -rm \
|
||||
--device /dev/snd \
|
||||
--name mopidy \
|
||||
--ipc=host \
|
||||
--privileged \
|
||||
-v $HOME/.config/mopidy:/var/lib/mopidy/.config/mopidy/ \
|
||||
-p 6600:6600/tcp -p 6680:6680/tcp -p 5555:5555/udp \
|
||||
mopidy
|
||||
```
|
||||
|
||||
9
mopidy/docker/entrypoint.sh
Executable file
9
mopidy/docker/entrypoint.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -z "$PULSE_COOKIE_DATA" ]
|
||||
then
|
||||
echo -ne $(echo $PULSE_COOKIE_DATA | sed -e 's/../\\x&/g') >$HOME/pulse.cookie
|
||||
export PULSE_COOKIE=$HOME/pulse.cookie
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
17
mopidy/docker/mopidy.conf
Executable file
17
mopidy/docker/mopidy.conf
Executable file
@@ -0,0 +1,17 @@
|
||||
[core]
|
||||
data_dir = /var/lib/mopidy
|
||||
|
||||
[local]
|
||||
media_dir = /var/lib/mopidy/media
|
||||
|
||||
[audio]
|
||||
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink host=0.0.0.0 port=5555
|
||||
|
||||
[m3u]
|
||||
playlists_dir = /var/lib/mopidy/playlists
|
||||
|
||||
[http]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[mpd]
|
||||
hostname = 0.0.0.0
|
||||
39
mopidy/livingroom/mopidy.conf
Executable file
39
mopidy/livingroom/mopidy.conf
Executable file
@@ -0,0 +1,39 @@
|
||||
[core]
|
||||
data_dir = /var/lib/mopidy
|
||||
|
||||
[mpd]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[http]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[iris]
|
||||
country = CH
|
||||
locale = de_CH
|
||||
|
||||
[local]
|
||||
media_dir = /var/lib/mopidy/media
|
||||
|
||||
[audio]
|
||||
output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/run/snapserver/livingroom_fifo
|
||||
|
||||
[spotify]
|
||||
enabled = false
|
||||
|
||||
[soundcloud]
|
||||
enabled = false
|
||||
|
||||
[file]
|
||||
enabled = false
|
||||
|
||||
[gmusic]
|
||||
enabled = false
|
||||
|
||||
[moped]
|
||||
enabled = false
|
||||
|
||||
[pandora]
|
||||
enabled = false
|
||||
|
||||
[youtube]
|
||||
enabled = false
|
||||
45
mopidy/office/mopidy.conf
Executable file
45
mopidy/office/mopidy.conf
Executable file
@@ -0,0 +1,45 @@
|
||||
[core]
|
||||
data_dir = /var/lib/mopidy
|
||||
|
||||
[mpd]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[http]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[iris]
|
||||
country = CH
|
||||
locale = de_CH
|
||||
|
||||
[local]
|
||||
media_dir = /var/lib/mopidy/media
|
||||
|
||||
[audio]
|
||||
output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/run/snapserver/office_fifo
|
||||
|
||||
[spotify]
|
||||
enabled = false
|
||||
|
||||
[soundcloud]
|
||||
enabled = false
|
||||
|
||||
[file]
|
||||
enabled = false
|
||||
|
||||
[gmusic]
|
||||
enabled = false
|
||||
|
||||
[moped]
|
||||
enabled = false
|
||||
|
||||
[pandora]
|
||||
enabled = false
|
||||
|
||||
[youtube]
|
||||
enabled = false
|
||||
|
||||
# [spotify]
|
||||
# username = spotify_username
|
||||
# password = spotify_password
|
||||
# client_id = spotify_client_id
|
||||
# client_secret = spotify_client_secret
|
||||
36
mopidy/tts/mopidy.conf
Executable file
36
mopidy/tts/mopidy.conf
Executable file
@@ -0,0 +1,36 @@
|
||||
|
||||
[core]
|
||||
data_dir = /var/lib/mopidy
|
||||
|
||||
[mpd]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[http]
|
||||
hostname = 0.0.0.0
|
||||
|
||||
[audio]
|
||||
output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/run/snapserver/tts_fifo
|
||||
|
||||
[spotify]
|
||||
enabled = false
|
||||
|
||||
[soundcloud]
|
||||
enabled = false
|
||||
|
||||
[file]
|
||||
enabled = false
|
||||
|
||||
[local]
|
||||
enabled = false
|
||||
|
||||
[gmusic]
|
||||
enabled = false
|
||||
|
||||
[moped]
|
||||
enabled = false
|
||||
|
||||
[pandora]
|
||||
enabled = false
|
||||
|
||||
[youtube]
|
||||
enabled = false
|
||||
Reference in New Issue
Block a user