TinyIce:单二进制 Icecast2 兼容服务器(自动 HTTPS,多租户)

发布: (2026年2月18日 GMT+8 14:00)
5 分钟阅读

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

TinyIce dashboardTinyIce player
DashboardPlayer

Badges

Go Report Card
License: Apache 2.0

为什么选择 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日志级别:debuginfowarnerror
-json-logs启用结构化 JSON 日志
-daemon将程序以后台方式运行
-pid-file写入进程 ID 的文件路径

性能

请参阅 PERFORMANCE.md 文件以获取详细的硬件和流量估计。

许可证

Apache License 2.0 下分发。有关更多信息,请参阅 LICENSE 文件。

DatanoiseTV 开发。

0 浏览
Back to Blog

相关文章

阅读更多 »

EDuke32 – Duke Nukem 3D(开源)

是时候大干一场、嚼口香糖了,我的口香糖已经用完! Polymer renderer screenshot/images/shots/polymer2.jpg 每像素动态光照和实时阴影……