How It Works

  • Icecast1
    Icecast site, available mountpoint list

How it works

How it works — Spotycast

Spotycast turns Spotify playback into a standard HTTP / Icecast stream. Spotify plays inside the container, Liquidsoap shapes the stream, Icecast exposes mountpoints, and your ecosystem (Roon / LMS / Volumio / any radio-URL client) consumes it like a normal network source.

Need the bigger picture? See Overview · FAQ

Quick flow (5 steps)

Goal: pick an Icecast mountpoint URL, add it as a “radio station” in your player, then select the Spotycast Spotify endpoint and press play.

1) Open Icecast

Verify Icecast is reachable and you can see the server status page.

http://<HOST>:28000

2) Copy a mountpoint

Pick one URL (AAC/MP3/FLAC depending on your profile) and copy it.

http://<HOST>:28000/spotify.aac

3) Add it in your player

Add the mountpoint as a custom radio stream URL (Roon / LMS / Volumio / others).

4) Select the Spotify endpoint

On Spotify “Connect to a device”, select the Spotycast endpoint shown on your network.

5) Play

Spotify starts playback → Liquidsoap publishes → your player receives audio from Icecast.

Done

Your player becomes the “distribution layer”, Spotify becomes the “source”.

Mountpoints: what you should see

If Icecast loads but you see no mountpoints, it usually means Liquidsoap isn’t publishing yet — often because Spotify playback hasn’t started (or the endpoint wasn’t selected).

Typical examples

  • /mp3 or /spotify.mp3 (compat / lossy)
  • /aac or /spotify.aac (often best compatibility)
  • /flac (Premium profile, when enabled)
Names depend on your Liquidsoap profile. The important part is: once Spotify is playing, Liquidsoap should publish at least one mountpoint.

Premium / “Lossless-ready” workflow

Reality check: Lossless availability depends on Spotify plan/region and client behavior. A /flac mountpoint means the bridge output is FLAC over HTTP, but it does not magically upgrade a lossy upstream.

Verify quality inside the Debian GUI session (noVNC)

  1. Open noVNC: http://<HOST>:6080/vnc.html
  2. In the container terminal, launch Spotify Desktop with the expected display:
export DISPLAY=:1
spotycast-start-spotify
  1. Log in to Spotify Desktop.
  2. Go to Spotify Settings and select the highest available streaming quality (Lossless if available).
  3. Start playback and verify the Premium mountpoint(s) become visible in Icecast.
Stability tip: avoid switching quality mid-stream. Keep settings stable to reduce stream renegotiations / mountpoint flapping.

Ops & troubleshooting

Mountpoints not visible or no audio?

  • Confirm Icecast is reachable: http://<HOST>:28000
  • Ensure Spotify is playing and the correct Spotycast endpoint is selected in Spotify Connect
  • Check the pipeline logs inside the container
tail -n 200 /var/log/spotify-roon-bridge/liquidsoap.stderr.log || true
tail -n 200 /var/log/spotify-roon-bridge/icecast2.stderr.log || true
tail -n 200 /var/log/spotify-roon-bridge/pulseaudio.stderr.log || true

Client compatibility

Any player that can ingest an HTTP radio stream should work. In this architecture, the player is simply a stream consumer.

Latency note: HTTP streaming introduces buffering. A small delay versus local playback is normal with Icecast-style distribution.
Network note: if Spotify discovery is flaky, your LAN’s mDNS / multicast behavior is often the root cause. See FAQ for the practical fixes (router/AP settings, VLANs, IGMP snooping, etc.).
Next steps: Install guide · Premium · FAQ