
Hacker News · Feb 18, 2026 · Collected from RSS
Article URL: https://github.com/DatanoiseTV/tinyice Comments URL: https://news.ycombinator.com/item?id=47057707 Points: 4 # Comments: 1
TinyIce ❄️ Run it, and you've got a ready Icecast server in seconds. Notice: This is a side project. Use it at your own risk. While it implements security best practices, it has not undergone an independent audit. TinyIce is a lightweight, high-performance, and secure Icecast2-compatible streaming server written in Go. It is designed to be self-contained, easy to deploy, and provides a modern web interface for both administrators and listeners. Why TinyIce? Traditional streaming servers can be complex to configure and resource-heavy. TinyIce aims to solve this by providing: Instant Deployment: A single binary with all assets (templates, icons) embedded. Zero-Config Security: Unique secure credentials 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. Playback History: Persistent song history stored in a lightweight SQLite database. Observability: Built-in Prometheus metrics endpoint and structured logging. Features Icecast2 Compatible: Works with standard source clients (BUTT, OBS, Mixxx, LadioCast) and players (VLC, web browsers). Approval Workflow: New streams are hidden by default until approved by an administrator. Stream Relaying: Act as an edge node by pulling streams from remote servers. Dual-Protocol Architecture: Handles HTTPS for listeners while allowing legacy encoders to stream over plain HTTP. Playback Tracking: View the last 100 songs played per station in the admin dashboard. Public Directory Listing: Built-in support for 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: Support for /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 Requires Go 1.21 or later. go build -o tinyice 2. Run ./tinyice On the first run, TinyIce will generate tinyice.json with unique random passwords. Save them from the terminal! 3. Stream Point your encoder (e.g., BUTT) to: Server Type: Icecast 2 Address: your-server-ip Port: 8000 Password: [The generated source password] Mount: /live Command Line Usage ./tinyice -host 0.0.0.0 -port 8000 -daemon -log-file tinyice.log -host: Network interface to bind to (default: "0.0.0.0"). -config: Path to the configuration file. -log-file: Path to a file for log output. -log-level: debug, info, warn, error. -json-logs: Enable structured JSON logging. -daemon: Run in the background. -pid-file: Path to write the process ID. Performance See PERFORMANCE.md for detailed hardware and traffic estimates. License Distributed under the Apache License 2.0. See LICENSE for more information. Developed by DatanoiseTV