Skip to content

Setup Multiroom ​

If you're like me and have more than one AirPlay device, you can stream audio simulataneously to them.

alt text

alt text

alt text

Add the new group in Music Assistant.

alt text

WARNING

While this can play, the music won't be synchronized!

Install SnapServer (SnapCast) ​

SnapCast is Snapserver.

1 ​

alt text

alt text

2 ​

alt text

alt text

alt text

HA snap cast ​

alt text

alt text

Click Finish to finish the setup.

alt text

Verify that the integration has created two entities.

alt text

alt text

version: '3.3'

services:
  snapserver:
    image: 'ghcr.io/firefrei/snapcast/server:latest'
    restart: always
    #cap_add:
      #- NET_BIND_SERVICE   # Optional: allow container to bind privileged ports (>1024)
    environment:
      # See README.md for all environment options.
      TZ: Etc/UTC
      NGINX_ENABLED: "1"  # enable NGINX for HTTPS -> requires to bind to port 443 by default
      #NGINX_HTTPS_PORT: "4433"  # use port 4433 instead of 4433
    volumes:
      # Snapcast: Configuration and run-time data
      - /mnt/user/appdata/snapserver/data:/app/data/
      - /mnt/user/appdata/snapserver/data/snapserver.conf:/app/config/snapserver.conf
      #- ./config_snapcast/:/app/config/

      # NGINX: HTTPS certificates
      - /mnt/user/appdata/snapserver/nginx-certs:/app/certs/
      #- ./nginx_certs/:/app/certs/


    # Network Alternative 1: Bridge container directly into your home network
    #networks:
      #bridged-home-network:
        #ipv4_address: <desired-ip-of-container>

    # Network Alternative 2: Use port-forwarding of host ports
    ports:
      # Snapcast Ports
      - '1704-1705:1704-1705'
      - '1780:1780'
      # AirPlay ports
      - '3689:3689'
      - '5000:5000'
      - '6000-6009:6000-6009/udp'
      # AirPlay-2 ports
      #- '319-320:319-320/udp'
      #- '3689:3689'
      #- '5000:5000'
      #- '7000:7000'
      #- '6000-6009:6000-6009/udp'
      # Avahi ports
      - '5353:5353'
      # NGINX ports
      - '1243:443'

  shairport-sync:
    image: mikebrady/shairport-sync
    container_name: shairport
    restart: always
    network_mode: host
    volumes:
      - /dev/snd
      - /tmp/airplay.pipe:/tmp/airplay.pipe
      - /mnt/user/appdata/snapserver/shairport/shairport-sync.conf:/etc/shairport-sync.conf
    ports:
      - '5000:5000'
      - '6000-6009:6000-6009/udp'
      - '3689:3689'
      - '5353:5353'
    environment:
      - AIRPLAY_NAME=SnapcastAirplay
    command: shairport-sync -M -- -t hardware -d hw:0 -o pipe -- /tmp/airplay.pipe