Оглавление

Часть 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

  1. Загрузите и установите Navidrome:
  • Перейдите на официальный сайт Navidrome.
  • Выберите нужную версию для вашей системы и скачайте ее. Для Ubuntu установка Navidrome может быть выполнена через менеджер пакетов apt или с использованием snap-пакетов. Однако для большей гибкости рекомендуется скачать и установить бинарный файл вручную.
  1. Распакуйте 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/
  1. Создание службы 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
  1. Активируйте и запустите службу:
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.

  1. Создание конфигурации для Nginx:
sudo nano /etc/nginx/sites-available/radio.drslon.ru
  1. Пример конфигурации 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;
}
  1. Активация конфигурации:
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 и добавили поддержку потоковой передачи радиостанций.

Домашний сервер

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