Navidrome: свой музыкальный сервер для коллекции FLAC и MP3

Navidrome это лёгкий музыкальный сервер с открытым кодом: вы указываете папку со своей коллекцией, а он даёт веб-плеер и стриминг на телефон, планшет или компьютер по Subsonic-совместимому API. Без подписки и без загрузки треков в чужое облако. Написан на Go, ставится одним бинарником или в Docker, хорошо живёт на домашнем сервере, NAS или VPS рядом с диском с музыкой.

Пошаговая установка с Nginx и HTTPS на домашнем сервере разобрана отдельно, в руководстве в разделе про домашний сервер. Здесь коротко о том, что умеет Navidrome и как его настроить.

Зачем он нужен

Если музыка лежит папками (FLAC, MP3 и остальное), а слушать хочется с телефона в дороге или с ноутбука из другой сети, вариантов немного: стриминговый сервис, ручное копирование файлов или свой сервер. Navidrome это третий путь: один раз указали каталог, дальше у вас библиотека с обложками, плейлистами, поиском и доступом с любого устройства.

Что умеет

  • сканирует каталог и строит библиотеку: исполнители, альбомы, жанры, обложки, теги;
  • играет MP3, FLAC, AAC/M4A, OGG/Opus, WAV и другие форматы, а на лету перекодирует через ffmpeg, если клиент просит меньший битрейт (по умолчанию в Opus);
  • плейлисты, избранное, рейтинги, поиск;
  • несколько пользователей: можно дать доступ семье, не открывая весь диск;
  • отправляет прослушивания в Last.fm и ListenBrainz.

Кроме встроенного веб-плеера работают клиенты Subsonic и OpenSubsonic для Android, iOS и компьютера, например Symfonium, Ultrasonic, play:Sub и Feishin. Полный список на странице приложений.

Свежая версия

Проект живой и обновляется часто. Последний релиз на конец сентября 2026 года это 0.64.2: в нём исправили ошибки «database is locked» и зависания интерфейса при сканировании библиотеки на медленных дисках (USB, сетевые хранилища), а ещё закрыли две проблемы безопасности. Одна из них: пароль администратора больше не попадает в лог, если первого пользователя не удалось создать.

Быстрый старт

Бинарник для Linux, macOS, Windows и FreeBSD и образ Docker есть на сайте и в репозитории. Минимально нужно указать папку с музыкой:

navidrome --musicfolder "/mnt/data/music"

Постоянные настройки удобнее держать в navidrome.toml или в переменных окружения с префиксом ND_, это особенно удобно в Docker. Пример конфига:

MusicFolder = "/mnt/data/music"
DataFolder = "/var/lib/navidrome"
Address = "127.0.0.1"
Port = 4533

# раз в сутки в 4 утра, синтаксис cron
Scanner.Schedule = "0 4 * * *"

# кэш перекодированных треков, по умолчанию 100MB
TranscodingCacheSize = "1500MB"

За автоматическое сканирование в текущих версиях отвечают параметры Scanner.*. Старый ScanSchedule, который часто встречается в старых инструкциях, заменён на Scanner.Schedule с синтаксисом cron. Кроме расписания Navidrome следит за изменениями в папке сам и запускает сканирование через несколько секунд после появления новых файлов. Кэш перекодированных треков задаётся через TranscodingCacheSize, обложек через ImageCacheSize. Кэш стоит увеличить, если часто слушаете с мобильного интернета с пониженным битрейтом.

Веб-интерфейс по умолчанию слушает порт 4533. Первого пользователя, он же администратор, вы создаёте при первом входе, остальные аккаунты заводятся в админке.

Доступ извне через Nginx и HTTPS

Наружу Navidrome лучше не открывать по голому HTTP. Обычная схема: сервис слушает только 127.0.0.1:4533, а перед ним стоит Nginx или Caddy с сертификатом Let’s Encrypt:

server {
    listen 443 ssl;
    http2 on;  # в nginx старше 1.25.1: listen 443 ssl http2;
    server_name music.example.com;

    ssl_certificate     /etc/letsencrypt/live/music.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/music.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 разобрана на странице домашнего сервера.

Кому зайдёт

  • есть NAS, домашний сервер или VPS и своя коллекция музыки;
  • нужен доступ к ней извне без костылей с облачными дисками;
  • важны lossless и полный контроль над файлами;
  • хочется лёгкий сервис, а не тяжёлый медиакомбайн.

Если своей коллекции почти нет и слушаете в основном подборки стриминговых сервисов, свой сервер особого смысла не имеет. Если архив уже собран, Navidrome закрывает задачу «свой стриминг» без лишнего шума.

В итоге Navidrome это один небольшой сервис на Go, который превращает папку с музыкой в личный стриминг с веб-плеером и мобильными клиентами. Для старых инструкций главное поправить конфиг: сканирование теперь настраивается через Scanner.Schedule, а кэш через TranscodingCacheSize.

Источники и ссылки


Комментарии загружаются…