TinyIce — 軽量Icecast互換オーディオストリーミングサーバー

Tool

概要

TinyIceは、数秒で動くIcecast互換のオーディオストリーミングサーバーです。Goで実装されており、単一のバイナリでセルフコンテインに配布できることを目標にしています。複数のmountpointや複数ソースの同時受付、他のIcecastサーバーへのリレー(中継)をサポート。管理者・リスナー向けのモダンなWeb UIを備え、TLSやセキュリティのベストプラクティスを意識して設計されています。軽量でパフォーマンスに配慮した実装のため、低レイテンシなオーディオ配信用途に向いています。

GitHub

リポジトリの統計情報

  • スター数: 60
  • フォーク数: 0
  • ウォッチャー数: 60
  • コミット数: 30
  • ファイル数: 14
  • メインの言語: Go

主な特徴

  • Icecast2互換プロトコルの実装(マウントポイント・ソース認証対応)
  • 複数マウントポイント、複数ソースの同時管理とリレー(中継)機能
  • モダンな管理用Web UIとリスナー向けプレイヤー、TLS対応
  • 単一バイナリで配布可能、パフォーマンス指向のGo実装とベンチマーク資料

技術的なポイント

TinyIceはGoの並行処理モデル(goroutineとチャネル)を活かし、接続ごとに効率的なハンドリングを実現しています。ストリームはHTTPベースのIcecast互換プロトコルで扱われ、ソース(配信者)から受け取ったオーディオデータを内部でバッファリングし、複数のリスナーに同時配信します。バッファ管理やバックプレッシャーの設計により、遅いクライアントが高速な配信を阻害しないよう工夫されています。

セキュリティ面ではTLS対応と認証機構を備え、管理インターフェースやソース登録時に適切な認可を行います。設定はコマンドラインや環境変数で調整可能で、Makefileによりビルドやテスト、コンテナ準備が容易です。パフォーマンス検証用のPERFORMANCE.mdがあり、実運用を想定した負荷試験やメモリ・CPU特性の情報も提供されています。

さらにリレー機能により、TinyIceは上流/下流のIcecastサーバーと接続してストリームを中継できます。これは可用性向上や負荷分散、地理的な配信改善に有効です。内部ロギングやメトリクス(必要に応じてPrometheus等と連携可能)も想定された設計で、運用監視の導入も容易です。ソースの同時接続管理やマウントごとの設定分離により、複数番組の共存がしやすくなっています。

全体として、TinyIceは「小さく、速く、セキュアに」を意識した実装であり、自己完結型のストリーミングサーバーを手早く立ち上げたい開発者や小規模配信に適した選択肢を提供します。ただしREADMEにある通り独立監査は受けておらず、本番導入時は慎重な評価と追加のセキュリティ検証が推奨されます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir
  • .gitignore: file
  • LICENSE: file
  • Makefile: file
  • PERFORMANCE.md: file
  • README.md: file
  • cmd/: dir(エントリポイント)
  • internal/: dir(コアロジック)
  • web/: dir(Web UI資産)
  • config.example.yaml: file
  • go.mod: file
  • main.go: file
  • assets/: dir
  • docker/: dir

…他 9 ファイル

(上記は代表的な構成で、コアのHTTPハンドラ、ストリーム管理、認証、リレー処理、静的Web資産などがディレクトリごとに整理されています。)

まとめ

シンプルで高速、Icecast互換の軽量ストリーミングサーバー。

リポジトリ情報:

READMEの抜粋:

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.

<img width=“3024” height=“2052” alt…