This repository provides Docker images for Snapcast, a multi-room audio streaming solution. The images include both the Snapcast server and client components, allowing you to set up a synchronized audio streaming system across multiple devices.
- Pre-built Docker images for both Snapcast server and client
- Uses Pipewire-client for audio server connectivity
- Supports multiple architectures (linux/amd64 and linux/aarch64)
- Automated builds with artifact attestation for security
For Raspberry Pi users: Check out PiCompose for a Pi-Ready image with pipewire-server (audio-server).
latest: Latest stable releasenightly: Builds from the main branch (may be unstable)- Version-specific tags (e.g.,
0.31.0-1__0.1): Stable releases
Home Assistant Integration
If you're using Home Assistant from Nabu Casa, we recommend using Music Assistant as a server in combination with snapcast client instead. It provides better integration and more features for audio streaming management in Home Assistant. An example configuration for the Snapcast server can be found in the docker-compose_server.yml file in this repository.
How to run
If you still want to run the snapcast server...
For a complete example configuration, check out the docker-compose_server.yml file in this repository.
To run the Snapcast server:
docker run --rm -it ghcr.io/florian-asche/docker-snapcast:latestFor a complete example configuration, check out the docker-compose_client.yml file in this repository.
To run the Snapcast client, specify the host ID and use the snapclient entrypoint:
docker run --rm -it \
--network host \
--device /dev/snd:/dev/snd \
--device /dev/bus/usb \
--group-add audio \
-e START_SNAPCLIENT=true \
-e PIPEWIRE_RUNTIME_DIR=/run \
-e XDG_RUNTIME_DIR=/run \
--volume /run/user/1000/pipewire-0:/run/pipewire-0 \
--entrypoint=/usr/bin/snapclient \
ghcr.io/florian-asche/docker-snapcast:latest \
--hostID <place_example_snapcast_client_here> \
--Soundcard pipewire \
<tcp|ws|wss>://<snapserver host or IP>[:port]Usage: snapclient [options...] [url] With 'url' = <tcp|ws|wss>://[:port]
| Parameter | Description |
|---|---|
--network host |
Uses the host's network stack for better audio streaming performance |
--device /dev/snd:/dev/snd |
Gives access to the host's sound devices |
--device /dev/bus/usb |
Enables access to USB audio devices |
--group-add audio |
Adds the container to the host's audio group for sound device access |
-e START_SNAPCLIENT=true |
Ensures the Snapcast client starts automatically |
-e PIPEWIRE_RUNTIME_DIR=/run |
Sets the Pipewire runtime directory |
-e XDG_RUNTIME_DIR=/run |
Sets the XDG runtime directory for Pipewire |
--volume /run/user/1000/pipewire-0:/run/pipewire-0 |
Mounts the Pipewire socket for audio streaming |
--entrypoint=/usr/bin/snapclient |
Set the binary that should be started with the corresponding params |
--hostID <name> |
Unique identifier for this client |
--Soundcard pipewire |
Uses Pipewire as the audio backend |
| `<tcp | ws |
If you need more information about pipewire, you can find them here: piCompose - Pipewire debugging
Image builds can be tracked in this repository's Actions tab, and utilize artifact attestation to certify provenance.
The Docker images are built using GitHub Actions, which provides:
- Automated builds for different architectures
- Artifact attestation for build provenance verification
- Regular updates and maintenance
The build process includes:
- Multi-architecture support (linux/amd64 and linux/aarch64)
- Security verification through artifact attestation
- Automated testing and validation
- Regular updates to maintain compatibility
For more information about the build process and available architectures, please refer to the Actions tab in this repository.