Install mvbar on your own hardware, connect your music folders, and listen from the web player or companion apps. Choose the setup that fits your home.
YOUR MEDIAMusic · podcasts · audiobooks
→
mvbar SERVERWindows · Linux · Docker
→
YOUR PLAYERSWeb · Android · TV · Wear OS
01
Install the server
Choose one server method. You do not need all three.
Windows
Download the Windows x64 standalone executable and open it. The launcher prepares the local server and opens mvbar.
On Debian or Ubuntu x64 or ARM64 (including Raspberry Pi OS 64-bit), open a terminal as your regular user and run:
curl -fsSL https://mvbar.co.uk/install.sh | sh
The installer detects your architecture, downloads the matching latest stable release, verifies its SHA-256 checksum, and opens the setup wizard to configure your libraries and install an automatically starting service. It requests sudo for system dependencies. Existing configuration and data are retained. Internet access and systemd are required.
View installer script. For a development build or manual installation, download and rename the selected executable to mvbar, then run:
For listening away from home, expose mvbar through your own secure HTTPS address or VPN. Do not expose unrelated internal services or database ports to the internet.
If you already use an external reverse proxy, mvbar supports running behind that proxy and secure cookies.
05
Backups & updates
mvbar can create portable .mvbar-backup archives from Admin → Settings. Database-only backups are the default and can move between Docker, Windows and Linux installations.
Source media files and deployment secrets are intentionally not included, so keep those protected separately.
Official plugins are installed from Admin → Plugins. mvbar validates package identity and checksum and shows requested permissions before a plugin is enabled.
The public plugin catalogue on the homepage is loaded directly from the published plugin registry.
Both examples run mvbar and its internal services in one container. Use one Compose file and a matching .env in the same directory. Basic uses port 8080; advanced uses 18080.
Basic: get your library running
Download basic Compose and basic environment settings. Rename the environment file to .env, set your media paths, administrator login and two separately generated secrets (openssl rand -hex 32). Then run:
docker compose config --quiet
docker compose up -d
Point your existing HTTPS proxy at port 18080. Set APP_DOMAIN to your public HTTPS URL and configure trusted proxy headers with TRUST_PROXY and COOKIE_SECURE. For direct HTTP access, set TRUST_PROXY=false. Port 18443 is optional for container-managed HTTPS; publishing it alone does not configure a certificate.
For an existing Docker proxy network, uncomment both networks blocks and replace prodNet with your network name. An external network must already exist. PostgreSQL needs no host port; the commented mapping is bound to localhost for optional administration.
Integrations and library processing
Last.fm: configure the API key and secret. Google: configure the client ID, client secret and registered callback URL.
Web push: configure the VAPID public/private keys and subject before enabling it; remote clients need HTTPS.
Missing Music: install and enable the plugin in Admin → Plugins. Set your provider credentials if needed. The staging volume is writable; to use a host folder, replace its mount with /srv/deemix:/data/deezer-staging:rw.
Scanning: set RESCAN_INTERVAL=10m for your example’s schedule. Tempo detection, country backfill and language backfill can be enabled independently. Use a MusicBrainz user agent identifying your installation and contact.
LDAP / Active Directory
Replace the example directory URL, base DN, bind DN, directory ID and group DNs in the advanced environment file. Set the bind password, place your CA certificate at ./certs/ldap-ca.pem, and uncomment its read-only mount. LDAP_CA_FILE=/run/certs/ldap-ca.pem is the path inside the container. Then set LDAP_ENABLED=true. Your directory hostname must resolve and be reachable from the container.
Development channel and updates
Use basic Development or advanced Development for :dev. Pass the chosen filename with -f for every Compose command. Back up before updating and keep your existing project name and volume names when adapting an existing installation.
Named volumes preserve application data across container recreation. Keep your .env private and back up secrets separately. Avoid docker compose down -v when keeping your data.
READY?
Start with the server.
Once your server can see your library, every other mvbar client has somewhere to connect.