hckrnws
TinyIce: Single-binary Icecast2-compatible server (auto-HTTPS, multi-tenant)
by sylwester
I built TinyIce as a vibing side project to spin up an Icecast2-compatible server in seconds, because I was frustrated with IceCast. One static Go binary, embedded assets, auto-generated creds on first run, built-in ACME (Let’s Encrypt), relays, multi-tenant admins, Prometheus metrics, and a modern web UI.
It's a very nice project. Me and some friends toyed with the idea of running our own IceCast server, as a way to introducing new music to each other. We eventually gave up, exactly due to frustrations with setting up and running IceCast.
I think it's really neat how you managed to include ACME, a nice UI and even the Prometheus metrics.
Thank you so much. I just added a lot of new features and polished some old ones now.
Tangent:
Get onto Music League for introducing new music to each other.
Someone setup a league at work, and it's been one of the best (albeit unintentional) team bonding exercises I've ever come across (I've not come across many). So much so that three people who have left the company still participate in the league.
It unfortunately it's linked to and requires the use of Spotify, for those who are ideologically opposed (which also means I can't submit King Gizzard and the Lizard Wizard songs anymore).
What was frustrating Icecast?
XML-based big configuration, confusing for new users. No "run a single binary" and that's it :)
Here is a little writeup on medium.com: https://syso42.medium.com/tinyice-how-i-created-a-single-bin...
Thanks for sharing! Would love to see configurable ACME settings for use in a homelab where I'm already running my own ACME CA.
thank you for trying. I have added it in the latest release.
I've just added better docs, the CI/CD pipeline is now releasing binaries for all major platforms and custom ACME URLs are supported.
Dose it work behind a reverse proxy such as nginx? Especially for the m3u8 files?
That should work! :) Just added m3u/m3u8 support.
The HTTPS is still a problem for some streaming music sites. e.g. streamingsoundtracks.com runs HTTP.
Running my own icecast2 server, I recently ran into a problem[1] where TLS connections don't shut down properly. It's actually a problem with the libshout client library's poor TLS support. I posted a patch to that issue, but it's hard to tell if there's anyone still looking at issues or actively developing the project over there. The last update to libshout was 3 years ago, and it was just a documentation cleanup.
1: https://gitlab.xiph.org/xiph/icecast-libshout/-/issues/2337
This should be working in tinyice without issues. Feel free to test it and if the problem is also present, I will fix it.
why this is a problem? Streaming over Http just works - even on clients from 1999 like Winamp.
Why would you military grade encrypt radio service or static site anyway?
It doesn’t “just” work, I just implemented a streaming radio client and the http streams were a nightmare
To keep your ISP from slipping ads into the audio stream? To keep RIAA from finding out what you're streaming and suing you into oblivion?
And, more importantly, to keep misconfigured network appliances from treating every resource on the web as HTML and trying to shove ads into it, breaking audio players.
Because some browsers get annoyed and put up lots of alerts if they can't make a https connection
Rusty, of SomaFM fame? What a blessing to see you here! Mega fan, proud SomaFM mug owner from Australia :)
A static site? Because any hop can inject arbitrary code which your browser will then execute.
TLS doesn’t just offer confidentiality, it also offers integrity.
Comment was deleted :(
Icecast still exists? Blast from the past. Does it work reliably yet?
I've had years of uptime with icecast at home.
[flagged]
[flagged]
Mods: This seems to be an "agent".
[flagged]
Crafted by Rajat
Source Code