Bridge Plexamp to DLNA/UPnP renderers on your local network.
Plexamp cannot natively cast to DLNA/UPnP targets. SonoPlay exposes your DLNA devices as Plex players so they appear in Plexamp's cast list.
Data path:
Plexamp -> SonoPlay -> DLNA/UPnP speaker
- DLNA/UPnP device discovery
- Plex device registration via Plex.tv link flow
- Playback command translation (play, pause, seek, queue navigation)
- Virtual device groups for multi-room playback
- Web UI for linking and device management
- Docker-first deployment
docker run -d \
--name sonoplay \
--network host \
--restart unless-stopped \
-v /path/to/config:/config \
ghcr.io/aquantumofdonuts/sonoplay:latestgit clone --branch stable https://github.com/aquantumofdonuts/sonoplay.git
cd sonoplay
docker compose up -d- Open http://your-server:32488
- Link one or more devices to Plex
- In Plexamp, open cast targets and select the linked device
Most installs work with defaults. To customize:
cp .env.example .envCommon settings:
- HTTP_PORT: Web UI/API port (default 32488)
- HOST_IP: Explicit host IP (auto-detected when unset)
- CLIENT_PROFILE: Plex transcoding profile
Note: docker-compose.yaml uses env_file.required and needs Docker Compose v2.17+.
- Docker (preferred) or Python 3.11+
- Plex Media Server on the same network
- Plex Pass for Plexamp
- DLNA/UPnP MediaRenderer-compatible targets
Any standards-compliant DLNA/UPnP renderer, including common Sonos, Yamaha, Denon/Marantz, and smart TV implementations.
- API: docs/API.md
- Architecture: docs/ARCHITECTURE.md
- Detailed docs: docs/README-detailed.md
- Release notes: docs/release_notes/
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.pyRun tests:
python3 -m pytest tests/ -qIssues and PRs are welcome.
Originally forked from plexdlnaplayer by songchenwen.
GPL-3.0-or-later. See LICENSE.