TinyIce: Single-binary Icecast2-compatible server (auto-HTTPS, multi-tenant)

Published: (February 18, 2026 at 01:00 AM EST)
3 min read

Source: Hacker News

TinyIce ❄️

Run it, and you’ll have a ready Icecast server in seconds.

Notice: This is a side project. Use it at your own risk. While it follows security best‑practice guidelines, it has not undergone an independent audit.

TinyIce is a lightweight, high‑performance, and secure Icecast 2‑compatible streaming server written in Go. It is self‑contained, easy to deploy, and provides a modern web interface for both administrators and listeners.

Screenshots

TinyIce dashboardTinyIce player
DashboardPlayer

Badges

Go Report Card
License: Apache 2.0

Why TinyIce?

Traditional streaming servers can be complex to configure and resource‑heavy. TinyIce solves this by providing:

  • Instant Deployment – a single binary with all assets (templates, icons) embedded.
  • Zero‑Config Security – unique secure credentials are automatically generated on first run.
  • Multi‑Tenant Ready – create multiple admin users who can only manage their own mount points.
  • Edge‑Ready Relaying – pull streams from other servers with automatic reconnection and in‑stream ICY metadata parsing.
  • Secure & Hardened – salted bcrypt password hashing, CSRF protection, and HTTP resource hardening.
  • Auto‑HTTPS – built‑in support for ACME (Let’s Encrypt) for zero‑configuration SSL certificates.
  • Real‑time Insights – SSE‑powered dashboards with smooth, hardware‑accelerated traffic charts.
  • Observability – built‑in Prometheus metrics endpoint and structured logging.

Features {#features}

  • Icecast2 compatible – works with standard source clients (BUTT, OBS, Mixxx, LadioCast) and players (VLC, web browsers).
  • Stream relaying – act as an edge node by pulling streams from remote servers.
  • Dual‑protocol architecture – serves HTTPS to listeners while allowing legacy encoders to stream over plain HTTP.
  • Public directory listing – built‑in support for the Icecast YP protocol (e.g., dir.xiph.org).
  • Dynamic management – add, update, disable, or remove mount points, users, and relays on the fly.
  • IP banning – instantly block malicious IPs from streaming or listening.
  • Legacy API – supports /status-json.xsl for compatibility with existing Icecast tools.
  • Now‑playing metadata – real‑time display of song titles pushed from broadcast software or pulled from relays.

Getting Started

1. Build

Requirements: Go 1.21 or later.

go build -o tinyice

2. Run

./tinyice

On the first run, TinyIce will generate a tinyice.json file containing unique random passwords. Make sure to copy and save those passwords from the terminal output!

3. Stream

Configure your encoder (e.g., BUTT) with the following settings:

SettingValue
Server TypeIcecast 2
Addressyour-server-ip
Port8000
PasswordThe generated source password
Mount/live

Now you’re ready to start streaming!

Command Line Usage

./tinyice -host 0.0.0.0 -port 8000 -daemon -log-file tinyice.log
OptionDescriptionDefault
-hostNetwork interface to bind to0.0.0.0
-portPort number to listen on
-configPath to the configuration file
-log-filePath to a file for log output
-log-levelLogging level: debug, info, warn, error
-json-logsEnable structured JSON logging
-daemonRun the program in the background
-pid-filePath to write the process ID

Performance

See the PERFORMANCE.md file for detailed hardware and traffic estimates.

License

Distributed under the Apache License 2.0. See the LICENSE file for more information.

Developed by DatanoiseTV.

0 views
Back to Blog

Related posts

Read more »

EDuke32 – Duke Nukem 3D (Open-Source)

It’s Time to Kick Ass and Chew Bubble‑Gum and I’m Outta Gum! !Polymer renderer screenshot/images/shots/polymer2.jpg Per‑pixel dynamic lighting and realtime sha...