Как стримить собственную фонотеку без подписок с помощью Polaris
Стриминговые сервисы приучили нас к удобству, но у них есть неприятное свойство: любимые треки внезапно исчезают из каталогов из-за споров по авторским правам, а подписки дорожают. Если у вас на жестком диске или домашнем сервере пылятся гигабайты FLAC и MP3, собранные за долгие годы, таскать их на флешках неудобно. Хочется иметь собственный стриминг, который работает везде и не требует ежемесячной платы.
На днях я наткнулся на Polaris — легковесный селфхост-сервер для потоковой передачи музыки, написанный на Rust. Без платных тарифов, урезанных версий и перегруженных интерфейсов.
Что умеет Polaris
Главный фокус автора проекта — отзывчивость и способность переваривать по-настоящему огромные медиатеки. В описании заявляется уверенная работа с коллекциями от 100 000 треков.
В отличие от тяжеловесных комбайнов вроде Plex или Jellyfin, Polaris сосредоточен исключительно на звуке:
- Читает форматы flac, mp3, mp4, mpc, ogg, opus, ape, wav и aiff.
- Рендерит визуализацию звуковой волны прямо в плеере, чтобы можно было быстро прыгнуть к нужному моменту трека.
- Поддерживает мультизначные теги в метаданных, когда у одного трека указано несколько исполнителей или жанров.
- Умеет отображать фонотеку как по тегам (артист, альбом, жанр), так и в виде привычного дерева папок на диске. Это спасает, если теги в старых релизах заполнены как попало.
- Имеет поиск по конкретным полям метаданных.
- Поддерживает разделение на пользователей с индивидуальными плейлистами для каждого.
Приятная мелочь: интерфейс поддерживает темную тему и кастомизацию цветовой палитры.
Под капотом
Polaris написан на Rust, благодаря чему потребляет минимум системных ресурсов и быстро отдает статику со стримом. Для настройки не нужно разбираться со сложными базами данных: конфигурация хранится в обычном текстовом файле, но при желании ее можно править прямо из веб-интерфейса.
Разработчики сделали серверный API полностью открытым и задокументировали его через OpenAPI. Любая копия Polaris локально поднимает интерактивный Swagger по адресу /api-docs/, так что писать свои клиенты или автоматизации здесь предельно просто.
Полноценные клиенты, кстати, уже есть. Помимо веб-интерфейса, доступны:
- Официальный клиент для Android (доступен в Google Play и F-Droid).
- Стороннее приложение Polarios для iOS.
- Клиент Polarity для встраиваемых систем и десктопа.
Как запустить
Сервер собирается под Linux, Windows и BSD, но проще всего поднять его через Docker. Базовый docker-compose.yml выглядит лаконично:
version: "3"
services:
polaris:
image: agersant/polaris:latest
container_name: polaris
ports:
- "5050:5050"
volumes:
- /path/to/your/music:/music:ro
- /path/to/polaris/data:/var/lib/polaris
restart: unless-stopped
После запуска интерфейс доступен на порту 5050. Останется задать пароль администратора и указать директорию со звуковыми файлами. Polaris быстро проиндексирует треки в фоновом режиме.
Если лень сразу разворачивать контейнер, разработчик держит открытое демо на demo.polaris.stream (логин: demo_user, пароль: demo_password), где собраны треки под лицензиями Creative Commons.
Кому проект пригодится
Polaris подойдет тем, кто держит домашний сервер на слабом железе (вроде Raspberry Pi или старого неттопа) и ищет быстрый плеер без лишнего груза вроде транскодирования 4K-видео. Если вам нужен чистый звук, мгновенный отклик и полный контроль над своими файлами, этот инструмент определенно стоит добавить в закладки.
