tunecat — минималистичное интернет-радио на Go. Всё максимально просто: закидываешь папку с музыкой, подключаешься к IRC и стримишь. Автор советует начать с генерации самоподписанного сертификата через openssl req -x509 -new -newkey ed25519 -sha256 -nodes -out tunecat.pem -keyout tunecat.pem и зарегистрировать NickServ аккаунт с CertFP. Затем прогнать треки через встроенный скрипт opusify — он перекодирует всё в Opus 128 кбит/с.
Запуск через командную строку: флаги -addr (адрес для прослушивания), -dir (папка с .opus файлами), -irc-addr (адрес IRC-сервера как host:port), -irc-cert (SSL-сертификат и ключ в одном файле), -irc-channels (каналы через запятую), -irc-nick (ник). Автор рекомендует добавить перед tunecat обратный прокси — и всё готово.
Зачем ещё одна такая штука? Во-первых, чистая сборка: никакого FFI, никаких нативных кодеков, только чистый Go — легко деплоить. Во-вторых, легковесность: транскодирования на лету нет, все файлы уже в Opus 128 кбит/с, сервер просто отдаёт поток. Третья фишка — базовая поддержка ICY, так что плееры вроде VLC подхватят стрим без проблем.
Проект вдохновлён MeteorLight и Kirika. Код для постраничного вывода Opus (когда песня делится на маленькие куски) взят из Kirika. tunecat распространяется под лицензией 2-clause BSD.