Navidrome — свой музыкальный стриминговый сервер на DietPi
Ввиду недавних изменений на стриминговых платформах, давно хотел иметь свою собственную музыкальную библиотеку, к которой можно получить доступ с любого устройства. У меня конечно уже стоит Jellyfin, но хотелось отдельного решения для музыки. Остановился на Navidrome.
Почему Navidrome?
Navidrome — это лёгкий и быстрый сервер для стриминга музыки с поддержкой Subsonic API. Написан на Go, использует SQLite в качестве базы данных и потребляет минимум ресурсов.
- Лёгкость — написан на Go, потребляет мало RAM и CPU
- Subsonic API — совместим с большинством клиентов Subsonic
- Поддержка тегов — автоматически сканирует и индексирует метаданные
- Транскодинг — встроенная поддержка FFmpeg
- Веб-интерфейс и мобильные клиенты
- Мультипользовательский режим — можно создать аккаунты для семьи
Что нам понадобится
Установка Navidrome на DietPi
Шаг 1: Установка через dietpi-software
DietPi имеет встроенную поддержку Navidrome через dietpi-software. Запускаем:
dietpi-software
В меню выбираем Navidrome. Мастер автоматически:
Шаг 2: Настройка после установки
После установки Navidrome будет доступен по адресу:
http://<IP-сервера>:4533
Первый созданный пользователь автоматически получит права администратора.
Шаг 3: Добавление музыки
По умолчанию Navidrome ищет музыку в директории /mnt/dietpi_userdata/navidrome/music, но в интерфейсе можно будет добавить и свою библиотеку или в конфиге /mnt/dietpi_userdata/navidrome/navidrome.toml поменяйте путь:
MusicFolder = "/mnt/external/music"
на свою папку , она станет вашей основной библиотекой.
После изменения конфига перезапустите сервис:
dietpi-services restart navidrome
Шаг 4: Проверка статуса
dietpi-services status navidrome
В ответе должно быть active (running).
Настройка Nginx в качестве reverse proxy
Если вы хотите использовать доменное имя и HTTPS, нужно настроить reverse proxy. На DietPi это можно сделать через встроенную утилиту.
Шаг 1: Устанавливаем Nginx
dietpi-software
Шаг 2: Получаем SSL сертификат
Для настройки HTTPS сначала нужно получить сертификат через встроенную утилиту dietpi-letsencrypt:
dietpi-letsencrypt
После успешного выполнения сертификаты будут размещены в /etc/letsencrypt/live/navidrome.yourdomain.com/.
Шаг 3: Создаём конфиг для Navidrome
sudo nano /etc/nginx/sites-available/musicstream
server {
listen 80;
listen [::]:80;
server_name navidrome.yourdomain.com;
location / {
proxy_pass http://localhost: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 Connection "";
proxy_read_timeout 90;
}
include /etc/nginx/sites-dietpi/*.conf;
listen [::]:443 ssl;
http2 on;
listen 443 quic;
listen [::]:443 quic;
quic_retry on;
quic_gso on;
add_header Alt-Svc 'h3=":443"; ma=86400' always;
ssl_certificate /etc/letsencrypt/live/navidrome.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/navidrome.yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
Пояснения
- proxy_pass — перенаправляем запросы на Navidrome (порт 4533)
- proxy_set_header — передаём оригинальные заголовки клиента
- proxy_read_timeout — увеличиваем таймаут для стриминга
- include /etc/nginx/sites-dietpi/*.conf — подключаем дополнительные конфиги DietPi
- http2 on / quic — включаем HTTP/2 и HTTP/3 (QUIC) для лучшей производительности
- Alt-Svc — заголовок для поддержки HTTP/3
- ssl_certificate — пути к сертификатам Let’s Encrypt
Шаг 4: Включаем сайт
sudo ln -s /etc/nginx/sites-available/musicstream /etc/nginx/sites-enabled/musicstream sudo nginx -t dietpi-services restart nginx
После перезагрузки Nginx ваш сервер будет доступен по HTTPS с поддержкой HTTP/2 и HTTP/3 (QUIC).
Также не забудьте открыть порт 443 в вашем фаерволле или роутере.
Клиенты для Navidrome
Navidrome совместим с любым клиентом, поддерживающим Subsonic API. Вот некоторые из них:
Веб
Встроенный веб-интерфейс Navidrome уже имеет полный функционал и адаптивный дизайн. Открыть его можно по адресу:
Мобильные
На телефоне я использую клиент Yuzic
Бекапы
Для резервного копирования достаточно сохранить директорию /mnt/dietpi_userdata/navidrome— там находится SQLite база и конфиги
Заключение
Navidrome — отличное решение для тех, кто хочет иметь свою музыкальную библиотеку с современным интерфейсом и минимальными затратами ресурсов. На DietPi разворачивается за 10 минут, а настройка Nginx proxy позволяет получить безопасный доступ по HTTPS с любого устройства.