Running your own internet radio station gives you complete control over what your audience hears. No corporate playlists, no algorithmic recommendations, no licensing restrictions on what you can broadcast. Whether you want to share music, host talk shows, or run a community station, self-hosted radio software handles everything from playlist scheduling to live DJ connections and listener analytics.
This guide compares three of the most capable open-source options for building a self-hosted radio station — AzuraCast, LibreTime, and Icecast — with practical docker deployment instructions so you can go live in under an hour.
Why Self-Host an Internet Radio Station
Broadcasting your own radio station from your own server offers advantages that cloud-hosted platforms simply cannot match:
- Full content control — Play whatever you want, whenever you want. No content guidelines, no algorithmic interference, no forced ads.
- Unlimited listeners — Your only constraint is your server’s bandwidth. No tiered plans that cap your audience at 100 or 1,000 concurrent listeners.
- No monthly fees — All three tools covered here are free and open source. Your only cost is the server hardware or VPS hosting.
- Privacy for listeners — No third-party tracking, no listener data sold to advertisers, no profiling.
- Custom branding — Your station, your domain, your visual identity. No forced platform logos or watermarks.
- Live DJ support — Connect from anywhere using standard broadcasting software (BUTT, Mixxx) to take over the stream in real time.
- AutoDJ functionality — When no live DJ is connected, your station keeps running automatically with scheduled playlists, jingles, and station IDs.
- Multiple mount points — Run several channels or shows from a single server, each with its own playlist and schedule.
If you’ve explored self-hosted media servers like Navidrome for music streaming or Owncast for live video streaming, an internet radio station is the natural audio-only complement to your self-hosted media stack.
The Three Contenders at a Glance
| Feature | AzuraCast | LibreTime | Icecast |
|---|---|---|---|
| Primary Language | PHP | PHP | C |
| GitHub Stars | 3,813 | 924 | 539 |
| Last Updated | April 2026 | April 2026 | January 2026 |
| AutoDJ | Built-in | Built-in | No (external source needed) |
| Live DJ Support | Yes (Icecast/KH + SHOUTcast) | Yes (via Liquidsoap) | Yes (source client) |
| Web Interface | Full admin dashboard | Schedule + admin UI | Minimal admin |
| Multi-Station | Yes | Single station | Yes (mount points) |
| Listener Analytics | Built-in charts | Basic stats | Basic via admin |
| Scheduling | Playlist-based + advanced | Show-based calendar | No (external) |
| Streaming Backend | Liquidsoap | Liquidsoap | Icecast core |
| Database | MariaDB | PostgreSQL | None (file-based) |
| Docker Support | Official, turnkey | Official compose | Community images |
| Best For | Full radio management | Broadcast automation | Minimal streaming server |
AzuraCast: The All-in-One Radio Platform
AzuraCast is the most complete self-hosted radio solution available. It bundles everything you need into a single Docker deployment: the streaming server (Icecast-KH), the AutoDJ engine (Liquidsoap), a web-based management dashboard, and listener analytics. The result is a turnkey radio station you can deploy in minutes.
Key Features
- Multi-station support — Run dozens of independent stations from one server, each with its own DJs, playlists, and branding.
- AutoDJ with intelligent queuing — Plays your music library automatically, handles crossfades, station IDs, and jingles. When a live DJ connects, AutoDJ gracefully hands off the stream.
- Playlist scheduling — Weight-based playlists, time-based schedules, and advanced rotation rules. Set different playlists for different times of day.
- Web DJ — Broadcast directly from the browser without installing additional software.
- REST API — Integrate with external tools, now-playing widgets, or custom mobile apps.
- SFTP access — Upload media files securely via SFTP directly into your station’s media library.
Docker Deployment
AzuraCast uses an installer script that generates a customized docker-compose.yml. The recommended approach:
| |
The installer creates a production-ready stack with the following services:
| |
The stations volume stores all uploaded media, playlists, and configuration per station. The installer handles SSL certificates via Let’s Encrypt automatically.
Resource Requirements
- Minimum: 1 vCPU, 1 GB RAM for a single station with AutoDJ
- Recommended: 2 vCPU, 2 GB RAM for multiple stations
- Storage: Depends on your music library — a typical 10,000-song library uses ~50 GB
LibreTime: The Broadcast Automation Platform
LibreTime is the open-source successor to Sourcefabric’s Airtime, designed specifically for radio broadcast automation. Where AzuraCast focuses on the complete radio station experience, LibreTime excels at scheduling and program management — making it ideal for community radio stations with multiple shows and volunteer DJs.
Key Features
- Show-based scheduling — Build a weekly schedule with shows, recurring programs, and special events. Each show has its own playlist and host assignments.
- Calendar interface — Visual drag-and-drop calendar for programming your station’s lineup.
- Live assistant — Web-based DJ interface for hosts to manage playback, queue tracks, and introduce segments during live shows.
- Media library with metadata — Full library management with tagging, cue points, and track analysis.
- Rebroadcast support — Record live shows and automatically rebroadcast them during off-hours.
- Podcast export — Automatically publish recorded shows as podcasts.
Docker Deployment
LibreTime provides an official Docker Compose configuration. Create the following directory structure and files:
| |
Create the docker-compose.yml:
| |
Create the .env file with your passwords:
| |
Start the stack:
| |
Then visit http://your-server-ip to complete the setup wizard. The web interface will guide you through creating your first show, uploading media, and configuring the broadcast output.
Resource Requirements
- Minimum: 2 vCPU, 2 GB RAM (LibreTime runs more services: PostgreSQL, RabbitMQ, multiple containers)
- Recommended: 4 vCPU, 4 GB RAM for production use with media analysis
- Storage: Media library + PostgreSQL data — plan for at least 100 GB
Icecast: The Minimal Streaming Server
Icecast is the foundational streaming server that powers many radio platforms — including both AzuraCast and LibreTime. If you want the simplest possible setup with minimal overhead, or you’re building a custom radio pipeline with external tools, Icecast is the core component.
Key Features
- Lightweight — Written in C, Icecast uses minimal CPU and memory. A single-core VPS with 512 MB RAM can serve hundreds of concurrent listeners.
- Multiple mount points — Each mount point (
/live,/music,/talk) acts as an independent stream with its own listener count and metadata. - SHOUTcast and Icecast protocol support — Compatible with virtually all broadcasting software.
- Relay/chaining — Cascade streams from one Icecast server to another for load distribution.
- XSLT customization — Customize the web interface and status pages with XSLT templates.
- No built-in AutoDJ — Icecast only serves streams. You need a separate source client to feed it content.
Source Clients (Required)
Since Icecast has no AutoDJ, you need a source client to feed audio to the server:
| Source Client | Purpose | Platform |
|---|---|---|
| BUTT | Live DJ broadcasting | Windows, macOS, Linux |
| Mixxx | Live DJ with mixing | Windows, macOS, Linux |
| Liquidsoap | AutoDJ / playlist automation | Linux, cross-platform |
| Darkice | Live audio input encoding | Linux |
| EZStream | Playlist-based AutoDJ | Linux |
Docker Deployment
Use the community-maintained Icecast image:
| |
Create a basic icecast.xml configuration:
| |
Start Icecast and connect a source client like BUTT or Liquidsoap to your-server-domain.com:8000 with the source password. Listeners connect to http://your-server-domain.com:8000/live.
Resource Requirements
- Minimum: 1 vCPU, 512 MB RAM (can handle 100+ concurrent listeners)
- Recommended: 1 vCPU, 1 GB RAM for multiple mount points
- Storage: Minimal — only logs. No media storage needed on the server itself.
Choosing the Right Tool
The decision depends on your use case:
Choose AzuraCast if you want a complete, ready-to-go radio station. It handles everything from media upload to AutoDJ to listener analytics. The single-station minimum footprint is reasonable, and multi-station support makes it ideal for networks.
Choose LibreTime if you run a community radio station with scheduled shows and volunteer DJs. The calendar-based scheduling and show management are unmatched. It requires more resources but delivers professional broadcast automation.
Choose Icecast if you need a lightweight streaming endpoint and already have your own AutoDJ pipeline (like a custom Liquidsoap setup or a playlist script). It’s the building block, not the complete solution.
Quick Decision Matrix
| Need | AzuraCast | LibreTime | Icecast |
|---|---|---|---|
| Quick setup (under 30 min) | ✅ | ⚠️ | ✅ |
| Multiple stations | ✅ | ❌ | ⚠️ (mounts) |
| Visual schedule/calendar | ❌ | ✅ | ❌ |
| AutoDJ out of the box | ✅ | ✅ | ❌ |
| Minimal resource usage | ⚠️ | ❌ | ✅ |
| Community radio shows | ⚠️ | ✅ | ❌ |
| Custom streaming pipeline | ⚠️ | ⚠️ | ✅ |
| Listener analytics dashboard | ✅ | ⚠️ | ⚠️ |
Reverse Proxy Setup
For production use, place your radio server behind a reverse proxy to handle SSL termination and domain routing. If you’re using AzuraCast, it includes built-in Nginx with Let’s Encrypt support. For LibreTime or standalone Icecast, configure a reverse proxy lcaddyTraefik or Nginx Proxy Manager](../nginx-vs-caddy-vs-traefik-self-hosted-web-server-guide-2026/) to handle HTTPS.
Example Nginx configuration for Icecast:
| |
FAQ
Can I run a radio station on a cheap VPS?
Yes. A $5-10/month VPS with 1-2 vCPUs and 1-2 GB RAM is sufficient for a single AzuraCast or Icecast station serving up to 100 concurrent listeners. LibreTime requires slightly more resources due to its additional services (PostgreSQL, RabbitMQ).
What audio formats do these tools support?
AzuraCast and LibreTime both support MP3, OGG Vorbis, AAC, and FLAC streams. Icecast natively supports MP3, OGG Vorbis, WebM, and Opus. The format depends on your source client’s encoding settings.
How do I connect as a live DJ?
Download BUTT (Broadcast Using This Tool) — it’s free and works on Windows, macOS, and Linux. Configure it with your server’s hostname, port (usually 8000), mount point (e.g., /live), and source password. Click “Connect” and you’re broadcasting live. Mixxx is another free option that adds mixing capabilities.
Is it legal to stream music on my own radio station?
Music licensing laws vary by country. In most jurisdictions, streaming copyrighted music publicly (even over the internet) requires a license from performing rights organizations. Check your local regulations. Creative Commons and royalty-free music can be streamed without licensing concerns.
Can I relay my station to other platforms?
Yes. Both AzuraCast and Icecast support stream relays. You can forward your Icecast mount to other servers for redundancy, or use AzuraCast’s built-in relay feature to broadcast to multiple downstream servers simultaneously.
How do I add music to my station?
AzuraCast provides SFTP access — connect with any SFTP client (FileZilla, WinSCP) using the credentials shown in the station management panel. LibreTime allows media uploads through its web interface. For Icecast, you’ll need to configure your source client (like Liquidsoap or EZStream) with a local music directory path.
Can these tools handle 24/7 broadcasting?
Absolutely. All three tools are designed for continuous operation. AzuraCast and LibreTime’s AutoDJ ensures the stream never goes silent, even when no live DJ is connected. Icecast stays running as long as a source client is feeding it audio — pair it with Liquidsoap for unattended 24/7 playback.