Sonos Setup
Play your Vynl library on existing Sonos speakers. Auto-discovers all rooms on your LAN, supports groups.
What it does
Vynl turns each Sonos speaker (and group) into an output target. Pick a room from the player's output selector, and the audio streams from Vynl to the speaker over your LAN.
Quick start
1. Make sure Vynl is on the same LAN as your speakers
Sonos uses SSDP (UDP multicast) for discovery, which doesn't traverse Docker bridge networks. Either:
- Run Vynl with
network_mode: host(recommended for production NAS deployments), or - Run Vynl directly on the host (no Docker)
In docker-compose.yml:
services:
vynl:
network_mode: host # required for Sonos
# ports: section becomes redundant; remove it
2. Set NEXT_PUBLIC_VYNL_HOST to your LAN IP
Sonos speakers fetch audio from Vynl via HTTP. They need a LAN-reachable URL — Tailscale hostnames, mDNS names, and other non-routable addresses do not work.
environment:
- NEXT_PUBLIC_VYNL_HOST=http://192.168.1.50:3101
Pin your Vynl host's IP via DHCP reservation so this URL doesn't break when your router hands out a new address.
3. Restart and discover
docker compose up -d
Open Vynl → Settings → Sonos → Scan for speakers. Discovered rooms appear with their current state (playing / idle).
4. Play
Click the output selector in the player bar → pick a Sonos room → press play. Audio streams from Vynl to the speaker.
Groups
Sonos groups (e.g. "Whole Home") appear as single output targets. Vynl plays to the group coordinator; the coordinator distributes audio to the grouped speakers. Group/ungroup in the Sonos app — Vynl reflects the current grouping on each scan.
Troubleshooting
No rooms appear
- Confirm Vynl is on the same LAN as the speakers (
docker exec vynl ip addr— interface should be on your LAN subnet) - Confirm
network_mode: hostis set in docker-compose - Check for firewall rules blocking UDP 1900 (SSDP) on the Vynl host
Rooms appear but pressing play does nothing (UPnP 701 error)
The speaker can't reach NEXT_PUBLIC_VYNL_HOST. From your phone (on the same WiFi), open that URL in a browser — it should load Vynl. If it doesn't, the URL or LAN IP is wrong.
Audio cuts out mid-track
Usually a LAN issue, not Vynl. Common causes:
- WiFi 2.4GHz congestion — move speakers to 5GHz where possible
- WiFi router QoS dropping audio packets — disable / tune
- Vynl host CPU pegged at 100% — check
docker stats
Speaker shows "Vynl" as the source but pauses immediately
The speaker fetched the metadata but couldn't fetch the audio. Almost always a LAN-reachability issue with NEXT_PUBLIC_VYNL_HOST — see the UPnP 701 case above.
What's NOT supported
- AirPlay 2 to non-Sonos speakers (planned — see GitHub Discussions)
- Sonos Voice Control integration
- Sonos S1 generation speakers (only S2 protocol)
Related
- Configuration —
NEXT_PUBLIC_VYNL_HOSTand other env vars - Tailscale Setup — accessing Vynl remotely while Sonos stays on-LAN
