{"id":18878290,"url":"https://github.com/uriel1998/docker-music-streaming","last_synced_at":"2026-02-13T04:05:29.772Z","repository":{"id":147177207,"uuid":"320135635","full_name":"uriel1998/docker-music-streaming","owner":"uriel1998","description":"Docker setup for whole house and remote streaming for personal use","archived":false,"fork":false,"pushed_at":"2022-10-13T08:14:19.000Z","size":16973,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-08T06:34:22.536Z","etag":null,"topics":["docker","docker-compose","mpd","music","snapcast"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uriel1998.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-10T02:23:28.000Z","updated_at":"2024-01-12T11:28:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"d888d41f-751a-47cd-8d09-320fbfc50b51","html_url":"https://github.com/uriel1998/docker-music-streaming","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"rawdlite/docker-rompr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriel1998%2Fdocker-music-streaming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriel1998%2Fdocker-music-streaming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriel1998%2Fdocker-music-streaming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uriel1998%2Fdocker-music-streaming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uriel1998","download_url":"https://codeload.github.com/uriel1998/docker-music-streaming/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231936576,"owners_count":18448609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","mpd","music","snapcast"],"created_at":"2024-11-08T06:25:43.308Z","updated_at":"2026-02-13T04:05:24.735Z","avatar_url":"https://github.com/uriel1998.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-music-streaming\n\n\nI've written a couple of guides on how to get whole-house audio and streaming \nby using `mpd`, `snapcast`, and other FOSS projects. I've previously described \nit as a [weekend project](https://ideatrash.net/2021/08/further-adventures-in-whole-house-audio.html), but by using Docker, it's a trivial setup.\n\nIncluded are:\n\n- [mpd](https://www.musicpd.org/) for music playing and remote streaming\n- [snapcast](https://github.com/badaix/snapcast) (and snapweb) for whole-house streaming\n- [mpdscribble](https://www.musicpd.org/clients/mpdscribble/) for scrobbling to last.fm / libre.fm\n- [minidlna](https://sourceforge.net/p/minidlna/wiki/Home/) for upnp serving\n- [RompR web interface](https://fatg3erman.github.io/RompR/) (for controlling the whole thing)\n- Nginx proxy fragment\n- music directory and configurations accessible from host (at least at spinup)\n\n\n## Contents\n 1. [About](#1-about)\n 2. [License](#2-license)\n 3. [Prerequisites](#3-prerequisites)\n 4. [Installation](#4-Installation)\n 5. [Notes](#5-Notes)\n\n***\n\n## 1. About\n\nThis is intended to be dropped behind a reverse proxy. Setting up docker, \ndocker-compose, and the reverse proxy is beyond the scope of this document. \nLikewise, handling SSL certificates should be done at the level of the host.\n\nMany, *many* thanks to [Toward Data Science](https://towardsdatascience.com/run-multiple-services-in-single-docker-container-using-supervisor-b2ed53e3d1c0) whose post pointed me to how to get several things running \ntogether.\n\n## 2. License\n\nThis project is licensed under the Apache License. For the full license, see `LICENSE`.\n\n## 3. Prerequisites\n\nDocker and docker-compose\n\nIf you have `minidlna` running on the host, you cannot *also* have it running \nin the container due to port conflicts.\n\n## 4. Installation\n\n1. Clone or download this repository.\n\n2. Change into the directory you put these files into. Create a symbolic link to \nyour already existing music directory (no need to move it!) by typing `ln -s /path/to/mymusic ./music` (substituting `/path/to/mymusic` with the path to your music collection.)\n\n3. *Optional* Add your last.fm / libre.fm login for `mpdscribble` in \n`config/mpdscribble.conf`.\n\n4. *Optional* If you wish to change the password for MPD, it's in `config/mpd.conf`. By default, \nit is set to `mycomplicatedpassword`. If you change the password, you will also \nhave to change it for `mpdscribble` and each of the `run-*` scripts in  `./build`. \n\n5. Bring up the container with `docker-compose up -d --build`. Get a drink or \nstretch or something, it'll take a while. \n\n6. Point your browser at `http://localhost:8880` **Note that it is http, not httpS.** You should see RompR's main interface. Click the gear icon, then click `Edit Players`. \n\n![Edit Players](https://github.com/uriel1998/docker-music-streaming/blob/master/setup_1.png?raw=true \"Click the gear, then edit player\")\n\nThen add the password - by default, `mycomplicatedpassword` - to the password field.\n\n![Add Password](https://github.com/uriel1998/docker-music-streaming/blob/master/setup_2.png?raw=true \"Add password\")\n\nThen click the blinking \"Update Music Collection Now\" button. Stretch again. Avoid \nrepetitive stress injuries. Also, if you have a large collection, this may take a \n**while**.\n\n7. At this point you should have a fully-functional installation. You get to \nRompR by pointing your browser at `http://localhost:8880`. You can access the stream at \n`http://localhost:8881` with pretty much anything that can handle MP3s. Snapcast should \nauto-discover using avahi, and you can access the Snapweb interface at `http://localhost:1780`.\n\n8. *Optional-ish* Change the relevant proxy port for the reverse proxy to 8880, and for the stream to 8881. The specifics  will vary depending on what your reverse proxy is. For \nexample, if you're using nginx, the relevant *portion* of the config should look something like this:\n\n```\nserver {\n    server_name example.com;\n    location /mpd.mp3 {\n        proxy_pass http://localhost:8881;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header Host $host;     \n    }\n    location / {\n        proxy_pass http://192.168.1.101:8880;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header Host $host;\n    }\n}\n```\n\n## 5. Notes\n\n* There are several d-bus mounts that are required for avahi to talk to the \nrest of the network outside the Docker container. [This is pretty much the only \nway](https://stackoverflow.com/questions/30646943/how-to-avahi-browse-from-a-docker-container) (without installing additional software outside the container) to get avahi \nto work.\n\n* This repository contains a prebuilt version of [snapweb](https://github.com/badaix/snapweb),\nbecause the Debian package apparently does *not* contain it by default, and making it from source requires TypeScript, which requires NPM, and man, these images are *already* too \nbig... but if you don't trust my build, or want to substitute one of your own, \nliterally just replace `build/snapweb` with what you build yourself.\n\n* You *may* need to bring the container down and then back up to get it to \nrecognize changes to the music directory on the host.\n\n* This Docker image is *UNOPTIMIZED*. I'm sure it pulls in *way* more than is \nactually needed, but my focus here was getting a MVP that worked essentially out \nof the box.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furiel1998%2Fdocker-music-streaming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furiel1998%2Fdocker-music-streaming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furiel1998%2Fdocker-music-streaming/lists"}