Navidrome на Ubuntu 24.04: пошаговая установка
Если у вас за годы накопилась своя коллекция музыки — FLAC с концертов, редкие альбомы, которых нет в стримингах, или просто принципиальное нежелание платить за подписку и слушать рекомендации алгоритма — Navidrome решает эту задачу без компромиссов. Это open-source музыкальный сервер, который превращает папку с файлами на вашем VPS в полноценный стриминговый сервис с веб-плеером, мобильными приложениями и умными плейлистами. Ниже — установка с нуля на чистом Ubuntu 24.04, от systemd-сервиса до HTTPS и клиентов на телефоне.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Navidrome и чем он лучше альтернатив
Navidrome написан на Go, работает как один бинарник без базы данных вроде MySQL или PostgreSQL (внутри — SQLite), потребляет мало памяти и запускается за секунды. Он реализует Subsonic API — стандарт, под который уже 15 лет пишут клиенты для Android, iOS, Windows, macOS и Linux, так что вам не придётся ждать, пока разработчик Navidrome сделает официальное приложение: подключаете любой Subsonic-совместимый клиент и слушаете.
По сравнению с соседями по нише у Navidrome своя ниша:
- Jellyfin — универсальный медиасервер (видео + музыка), тяжелее, музыкальный модуль там вторичен. Если нужен именно аудио-стриминг, Navidrome отзывчивее и проще в настройке — сравнение подходов есть в статье про Jellyfin и Plex.
- Airsonic/Subsonic — старее, на Java, требует больше ресурсов и обновляется куда реже.
- Plex — удобен, но настаивает на аккаунте и облачной авторизации даже для локального доступа.
Navidrome — почти без зависимостей, открытый исходный код, активная разработка и минимальные требования к железу: с библиотекой в несколько тысяч треков хватит 1 vCPU и 1 ГБ RAM, транскодирование на лету добавляет нагрузку, но некритично.
Подготовка сервера
Понадобится VPS с Ubuntu 24.04, доступ по SSH (лучше — по ключу, а не паролю) и домен, если планируете HTTPS и внешний доступ с телефона. Обновите систему и поставьте базовые зависимости:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget ffmpeg unzip
ffmpeg обязателен — без него Navidrome не сможет транскодировать треки на лету (например, отдавать FLAC как MP3 на медленном мобильном интернете) и не построит waveform-превью.
Создайте отдельного системного пользователя — сервис не должен работать от root:
sudo useradd -r -m -d /var/lib/navidrome -s /usr/sbin/nologin navidrome
sudo mkdir -p /etc/navidrome /var/lib/navidrome/music
sudo chown -R navidrome:navidrome /var/lib/navidrome
Папку /var/lib/navidrome/music можно оставить как есть, если планируете закачивать файлы напрямую, либо примонтировать туда отдельный диск или сетевое хранилище — зависит от объёма коллекции.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка Navidrome как systemd-сервиса
Официальный способ для голого сервера — скачать статический бинарник с GitHub Releases. Скрипт ниже сам находит последнюю версию под архитектуру amd64 (для ARM-серверов замените linux_amd64 на linux_arm64):
cd /tmp
LATEST_URL=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest \
| grep "browser_download_url.*linux_amd64.tar.gz" \
| cut -d '"' -f 4)
wget -O navidrome.tar.gz "$LATEST_URL"
tar -xzf navidrome.tar.gz
sudo mv navidrome /usr/local/bin/navidrome
sudo chmod +x /usr/local/bin/navidrome
navidrome -v
Если последняя команда вывела версию — бинарник рабочий. Точный номер релиза меняется со временем, поэтому не полагайтесь на конкретную цифру из чужих статей — берите актуальную с официальной страницы релизов.
Теперь systemd-юнит /etc/systemd/system/navidrome.service:
[Unit]
Description=Navidrome Music Server
After=network.target
[Service]
User=navidrome
Group=navidrome
Type=simple
ExecStart=/usr/local/bin/navidrome --configfile /etc/navidrome/navidrome.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Запустите позже, после того как создадите конфиг — иначе сервис упадёт при старте, не найдя файл.
Конфигурация: navidrome.toml
Создайте /etc/navidrome/navidrome.toml:
Address = "127.0.0.1"
Port = 4533
MusicFolder = "/var/lib/navidrome/music"
DataFolder = "/var/lib/navidrome/data"
LogLevel = "info"
EnableTranscodingConfig = true
ScanSchedule = "@every 1h"
BaseUrl = ""
Ключевые параметры:
| Параметр | Что делает |
|---|---|
Address | Слушать только localhost — доступ будет только через Nginx |
MusicFolder | Путь к вашей коллекции |
DataFolder | Где хранится SQLite-база с метаданными, обложками, плейлистами |
ScanSchedule | Как часто сканировать библиотеку на новые файлы (формат cron или @every) |
EnableTranscodingConfig | Разрешает настраивать профили транскодирования из веб-интерфейса |
Создайте папку для данных и права:
sudo mkdir -p /var/lib/navidrome/data
sudo chown -R navidrome:navidrome /var/lib/navidrome /etc/navidrome
sudo systemctl daemon-reload
sudo systemctl enable --now navidrome
sudo systemctl status navidrome
Если статус active (running) — сервис поднялся. Логи при проблемах смотрите через journalctl -u navidrome -f.
Загрузка музыки и организация библиотеки
Navidrome сам строит структуру каталога по тегам ID3/FLAC-метаданных (артист, альбом, год, обложка), поэтому вручную раскладывать файлы по папкам «Артист/Альбом» не обязательно — но крайне желательно для стабильного результата: программа-сканер лучше работает, когда теги полные и обложка лежит рядом файлом cover.jpg или встроена в файл.
Залить коллекцию можно несколькими способами:
# с локальной машины через rsync
rsync -avz --progress ~/Music/ user@your-server-ip:/var/lib/navidrome/music/
# или scp для разовой заливки
scp -r ~/Music/* user@your-server-ip:/var/lib/navidrome/music/
Если музыка лежит в облаке (Google Drive, Яндекс.Диск, S3-совместимое хранилище), удобнее настроить rclone и синхронизировать коллекцию по расписанию — не придётся вручную перезаливать файлы при каждом добавлении альбома.
После заливки файлов Navidrome подхватит их по расписанию из ScanSchedule, либо запустите сканирование вручную из веб-интерфейса (кнопка Scan в углу) или через API:
curl -X POST http://127.0.0.1:4533/api/scanner/scan
Первый вход — по адресу http://ваш-ip:4533 (пока без Nginx), где нужно создать администратора: логин и пароль задаются при первом заходе, отдельного дефолтного пароля нет.
Nginx как reverse proxy и HTTPS
Открывать порт 4533 напрямую в интернет не стоит — правильнее спрятать Navidrome за Nginx как reverse proxy с TLS-терминацией. Установите Nginx и создайте конфиг /etc/nginx/sites-available/navidrome:
server {
listen 80;
server_name music.example.com;
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;
# для стриминга больших FLAC-файлов
proxy_buffering off;
proxy_read_timeout 300s;
}
}
Активируйте сайт и получите сертификат через Let's Encrypt:
sudo ln -s /etc/nginx/sites-available/navidrome /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d music.example.com
Certbot сам допишет listen 443 ssl и настроит редирект с HTTP на HTTPS. Не забудьте открыть порты в файрволе — если используете UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Настройка UFW с нуля подробно разобрана в отдельной статье про файрвол на Ubuntu 24.04, если ещё не закрывали сервер.
Мобильные и десктопные клиенты
Главное преимущество Subsonic API — выбор клиентов, а не привязка к одному приложению:
- Android: Symfonium (платный, но самый функциональный), Ultrasonic (бесплатный, open-source), play:Sub.
- iOS: Amperfy (open-source), play:Sub, iSub.
- Desktop: веб-интерфейс Navidrome работает прямо в браузере и покрывает большинство сценариев; для нативного приложения — Sonixd или Feishin (Windows/macOS/Linux, поддерживают Subsonic API).
В любом клиенте при подключении укажите:
- Server URL:
https://music.example.com - Username / Password: учётная запись, созданную в веб-интерфейсе Navidrome (не путать с системным пользователем
navidrome— это два разных аккаунта)
Некоторые клиенты просят выбрать протокол API — ставьте Subsonic, у Navidrome отдельного «родного» API нет и не планируется, разработчики сознательно держат совместимость с уже сложившейся экосистемой.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Navidrome поддерживает несколько пользователей с раздельными плейлистами?
Да, из коробки — создавайте аккаунты в разделе Users веб-интерфейса, у каждого своя история прослушивания, плейлисты и избранное, но общая библиотека файлов.
Можно ли слушать без интернета?
Сам Navidrome — только стриминг, офлайн-кеш реализуют клиентские приложения (например, Symfonium умеет скачивать треки локально на телефон).
Что делать, если новые файлы не появляются в библиотеке?
Проверьте права на папку (chown -R navidrome:navidrome /var/lib/navidrome/music) и запустите принудительное сканирование через API или кнопку Scan — по умолчанию Navidrome сканирует раз в час, а не мгновенно.
Транскодирование грузит процессор — как снизить нагрузку?
Настройте профили транскодирования в веб-интерфейсе (Settings → Transcoding) под более низкий битрейт, либо слушайте оригинал без транскодирования при хорошем канале — на слабом VPS транскодирование нескольких потоков FLAC одновременно ощутимо нагружает CPU.
Чем Navidrome отличается от простого файлового шаринга через WebDAV?
Navidrome индексирует метаданные, строит правильную структуру «артист → альбом → трек», считает статистику прослушиваний, отдаёт обложки и генерирует умные плейлисты (Smart Playlists по правилам) — просто файловый доступ этого не даёт.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →