
YouTube Music, «Яндекс Музыка», Spotify, SoundCloud — относительно удобные музыкальные сервисы, но с недостатками:
- плохая работа в офлайне;
- отсутствие поддержки lossless;
- абонентская плата;
- неполная фонотека;
- многое другое...
Их коллекции далеки от полноты. Редких треков вообще нет. Более того, музыка иногда просто пропадает из-за каких-то заморочек с авторскими правами.
К счастью, очень легко организовать стриминг музыки со своего сервера. Хранить всю музыкальную коллекцию у себя на компьютере — зачастую надёжнее, удобнее и дешевле, чем облачный сервис.
Медиасерверы
Начнём с того, что существуют универсальные медиасерверы типа Plex и Jellyfin, которые тоже умеют транслировать медиаконтент (включая музыку) на любые устройства по локальной сети или через интернет.
У Plex есть официальный мобильный клиент Plexamp специально для прослушивания музыки на смартфоне:

Plexamp
Кроме того, для Plex и прочих выпускается много вспомогательных программ, как менеджер контента Overseerr (система рекомендаций, запросы новых фильмов и сериалов), то есть Plex — это целая экосистема контента, в которой можно жить, и там тоже есть платная подписка с премиальными функциями.

Overseerr
Но у таких серверов слишком много лишних функций, и они обычно более тяжеловесны на серверной стороне, поэтому зачастую удобнее использовать простой специализированный софт.
Black Candy
Black Candy — один из множества стриминговых музыкальных серверов на самохостинге.

Начнём с установки VPS. В маркетплейсе RUVDS имеется готовый образ сервера с установленным Docker CE. Проще всего сразу его и поставить, хотя никто не мешает взять совсем дешёвый сервер в минимальной конфигурации и установить Docker самостоятельно.

Образ включает в себя Docker CE 19.03.5 и Docker Compose 1.25.0 под Ubuntu 18.04. Софт настроен в соответствии с официальными рекомендациями.
Как обычно, установка системы занимает несколько минут, после чего сервер готов к работе. Сразу после оформления заказа выделяется статический IP-адрес, логин и пароль для авторизации SSH.
Запускаем SSH-клиент PuTTY…

… подключаемся к серверу…

… и устанавливаем контейнер Black Candy:
docker run -p 3000:3000 ghcr.io/blackcandy-org/blackcandy:latest

Как вариант, можно загрузить контейнер с репозитория Docker Hub:
docker run -p 3000:3000 blackcandy/blackcandy:latest
Это всё, теперь сервер доступен из браузера на хосте по адресу
http://localhost:3000
или через интернет по адресу http://IP_сервера:3000
, в нашем случае http://195.133.48.189:3000
, имя пользователя по умолчанию admin@admin.com
, пароль foobar
. Разумеется, учётные данные лучше поменять в настройках.
Демо-версию сервера см. на сайте demo.blackcandy.org, логин и пароль такие же, как указано выше.

На вкладке «Библиотека» (Library) можно просмотреть все альбомы, музыкантов, плейлисты и песни, которые есть в фонотеке. Картинки альбомов подтягиваются через Discogs API, надо получить там токен и указать его в настройках.

В правом верхнем углу кнопка для доступа к настройкам Black Candy:

