Icecast Server BY THOMAS BROOKS, KG5ZSU April, 2022 ============================================ A recent project I’ve been working on is an Icecast server running on a Raspberry Pi 3B. Here’s the rundown: I needed live streaming capabilities I needed something free I wanted something cross platform and multipurpose So, I took a Raspberry Pi I had laying around with Raspbian Jesse, and got to work. The install of Icecast was easy with a simple apt-get command. After that I began editing the icecast.xml file to get everything setup, and configured Ices2 to handle static file streaming and randomized playlists. Getting that setup was a little bit of a pain, but I did get it working. After the server was running on my LAN, I began punching it through the router. I created a VLAN on my router, and configured the Pi to tag all of its traffic for use on the VLAN. During testing the Pi had a two IP’s: one on my LAN, the other, on my VLAN. This made it easier to test things out than if I had to run my main PC on the VLAN, too. As soon as I got things configured, I deleted the IP on my local network and disabled DHCP, as I had no DHCP server configured on the VLAN. I then configured NAT rules to allow incoming requests to be directed to the IP subnet running in the VLAN, specifically to the PI. After this, the server was working. I had to hammer out some details in the configuration files to get static file streaming and fallback streams running. Ices configuration was not too hard, and I got it to stream a randomized playlist easily. The issues began when I started testing the stream. Que sizes and burst sizes needed to be tweaked a little. I then discovered that IOS/WebKit based clients can’t read an OGG Vorbis stream, which was what I intended to use. However, I also intended to use IOS devices as clients, so it looks like I’ll have to install something like VLC Media Player on my clients, which ruins my attempt at KISS. After some more testing, VLC seems to be doing the trick. I’m still working out the details, but it seems to be working.