Музыку можно слушать в десятке готовых сервисов. Поднимать для этого собственный сервер — звучит как типичный случай «я потратил три вечера, чтобы не нажимать одну кнопку».

Отчасти так и есть.

Но личная библиотека и собственное радио дают совсем другой опыт. Это не замена стримингу один в один. Скорее, отдельная среда, которую можно настроить под себя и встроить в портал.

Музыкальная библиотека — это про контроль

Обычный стриминг постоянно меняется.

Альбом исчез. Версия трека заменилась. Обложка другая. Рекомендации снова крутят одно и то же. Ты вроде слушаешь свою музыку, но сама коллекция тебе не принадлежит.

С собственной библиотекой всё проще: файлы лежат у меня, структура каталога моя, метаданные можно поправить, а доступ работает через веб-интерфейс и приложения.

Звучит не так эффектно, как «персональный Spotify». Зато честно.

Радио оказалось намного сложнее

Радио — уже не просто список файлов.

Нужно собирать очередь, управлять воспроизведением, анализировать треки, следить за состоянием потока и отдавать слушателю нормальный интерфейс. Когда всё это разложено на несколько компонентов, система становится гибкой. И одновременно появляется больше мест, где что-то может отвалиться.

Иногда один сервис считает, что трек уже играет, второй ждёт следующую команду, а интерфейс показывает старое состояние. Классика распределённых систем, только вместо банковских транзакций — музыка.

Зато когда всё работает, ощущение отличное. Открываешь страницу — и у тебя реально идёт собственный эфир.

Почему это часть mrgnl.ru

Мне не хотелось делать статью «вот мой проект» и отдельно оставлять сам проект где-то на другом конце интернета.

Портал удобен тем, что объяснение и работающая вещь находятся рядом.

Человек читает, зачем я собрал радио, а потом может открыть его и сразу понять, о чём речь. Для проекта это намного живее, чем галерея скриншотов.

Где self-hosting начинает раздражать

Музыка требует обслуживания.

Нужно следить за библиотекой, обновлять метаданные, пересканировать файлы, проверять место на диске и разбираться, почему очередной трек не обработался.

А ещё домашний сервис никогда не будет настолько безотказным, как крупная платформа с огромной инфраструктурой. Иногда что-то перезапускается. Иногда обновление ломает совместимость. Иногда просто нет желания чинить это вечером.

Это нормальная цена за контроль. Главное — не притворяться, что своей инфраструктурой можно пользоваться совсем без ухода.

Продолжение темы: DJ Aiban, Spotify и общий хаб Хоумлаб.