Navidrome – лёгкий open source музыкальный сервер: своя коллекция файлов, веб-интерфейс, стриминг по Subsonic-совместимому API на телефон, планшет или десктоп. Без подписки и без отдачи треков чужому облаку. Удобен на домашнем Linux-сервере или VPS рядом с медиатекой на диске.
Зачем он нужен
Если музыка лежит папками (FLAC, MP3 и остальное), а слушать хочется с телефона в дороге или с ноутбука в другой сети, варианты обычно такие: облачный стриминг, ручное копирование или свой сервер. Navidrome – второй путь: один раз указали каталог с музыкой, дальше библиотека, обложки, плейлисты и клиенты.
Пошаговая установка с Nginx и HTTPS на домашнем сервере разобрана отдельно: руководство в разделе про домашний сервер.
Что умеет
Форматы
- MP3 – компактно, универсально;
- FLAC – lossless для архива коллекции;
- AAC / M4A – баланс качества и размера;
- OGG / Opus – открытые кодеки;
- WAV / AIFF и другие, которые понимает встроенный стек (для редких контейнеров смотрите актуальный список в документации).
Библиотека и веб-UI
- сканирование каталога, артисты, альбомы, жанры;
- плейлисты и избранное;
- поиск и фильтры;
- работа с метаданными и обложками;
- несколько пользователей (раздача доступа семье без расшаривания всего диска).
Клиенты
Помимо встроенного веб-плеера работают Subsonic/OpenSubsonic-клиенты на Android, iOS, десктопе (Symfonium, Ultrasonic, play:Sub, Feishin и другие). Один сервер – много оболочек под задачу.
Быстрый старт
Бинарник или Docker – с официального сайта и репозитория. Минимально нужно указать папку с музыкой и data-каталог для БД и кэша.
Запуск с явным music folder:
navidrome --musicFolder="/mnt/data/music"
Часть настроек удобнее держать в navidrome.toml (или переменных окружения в Docker). Примеры:
MusicFolder = "/mnt/data/music" DataFolder = "/var/lib/navidrome" ScanSchedule = "@every 24h" # размер кэша транскодинга/артефактов - подстройте под диск CacheSize = "1500MB" Address = "127.0.0.1" Port = 4533
ScanSchedule задаёт периодическое сканирование новых файлов. Кэш имеет смысл увеличить, если часто слушаете с транскодингом в более лёгкий битрейт для мобильного интернета.
Первый пользователь создаётся при первом входе в веб-UI (по умолчанию порт 4533). Дальше можно завести остальные аккаунты в админке.
Доступ извне через Nginx и HTTPS
Наружу Navidrome лучше не светить «голым» HTTP. Типичная схема: systemd/Docker слушает localhost:4533, спереди Nginx (или Caddy) с Let’s Encrypt.
server {
listen 443 ssl http2;
server_name music.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:4533;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
}
}
proxy_buffering off важен для стриминга: иначе Nginx может буферизовать ответ и портить воспроизведение. Сертификаты – certbot или другой ACME-клиент. Подробный разбор связки Navidrome + Nginx + HTTPS: на странице домашнего сервера.
Last.fm и ListenBrainz
В настройках пользователя или сервера можно включить scrobbling в Last.fm и ListenBrainz. История прослушиваний уходит в привычную статистику, коллекция при этом остаётся у вас на диске.
Кому зайдёт
- есть NAS/VPS и терабайты своей музыки;
- нужен доступ извне без Google Drive-костылей;
- важны lossless и контроль над файлами;
- хочется лёгкий сервис на Go, а не тяжёлый стек «как у корпоративного медиа».
Если коллекции почти нет и слушают только редакционные плейлисты Spotify/Yandex Music, смысл своего сервера минимальный. Если архив уже собран – Navidrome закрывает задачу «свой стриминг» без лишнего шума.