Приведём некоторые параметры, которые можно указать в командной строке при запуске сервера.
Следующая команда позволяет примонтировать папку с медиафайлами в контейнер и устанавливает для Black Candy переменную окружения
MEDIA_PATH
с путём к файлам.docker run -v /media_data:/media_data -e MEDIA_PATH=/media_data ghcr.io/blackcandy-org/blackcandy:latest
Эта опция присутствует и в настройках через GUI. Нужно просто скопировать на сервер папку с файлами и примонтировать её.
Кроме
MEDIA_PATH
, есть ещё несколько переменных окружения, в том числе FORCE_SSL
для принудительного включения SSL, а также DB_ADAPTER
и DB_URL
для выбора СУБД.По умолчанию Black Candy устанавливает SQLite как более простую СУБД для маленького сервера. Но если SQLite недостаточно или мы размещаемся у какого-то специфического хостинг-провайдера, то можно использовать PostgreSQL:
docker run -e DB_ADAPTER=postgresql -e DB_URL=postgresql://yourdatabaseurl ghcr.io/blackcandy-org/blackcandy:latest
Для сохранения всех данных и рабочих файлов Black Candy из
/app/storage
в постоянном хранилище можно создать отдельную директорию и примонтировать туда /app/storage
:mkdir storage_data
docker run -v ./storage_data:/app/storage ghcr.io/blackcandy-org/blackcandy:latest
Для комфортного прослушивания фонотеки на смартфонах есть нативные клиенты Black Candy под Android и iOS. Хотя в принципе сервер нормально доступен из браузера, как указано выше.
В приложении указываем IP-адрес сервера (с портом), логин и пароль — и получаем доступ к фонотеке.
По умолчанию сервер Black Candy выполняет автоматическое транскодирование музыки в lossy-формат 128 Кбит/с для экономии трафика, но это можно изменить в настройках.
Другие стриминг-серверы
Кроме Black Candy, существует множество других серверов для музыки со стримингом, в том числе опенсорсных. Среди них можно упомянуть Subsonic (с десятками приложений для Android, iPhone, Windows Phone, Mac, Chrome), Navidrome, Icecast, Snapcast, Koel, OwnTone, Lyrion Music Server и др.
Например, Snapcast специализируется на двустороннем синхронном стриминге с поддержкой множества разных клиентов. Двусторонний стриминг означает, что звук снимается с клиентов, синхронизируется на сервере — и передаётся остальным. Несколько клиентов могут транслировать звук одновременно друг с другом:

Архитектура Snapcast
Navidrome отличается очень низким потреблением ресурсов, работает даже на слабеньких «малинках» или старых мобильных телефонах Android, без тормозов обрабатывает большие музыкальные коллекции и любые аудиоформаты, поддерживает транскодирование на лету и пр. Можно использовать как портативный плеер или как сервер для трансляции на другие устройства, демо.

Сервер Navidrome

Клиенты Navidrome
Есть даже такие экзотические варианты, как Musikcube: аудиоплеер и медиасервер с текстовым интерфейсом, работающий из консоли:

Не забываем и Music Player Daemon (MPD), классический музыкальный сервер/плеер под Linux.
Медиасервер на смартфоне
В качестве альтернативы всему вышеперечисленному, можно организовать музыкальный стриминговый сервер на старом Android-смартфоне. В описании по ссылке приведена пошаговая инструкция и код, проверено на Samsung Galaxy S7, но сработает и на других смартфонах, куда можно поставить LineageOS и Termux.
Использовались следующие инструменты:
- LineageOS с последующим удалением всех лишних компонентов, чтобы освободить максимум памяти для сервера;
- Termux, Termux:Services, Termux:Boot;
- сервер Navidrome, упомянутый выше в числе лучших серверов для стриминга;
- ssh + sftp через OpenSSH;
- Dynamic DNS через Cloudflare.
Можно ещё использовать приложение scrcpy, которое умеет дистанционно управлять Android-устройствами (видео, аудио), в том числе по TCP/IP, то есть через интернет, что очень удобно.
Среди функций:
- переадресация аудио (Android 11+);
- аудио- и видеозапись;
- виртуальный дисплей;
- дистанционная работа на смартфоне с выключенным экраном;
- копипаст в обоих направлениях;
- настройка качества видео;
- трансляция камеры (Android 12+);
- работа в качестве веб-камеры (V4L2) (только под Linux);
- имитация физической клавиатуры и мыши (HID);
- поддержка геймпада;
- режим OTG;
- и др.
То есть можно дистанционно запустить на смартфоне плеер на воспроизведение музыки.
Утилита работает под Linux, Windows и macOS.
▍ Итоги
Благодаря своему серверу или VPS получается отличная альтернатива «Яндекс Музыке» — более продвинутая, с лучшей фонотекой. И бесплатно, если не считать амортизации сервера или оплаты VPS. Но учитывать такую плату не совсем справедливо, потому что тот же сервер у нас используется для десятка других применений: резервное копирование, управление умным домом, скачивание торрентов, частный VPN и многое другое, поэтому музыкальный стриминг идёт просто бонусом.
Вместо стриминга музыки можно просто синхронизировать MP3-файлы между клиентами и сервером с помощью Syncthing или другого инструмента синхронизации. Если библиотека небольшая (до нескольких десятков гигабайт), то это тоже хороший вариант. В любом случае файлы остаются под нашим контролем, а музыка всегда доступна в офлайне.
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
