Часть 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 и добавили поддержку потоковой передачи радиостанций.
Надеюсь, это руководство поможет вам создать свой музыкальный сервер с полным контролем над медиатекой.