Install Icecast on Ubuntu 20.04
Icecast is a free audio media streaming solution that lets you create an audio streaming platform with support for MP3 and Ogg Vorbis audio streams. This guide explains how you can install Icecast on a Ubuntu 20.04 server.
Prerequisites
- Deploy a Ubuntu 20.04 Server on Vultr.
- Point a domain to the server. For example,
onlineradio.example.com
. - Access the server using SSH.
- Install Nginx.
1. Installation
Update the server.
$ sudo apt update
Upgrade server packages.
$ sudo apt upgrade
Install Icecast
$ sudo apt install icecast2
Several prompts show up, select
yes
to configure passwords, keeplocalhost
as the server hostname, then set the Icecast source, relay, and administrator passwords.Enable Icecast to start at boot time.
$ sudo systemctl enable icecast2
Start the Icecast server.
$ sudo systemctl start icecast2
2. Configuration
Edit the main Icecast configuration file.
$ sudo nano /etc/icecast2/icecast.xml
Find the following line.
<listen-socket> <port>8000</port> <!-- <bind-address>127.0.0.1</bind-address> --> <!-- <shoutcast-mount>/stream</shoutcast-mount> --> </listen-socket>
Change the Icecast port to your preferred setting,
8000
by default.To change the administrator and source passwords, find the following section.
<authentication> <!-- Sources log in with username 'source' --> <source-password>12345678</source-password> <!-- Relays log in with username 'relay' --> <relay-password>12345</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>admin123</admin-password> </authentication>
Save the file.
Restart Icecast to load changes.
$ sudo systemctl restart icecast2
3. Configure Nginx as a Reverse Proxy
Using a text editor, create a new Nginx configuration file.
$ sudo nano /etc/nginx/conf.d/icecast.conf
Add the following contents to the file. Replace
onlineradio.example.com
with your real domain.server { listen 80; listen [::]:80; server_name onlineradio.example.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; location / { proxy_set_header Accept-Encoding ""; proxy_pass http://127.0.0.1:8000/; sub_filter_types application/xspf+xml audio/x-mpegurl audio/x-vclt text/css text/html text/xml; sub_filter ':8000/' '/'; sub_filter '@localhost' '@onlineradio.example.com'; sub_filter 'localhost' $host; sub_filter 'Mount Point ' $host; } }
Save the file.
Check the Nginx configuration for errors.
$ sudo nginx -t
Restart Nginx.
$ sudo systemctl restart nginx
4. Security
Allow Full Nginx access through the firewall.
$ sudo ufw allow 'nginx full'
Allow the Icecast port to enable broadcast requests to the server.
$ sudo ufw allow 8000/tcp
Restart the firewall to load changes.
$ sudo ufw reload
5. SSL
Install the Certbot Nginx package.
$ sudo apt install certbot python3-certbot-nginx
Request a new SSL certificate.
$ sudo certbot -d onlineradio.example.com --agree-tos
Restart Nginx to load changes.
$ sudo systemctl restart nginx
6. Test
Visit your domain to confirm that Icecast is up and running.
https://onlineradio.example.com/
Download and Install Mixx on your computer.
Open Mixx, and navigate to Preferences.
Select Live Broadcasting, and enter your domain in the Host field, enter
source
in the Login field, specify a Mount point, for example/stream
, enter the Icecast port, blank, then, the source Password specified in the Icecast configuration file.Start your Mix, and toggle ON AIR to go live.
Using a different device, load your mount point on the domain.
https://onlineradio.example.com/stream
Your Mixx stream should start playing.
More Information
You have installed Icecast on Ubuntu 20.04, for more information and configuration options, visit the following guides.