Icecast Streaming Setup
EAS Station integrates with the Icecast 2 open-source streaming server to distribute audio — both live SDR demodulation output and EAS broadcast audio — over the network. Icecast acts as a relay, accepting a source audio stream from EAS Station and distributing it to any number of listeners.
Architecture Overview
SDR Hardware Service → IQ samples
↓
Audio Monitoring Service → Demodulated PCM audio
↓
Icecast Server → HTTP audio stream (listeners)
EAS Station acts as the Icecast source client; Icecast handles distribution. Multiple stream profiles (mount points) can be configured for different audiences or audio formats.
Installing Icecast
Icecast is installed automatically by the main install.sh installer. To install manually:
sudo apt-get install icecast2
During the APT installation, you will be prompted for:
- Icecast hostname — use
localhostfor local-only or your FQDN for public access - Source password — the password EAS Station uses to push audio to Icecast
- Relay password — for inter-server relaying (not used in basic setups)
- Admin password — for the Icecast admin web interface at
http://<host>:8000/admin
Configuring Icecast in EAS Station
EAS Station manages Icecast credentials and basic settings from the web interface. The configuration is written to /etc/icecast2/icecast.xml automatically.
Via the Web Interface
- Navigate to Admin → Icecast.
- Configure the following fields:
| Field | Default | Description |
|---|---|---|
| Icecast Host | localhost |
Hostname or IP of the Icecast server |
| Icecast Port | 8000 |
Icecast HTTP port |
| Source Password | (generated) | Password EAS Station uses to push streams |
| Admin User | admin |
Icecast admin username |
| Admin Password | (generated) | Icecast admin web interface password |
| Max Sources | Unlimited | Maximum simultaneous source connections |
- Click Save & Apply. EAS Station writes the new credentials to
/etc/icecast2/icecast.xmland restarts the Icecast service.
Via eas-config
sudo eas-config
Select 4. Audio Settings → Icecast Configuration.
Via .env (Manual)
ICECAST_HOST=localhost
ICECAST_PORT=8000
ICECAST_SOURCE_PASSWORD=your-source-password
ICECAST_ADMIN_PASSWORD=your-admin-password
Stream Profiles (Mount Points)
Each audio source in EAS Station can be assigned to a separate Icecast mount point. Navigate to Admin → Stream Profiles to manage them.
Default Mount Points
| Mount Point | Content | Codec |
|---|---|---|
/eas-live |
Live SDR demodulated audio | MP3 128kbps or OGG |
/eas-broadcast |
EAS broadcast audio (active alerts only) | WAV/PCM |
Creating a New Stream Profile
- Go to Admin → Stream Profiles → Add Profile.
- Configure:
- Mount Point — URL path (e.g.,
/my-stream) - Codec — MP3, OGG Vorbis, or PCM
- Bitrate — 64, 128, 192, or 320 kbps (for MP3)
- Sample Rate — 8000, 22050, or 44100 Hz
- Source — which audio input device or SDR receiver feeds this stream
- Mount Point — URL path (e.g.,
- Click Save.
Accessing the Audio Stream
Listening with a Media Player
# VLC
vlc http://your-eas-station.example.com:8000/eas-live
# mpv
mpv http://your-eas-station.example.com:8000/eas-live
# ffplay
ffplay http://your-eas-station.example.com:8000/eas-live
Or open the URL directly in any Icecast-compatible player (Winamp, foobar2000, etc.).
Embedding in a Web Page
<audio controls>
<source src="http://your-eas-station.example.com:8000/eas-live" type="audio/mpeg">
</audio>
EAS Station Audio Monitoring Page
The built-in audio monitoring page at /admin/audio displays:
- Live VU meters for each mount point
- Stream status (connected/disconnected)
- Listener count
- Incoming audio health metrics
Firewall Configuration
By default, Icecast listens on port 8000. Open this port if you want external access:
sudo ufw allow 8000/tcp comment "Icecast streaming"
For HTTPS streaming, see SSL Setup. Icecast itself does not support SSL natively; use an nginx reverse proxy to add TLS.
nginx Reverse Proxy for HTTPS Streaming
Add to your nginx configuration:
location /icecast/ {
proxy_pass http://localhost:8000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
proxy_cache off;
}
Listeners can then connect to https://your-domain.example.com/icecast/eas-live.
Icecast Admin Interface
The Icecast admin interface at http://<host>:8000/admin provides:
- Live listener counts per mount point
- Source connection status
- Server statistics
- Kick/ban listeners
Log in with the admin credentials configured in Admin → Icecast.
Audio Health Monitoring
EAS Station monitors the health of each Icecast stream. Navigate to Admin → Audio Sources to view:
- Connection state — is EAS Station connected to Icecast as a source?
- Input level — real-time audio level from the source device
- Silence detection — alerts if the stream has been silent for too long
- Listener count — pulled from the Icecast API
Alerts for stream health issues are sent to Compliance / Health Alert Recipients (configured in Admin → Notifications).
Troubleshooting
Icecast service not running
sudo systemctl status icecast2
sudo systemctl start icecast2
sudo journalctl -u icecast2 -f
Source not connecting
- Verify the source password in EAS Station matches
/etc/icecast2/icecast.xml. - Check Icecast logs:
/var/log/icecast2/error.log - Confirm the audio service is running:
sudo systemctl status eas-station-audio
Listeners can connect but hear silence
- Check the audio input device in Admin → Audio Sources.
- Confirm the SDR receiver is streaming:
sudo systemctl status eas-station-sdr - Use the VU meters in Admin → Audio to verify signal is present.
Port 8000 not accessible from outside
- Confirm UFW allows port 8000:
sudo ufw status - If behind a router, ensure port 8000 is forwarded to the EAS Station host.
Mount point shows as "404 Not Found"
- The stream profile for that mount point must be active and connected.
- Verify the mount point name matches exactly (case-sensitive, starts with
/). - Check the Icecast admin interface at
http://<host>:8000/adminto see active mounts.
High CPU from Icecast encoding
- Reduce the number of active stream profiles.
- Lower the bitrate or sample rate for streams that do not require high quality.
- Use a hardware audio device capable of providing pre-encoded audio to reduce software transcoding.
This document is served from docs/guides/ICECAST_STREAMING_SETUP.md in the EAS Station installation.