Как стримить музыку c домашнего сервера
Говорят, хочешь сделать хорошо — сделай это сам. Здесь я предлагаю вариант того, как это можно реализовать.
Зачем это всё
Привет VC! Юзая различные музыкальные сервисы, будь то Apple Music, Spotify или Яндекс.Музыку в триальном режиме, каждый раз наблюдал одну и ту же ситуацию:
- Нет всех нужных исполнителей / песен
- Нет последних версий альбомов, будь то ремастеры или переиздания
- Попадались довольно хреновые сканы обложек в низком разрешении
- Попадались неправильные теги песен, с ошибками
Да, видимо, я один из тех динозавров, кто предпочитает слушать музыку альбомами, а не отдельными треками, аналогично тому, как это делают с винилом.
В любом случае, после начала "СВО" дела со стримингом совсем пошли по... наклонной, и это трудно не заметить. То сервис оплалить невозможно, то правообладатель забрал и до этого немногочисленный контент. С этим нужно было что-то делать.
Что делать
Для себя нашёл почти идеальный вариант, не без минусов, но всё же. Домашний сервер + Plex Media Server + ZeroTier + Собственная фонотека. Обязательным условием поставил возможность прослушивания с мобилки.
Домашним сервером может быть практически любой пк на любой ос, либо NAS устройство, либо даже смарт тв. В моём случае, это старый Apple TV с накатанным поверх Debian 11 и ещё парой плюшек на питоне для скачивания фонотеки/медиаархива. Подробнее здесь.
Plex Media Server собсно и рулит всем процессом. По сути, это просто красивая веб-оболочка, наподобии Osmc. Конечно, чисто технически можно и через smb заходить и слушать, но кому это надо? Еще о Plex.
ZeroTier бомбический сервис, твой личный внутренний vpn. Он будет нужен для доступа к веб-версии по статичному ip откуда угодно, даже в случае падения основного сервера plex.tv. Из аналогов вспоминается Hamachi. Как построить сеть.
Сборка фонотеки займет кучу времени. Нужно вручную, конечно же, покупать лицензионные диски и делать рипы, либо купить у с тех же стримингов, либо из дРуГиХ источников. Можно сразу рипать/скачивать во flac и кидать на сервер. Но, лично мне, удобнее конвертировать в mp3, ибо винт всего в 500 гигов.
Чаще всего теги уже прописаны, но стандартов нет. Где-то, например, всё капсом пишут (привет RAMMSTEIN). Поправить это и залить правильные хэдэ обложки можно через mp3tag. Кстати Plex тоже может подтянуть теги и добавить описание группы.
Как делать
Ввиду огромнейшего разнообразия оборудования, да и просто, чтобы не запутаться, я опишу установку всех приблуд только на сервер с Ubuntu или Debian. Версии Plex Media Server для остальных платформ можно взять отсюда.
Заходим через ssh подключение. Копируем в терминал сервера:
Нужно убедиться, что сервер работает. Вводим:
Идем в браузер по пути http://"локальный ip сервера":32400/web и регаемся любым удобным способом.
Теперь идём в настройки аккаунта и добавляем свою библиотеку с музыкой, фото или видео.
Атлична! Теперь настроим адекватное сканирование контента. Ставим галочки напротив пунктов:
- Сканировать библиотеку автоматически
- Запустить выборочное сканирование при обнаружении изменений
- Включить музыкальные библиотеки в автоматическое обновление
- Автоматически очищать корзину после каждого сканирования
- Запуск задач сканера с более низким приоритетом
Нужно будет подождать, пока Plex всё отсканирует. Чтобы время зря не терять, установим ZeroTier через snap:
Теперь идём на официальный сайт, делаем аккаунт, логинимся и жмём "Create network". Копируем Network ID.
Возвращаемся в консоль сервера и пишем код снизу. ID ставим свой. По итогу появится сообщение "200 join OK":
Также необходимо установить ZeroTier на все машины и телефоны, с которых Вам нужен доступ к серверу, залогиниться и присоединиться к сети с вашим ID. После идём обратно в браузер и кликаем на Network ID. В открывшемся окне можно изменить имя сети и приватность подключения.
Далее нужно прокрутить чуть ниже до графы Advanced. В разделе IPv4 Auto-Assign ставим галочку, жмем Easy и выбираем любой приятный глазу пул ip адресов.
Идем ещё ниже, до графы Members. Видим здесь все наши устройства, включая сервер. Всё, что осталось — поставить галочки в колонке Auth и запомнить/записать ip сервера в колонке Managed IPs. По желанию можно прописать имя и описание для удобства.
Всё! Теперь сервер и Plex вместе с ним всегда будет доступен по адресу http://10.147.17.5:32400/web
Лично мне, нравится, но есть нюанс. В iOS версии имеется ограничение стриминга в 1 минуту, неважно видео это или аудио. По началу каеф обламывает. Фулл обойдется в $5.99, единоразовым платежом. Конечно, там имеется и подписка. В данном случае смысла не вижу в ней. Возможно на Android есть альтернативные народные сборки, но вопрос этот не уточнял.
Итог
Конечно, здесь не панацея, и у схемы есть слабые места. Но могу сказать, что всё работает. С именно той музыкой, что нужна.
Всем добра и позитива)
P.S. Знаете как сделать лучше? Пишите в комменты, подумаем вместе)
P.P.S. Plex — здоровенный медиакомбайн, и в рамках темы я не касался остального функционала. Возможно сделаю это позже)