A docker-compose Icecast and Ezstream setup that turns MP3 folders into radio stations.
  • CSS 32.4%
  • JavaScript 30.2%
  • Shell 16.8%
  • XSLT 16.2%
  • Dockerfile 4.4%
Find a file
2026-01-28 19:58:48 -03:00
icestreamp3 add title, genre and migration notice 2026-01-28 19:58:48 -03:00
docker-compose.yml add title, genre and migration notice 2026-01-28 19:58:48 -03:00
README.md add title, genre and migration notice 2026-01-28 19:58:48 -03:00

GitHub repositories are now mirror only

Due to recent changes in GitHub's direction, development has migrated to: https://git.ribas89.co.uk/

Have a issue/question? https://link.ribas89.co.uk/ask

Thank you for your support ❤️!

IceStreamMP3

A lightweight Icecast + ezstream Docker setup for streaming MP3 files directly from disk.

Ideal for:

  • Low-power servers (VPS, NAS, Raspberry Pi)
  • Always-on radio streams
  • Archival or background music stations

Features

  • MP3 passthrough streaming (no transcoding), making it very lightweight and low on CPU usage
  • Automatic playlist and ezstream configuration generation from your music library
  • Custom web frontend to easily browse and listen to all available radio stations

How to install

  1. Clone or download this repository

  2. Build the container image: docker compose build icestreamp3

  3. Edit the Icecast configuration and change the passwords: ./icecast/icecast.xml

  4. Start the server: docker compose up -d icestreamp3

  5. If you want to modify something on ezstream or its playlists (like shuffle), the generated files are in /ezstream


Accessing streams

Each subdirectory inside the music library becomes its own stream:

/musiclib/rock/

--song1.mp3

--song2.mp3

/musiclib/jazz/

--track1.mp3

--track2.mp3

/musiclib/rock → http://host:8000/rock.mp3
/musiclib/jazz → http://host:8000/jazz.mp3

Streams are available at: http://<host>:8000/<foldername>.mp3

Examples: http://localhost:8000/rock.mp3 http://localhost:8000/jazz.mp3

Icecast web interface: http://<host>:8000/


Example host layout

icestreamp3/

--build/

----Dockerfile

--icecast/

----icecast.xml

----frontpage/

--ezstream/

--docker-compose.yml


Why is it so lightweight?

  • MP3 passthrough

    • No decoding or re-encoding
    • Files are streamed exactly as stored
  • Very low CPU usage

    • ezstream only reads files and pushes bytes
  • Minimal software stack

    • Icecast
    • ezstream
    • a small Bash entrypoint
  • Fast startup

    • Streams are generated automatically at container launch

Requirements

  • Docker
  • Docker Compose
  • A directory containing MP3 files organized by folders