Icecast Streaming Media Server
February 11th, 2021 / By Andrew Currie
February 11th, 2021 / By Andrew Currie
Back in 2006, while working in Springfield, Illinois for Remwes, LLC, I developed an online radio station website using Icecast for the streaming audio server, Ezstream for the Icecast client, and a Shockwave Flash audio player called Minicaster. It was a lot of fun and in those days it was perfectly acceptable to run your website on HTTP only without an SSL certificate. Recently, I was browsing some old backups and came across a copy of the old radio station website, and wondered how I might set up that website today, since Adobe Flash is outdated and no longer supported, and using the HTTP protocol without SSL is frowned upon. In addition to that, with the release of version 80 of the Google Chrome web browser, used by almost 70% of internet users worldwide, HTTP resources are no longer accessible.
As of February 2020, Chrome 81 automatically converts mixed content to load over HTTPS. If the content doesn’t load over HTTPS it will be blocked. Icecast by default streams over HTTP and you can re-compile it to include SSL but your streaming client must also support SSL. I recently set up a new Icecast server for my own radio station and I used the default Icecast media server set up, streaming over HTTP using the same Ezstream client I used back in 2006, but this time I secured the stream to run over HTTPS by using an NGINX proxy pass directive. This makes the stream accessible in all modern browsers and on all devices.
The stream is still technically running over HTTP and on port 8080, it’s the powerful reverse proxy functionality of NGINX or Apache that serves the stream over HTTPS on the standard SSL port (443). Below is a working NGINX configuration example for serving an HTTP Icecast audio stream over HTTPS:
And for an Apache webserver: