Музыку можно слушать в десятке готовых сервисов. Поднимать для этого собственный сервер — звучит как типичный случай «я потратил три вечера, чтобы не нажимать одну кнопку».
Отчасти так и есть.
Но личная библиотека и собственное радио дают совсем другой опыт. Это не замена стримингу один в один. Скорее, отдельная среда, которую можно настроить под себя и встроить в портал.
Музыкальная библиотека — это про контроль
Обычный стриминг постоянно меняется.
Альбом исчез. Версия трека заменилась. Обложка другая. Рекомендации снова крутят одно и то же. Ты вроде слушаешь свою музыку, но сама коллекция тебе не принадлежит.
С собственной библиотекой всё проще: файлы лежат у меня, структура каталога моя, метаданные можно поправить, а доступ работает через веб-интерфейс и приложения.
Звучит не так эффектно, как «персональный Spotify». Зато честно.
Радио оказалось намного сложнее
Радио — уже не просто список файлов.
Нужно собирать очередь, управлять воспроизведением, анализировать треки, следить за состоянием потока и отдавать слушателю нормальный интерфейс. Когда всё это разложено на несколько компонентов, система становится гибкой. И одновременно появляется больше мест, где что-то может отвалиться.
Иногда один сервис считает, что трек уже играет, второй ждёт следующую команду, а интерфейс показывает старое состояние. Классика распределённых систем, только вместо банковских транзакций — музыка.
Зато когда всё работает, ощущение отличное. Открываешь страницу — и у тебя реально идёт собственный эфир.
Почему это часть mrgnl.ru
Мне не хотелось делать статью «вот мой проект» и отдельно оставлять сам проект где-то на другом конце интернета.
Портал удобен тем, что объяснение и работающая вещь находятся рядом.
Человек читает, зачем я собрал радио, а потом может открыть его и сразу понять, о чём речь. Для проекта это намного живее, чем галерея скриншотов.
Где self-hosting начинает раздражать
Музыка требует обслуживания.
Нужно следить за библиотекой, обновлять метаданные, пересканировать файлы, проверять место на диске и разбираться, почему очередной трек не обработался.
А ещё домашний сервис никогда не будет настолько безотказным, как крупная платформа с огромной инфраструктурой. Иногда что-то перезапускается. Иногда обновление ломает совместимость. Иногда просто нет желания чинить это вечером.
Это нормальная цена за контроль. Главное — не притворяться, что своей инфраструктурой можно пользоваться совсем без ухода.