TinyIce:单二进制 Icecast2 兼容服务器(自动 HTTPS,多租户)
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 是一个轻量级、高性能且安全的兼容 Icecast 2 的流媒体服务器,使用 Go 编写。它是自包含的,易于部署,并为管理员和听众提供现代化的 Web 界面。
Screenshots
![]() | ![]() |
|---|---|
| Dashboard | Player |
Badges
为什么选择 TinyIce?
传统的流媒体服务器配置复杂且资源占用高。TinyIce 通过以下方式解决这些问题:
- 即时部署 – 单个二进制文件内嵌所有资源(模板、图标)。
- 零配置安全 – 首次运行时自动生成唯一的安全凭证。
- 多租户就绪 – 创建多个管理员用户,每个用户只能管理自己的挂载点。
- 边缘就绪转发 – 从其他服务器拉流,具备自动重连和流内 ICY 元数据解析功能。
- 安全加固 – 使用加盐的 bcrypt 密码哈希、CSRF 防护以及 HTTP 资源硬化。
- 自动 HTTPS – 内置 ACME(Let’s Encrypt) 支持,实现零配置 SSL 证书。
- 实时洞察 – 基于 SSE 的仪表盘,提供流畅、硬件加速的流量图表。
- 可观测性 – 内置 Prometheus 指标端点和结构化日志。
功能 {#features}
- Icecast2 兼容 – 可与标准源客户端(BUTT、OBS、Mixxx、LadioCast)和播放器(VLC、网页浏览器)一起使用。
- 流中继 – 通过从远程服务器拉取流来充当边缘节点。
- 双协议架构 – 为监听者提供 HTTPS,同时允许旧版编码器通过普通 HTTP 进行流传输。
- 公共目录列表 – 内置对 Icecast YP 协议的支持(例如
dir.xiph.org)。 - 动态管理 – 可随时添加、更新、禁用或删除挂载点、用户和中继。
- IP 封禁 – 可即时阻止恶意 IP 进行流媒体传输或收听。
- 旧版 API – 支持
/status-json.xsl,兼容现有 Icecast 工具。 - 实时播放元数据 – 实时显示从广播软件推送或从中继拉取的歌曲标题。
入门
1. 构建
要求: Go 1.21 或更高。
go build -o tinyice
2. 运行
./tinyice
在 首次运行 时,TinyIce 会生成一个 tinyice.json 文件,其中包含唯一的随机密码。务必从终端输出中复制并保存这些密码!
3. 推流
使用以下设置配置你的编码器(例如 BUTT):
| 设置 | 值 |
|---|---|
| 服务器类型 | Icecast 2 |
| 地址 | your-server-ip |
| 端口 | 8000 |
| 密码 | 生成的源密码 |
| 挂载点 | /live |
现在你可以开始推流了!
命令行用法
./tinyice -host 0.0.0.0 -port 8000 -daemon -log-file tinyice.log
| 选项 | 描述 | 默认值 |
|---|---|---|
-host | 要绑定的网络接口 | 0.0.0.0 |
-port | 监听的端口号 | — |
-config | 配置文件的路径 | — |
-log-file | 日志输出文件的路径 | — |
-log-level | 日志级别:debug、info、warn、error | — |
-json-logs | 启用结构化 JSON 日志 | — |
-daemon | 将程序以后台方式运行 | — |
-pid-file | 写入进程 ID 的文件路径 | — |
性能
请参阅 PERFORMANCE.md 文件以获取详细的硬件和流量估计。
许可证
在 Apache License 2.0 下分发。有关更多信息,请参阅 LICENSE 文件。
由 DatanoiseTV 开发。

