AzuraCast
All-in-one self-hosted web radio management suite
AzuraCast is a free, self-hosted, all-in-one web radio management suite that bundles streaming, automation, and listener analytics. It provides an easy installer and a friendly web interface for running internet radio stations.
Key features
- All-in-one radio suite
- Automated playout
- Listener analytics
- Multi-station support
Pros & cons
Strengths
- Easy Docker installer
- Comprehensive feature set
Trade-offs
- Resource heavy
- Single-purpose focus
AzuraCast replaces
Last reviewed Sep 13, 2026 · 828 words
If you want to run an internet radio station you need a streaming server, an automated playout system that fills the air when nobody is live, a scheduler, a way for a live DJ to take over, and listener statistics. Assembled by hand that is Icecast, Liquidsoap, a cron-and-playlist arrangement, and a log parser, plus a week of your evenings. AzuraCast is those five things in one installer, and the real cost is that it wants 2 GB of RAM and, by default, the whole machine.
The installer assumes it owns the box
Installation is a script:
mkdir -p /var/azuracast && cd /var/azuracast
curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh
chmod a+x docker.sh
./docker.sh install
It pulls a stack of containers (web, database, Redis, the streaming and playout services), binds ports 80 and 443, and opens a range of station ports starting at 8000 for the actual audio mounts. Ten minutes later you have a working admin panel with Let's Encrypt available from the settings. The friction shows up when this is not a dedicated VM: it will collide with whatever already holds 80 and 443. The fix is in /var/azuracast/.env, setting AZURACAST_HTTP_PORT and AZURACAST_HTTPS_PORT to something free and putting your usual reverse proxy in front. That is a supported path, but the project clearly expects a dedicated host, and a small VPS with 2 vCPU and 4 GB is the shape it is happiest on.
Where the RAM goes
Each station is a Liquidsoap process decoding and encoding audio continuously, plus an Icecast (or Shoutcast) instance serving it. One station with a 128 kbps MP3 mount and a 96 kbps AAC mount idles around 300 to 500 MB across the stack in my experience; the database, Redis and web containers take the rest of the first gigabyte. Three or four stations push you past 2 GB. Transcoding is the CPU cost: each mount format is a separate encode, so offering MP3, AAC and Opus triples the work. A single-station hobby setup on a 2 GB box is fine; a multi-station community outfit wants 4 GB and two real cores.
AutoDJ and scheduling are the reason to use it
Upload media through the browser or drop files via SFTP (AzuraCast runs an SFTP server per station for exactly this), tag them, build playlists, and give each playlist a weight, a schedule, or a "once per x songs" rule. Jingles, station IDs and ad breaks are just playlists with interval rules. Liquidsoap handles crossfading, replay gain and silence trimming underneath. This is the part that is painful to assemble by hand and that AzuraCast makes a form-filling exercise.
Live input works through a streamer account: a DJ points BUTT, Mixxx or the built-in Web DJ at the station's live port, and AutoDJ yields while they are connected and resumes when they drop. Listener analytics track concurrent listeners per mount with country breakdown, and the reports are enough for a community station's licensing paperwork. There is a full REST API for anything the UI does not cover, which people use to push now-playing data to websites and Discord.
Rolling versus stable, and the update habit
AzuraCast publishes a stable channel and a rolling channel; the installer defaults to stable, and I would leave it there for anything with listeners. Updates are ./docker.sh update, which also re-pulls the images, and the built-in backup (Administration, Backups, to local disk or S3) should run nightly because a station's playlists and rotation rules represent hours of work that are not stored anywhere else. Restore is ./docker.sh restore from the same directory. Test it once.
What it is not
AzuraCast is a broadcaster, not a music library. Listeners hear the same stream at the same time; nobody picks a track. If what you want is your own music collection streamed on demand to your phone, that is Navidrome, which uses a tenth of the resources and is covered in your own Spotify with Navidrome. And if your station is a single live DJ with no automation, Icecast alone on 64 MB of RAM is the honest choice; AzuraCast's weight buys playout automation, and if you will not use it you are paying for nothing.
What I'd do
For a hobby or community station: a dedicated 2 vCPU, 4 GB VPS, the stable channel, TLS via the built-in Let's Encrypt, one MP3 128 kbps mount plus one AAC mount for mobile listeners, SFTP for uploads, and nightly backups to object storage. Put Caddy or an existing proxy in front only if the host is shared, and change the .env ports before the first install rather than after. Skip it entirely for on-demand listening; that is a different product and a different category.
Compare AzuraCast
1 head-to-head comparisons.
Similar media servers apps
Jellyfin
Media ServersFree software media system for streaming your library
Replaces Plex, Emby
qBittorrent
Media ServersBittorrent client that aims to be a good alternative to all other
Replaces µTorrent
SRS
Media ServersA simple, high efficiency and real-time video server, supports RTMP,
Navidrome
Media ServersModern music streaming server for your collection
Replaces Spotify
Kodi
Media ServersOpen-source home theater and media center
Replaces Plex
Koel
Media ServersPersonal music streaming server with an elegant interface
Replaces Spotify