- Руководство по установке и настройке Navidrome с Nginx как обратного прокси и потоковой передачей через HTTPS
- Введение
- Шаг 1: Установка Navidrome
- Шаг 2: Настройка конфигурации Navidrome
- Шаг 3: Настройка Nginx как обратного прокси для HTTPS
- Шаг 4: Получение и настройка SSL-сертификата с помощью Let’s Encrypt
- Шаг 5: Заключение
Часть 1
Привет, решил рассказать про домашнюю поделку так сказать для тестирования и запуска разного рода сервисов, сейчас на нем ubuntu server edition работают несколько моих докеров которые занимаются перепаковкой видео наблюдения, а точнее забирает rtsp поток с китайских камер и отдают rtmp который я уже потом обрабатываю например в облаке и вывожу на сайт, позже о нем расскажу отдельно, сейчас я решил сделать свой онлайн-радио сервис и развернуть nextcloud пока приобрел жесткий диск на 2ТБ и собрал соответственно.






Собрал и запуск:

Включил, в биосе диск обозначился, дальше идем в терминал
:

Диск в системе не виден, запускаем fdisk -l
можно с выборкой fdisk -l | grep 'Disk /dev/sd'

Отлично вот наш диск на 1.82 ТБ

fdisk запустится в командном режиме. Чтобы посмотреть список всех доступных команд нужно ввести m. Но для наших целей нужно всего несколько основных команд:
p — просмотр текущей таблицы разделов диска;
n — создание нового раздела;
d — удаление существующего раздела;
w — запись таблицы разделов на диск и последующий выход;
q — выход без записи новой таблицы на жесткий диск.
Создаем и записываем партицию.

Форматируем и монтируем раздел в папку /mnt/data/ раздел:

Добавим в fstab так как нам этот ресурс нужен постоянно:

Руководство по установке и настройке Navidrome с Nginx как обратного прокси и потоковой передачей через HTTPS
Введение
Navidrome — это легкий и быстрый сервер для стриминга музыкальных коллекций, который совместим с такими клиентами, как Subsonic и Airsonic. Это мощное решение для организации собственной музыкальной медиатеки с поддержкой потокового воспроизведения, загрузок и трансляций.


В этом руководстве мы рассмотрим процесс установки Navidrome на Ubuntu, настройку его конфигурации, использование Nginx как обратного прокси для безопасного доступа через HTTPS и потоковой передачи музыкальных радиостанций.
Шаг 1: Установка Navidrome
- Загрузите и установите Navidrome:
- Перейдите на официальный сайт Navidrome.
- Выберите нужную версию для вашей системы и скачайте ее. Для Ubuntu установка Navidrome может быть выполнена через менеджер пакетов
apt
или с использованием snap-пакетов. Однако для большей гибкости рекомендуется скачать и установить бинарный файл вручную.
- Распакуйте Navidrome и создайте системную службу:
sudo mkdir /opt/navidrome wget https://github.com/navidrome/navidrome/releases/latest/download/navidrome-linux-x64.tar.gz tar -xvf navidrome-linux-x64.tar.gz -C /opt/navidrome/
- Создание службы systemd для автоматического запуска:
sudo nano /etc/systemd/system/navidrome.service
Добавьте следующее:
[Unit] Description=Navidrome Music Server After=network.target [Service] User=navidrome Group=navidrome ExecStart=/opt/navidrome/navidrome --configfile /var/lib/navidrome/navidrome.toml Restart=on-failure [Install] WantedBy=multi-user.target
- Активируйте и запустите службу:
sudo systemctl enable navidrome sudo systemctl start navidrome
Шаг 2: Настройка конфигурации Navidrome
Navidrome настраивается через файл конфигурации navidrome.toml
. Пример конфигурации на моем сервере:
# Расписание сканирования музыкальных файлов ScanSchedule = '@every 24h' # Путь к музыкальной папке MusicFolder = "/mnt/data/music/" # Настройки кеша транскодирования TranscodingCacheSize = '1500MiB' # Язык интерфейса по умолчанию ND_DEFAULTLANGUAGE = "ru" # Приветственное сообщение на главной странице ND_UIWELCOMEMESSAGE = "💀🤘 HEAVY METAL, PUNK and so on! 🤘💀" # Анимация обложек ND_ENABLECOVERANIMATION = true # Автоматический импорт плейлистов ND_AUTOIMPORTPLAYLISTS = true # Время сессии ND_SESSIONTIMEOUT = "24h" # Включение возможности загрузки файлов ND_ENABLEDOWNLOADS = true # Кеш изображений ND_IMAGECACHESIZE = "200MB" # Прекеширование изображений ND_ENABLEARTWORKPRECACHE = true # Ограничение количества запросов авторизации ND_AUTHREQUESTLIMIT = 5 # Окно времени для авторизации ND_AUTHWINDOWLENGTH = "20s" # Включение транскодирования ND_ENABLETRANSCODINGCONFIG = true # Внешний вид интерфейса [Ui] Theme = "spotify"
Шаг 3: Настройка Nginx как обратного прокси для HTTPS
Для безопасного доступа через HTTPS и проксирования потоков с внешних радиостанций, мы настроим Nginx.
- Создание конфигурации для Nginx:
sudo nano /etc/nginx/sites-available/radio.drslon.ru
- Пример конфигурации Nginx:
server { listen 80; server_name radio.drslon.ru; # Перенаправление с HTTP на HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name radio.drslon.ru; # SSL сертификаты ssl_certificate /etc/letsencrypt/live/radio.drslon.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/radio.drslon.ru/privkey.pem; # SSL настройки ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384'; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # Проксирование Navidrome 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_buffering off; proxy_request_buffering off; # Тайм-ауты proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; send_timeout 90; # Отключение кеширования для потоков add_header Cache-Control no-cache; } # Проксирование HTTP радиостанций через HTTPS location /proxy-radio-1/ { proxy_pass http://radio.trance-energy.org:8000/trance; 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_buffering off; } location /proxy-radio-2/ { proxy_pass http://icecast.vgtrk.cdnvideo.ru/mayakfm_mp3_192kbps; 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_buffering off; } # Логи access_log /var/log/nginx/radio.access.log; error_log /var/log/nginx/radio.error.log; }
- Активация конфигурации:
sudo ln -s /etc/nginx/sites-available/radio.drslon.ru /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Шаг 4: Получение и настройка SSL-сертификата с помощью Let’s Encrypt
Для обеспечения HTTPS мы будем использовать Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d radio.drslon.ru
Шаг 5: Заключение
Мы настроили Navidrome для стриминга музыки с автоматическим импортом плейлистов и возможностью загрузки. Для обеспечения безопасности мы использовали Nginx как обратный прокси с поддержкой HTTPS и добавили поддержку потоковой передачи радиостанций.

Надеюсь, это руководство поможет вам создать свой музыкальный сервер с полным контролем над медиатекой.