Navidrome — катарсис для аудиофила

Утекло много воды с первого поста о SubSonic. Хоть он и служит верой и правдой по сей день, но увы лишен обновлений, активного сообщества и начинает пристраиваться рядом с Winamp

В поисках альтернативы я пошел по избытому пути, а именно линейке соников. Airsonic, Madsonic, Libresonic (сайта уже нет, искал в закромах). Всех их объединяет интерфейс нулевых годов, куча дополнительных опций которые выглядят странно в 2022 году и как конечно же движок на Java

Потом снова вернулся на Plex. Это огромный комбайн который едет, тарахтит и вечно требует доступ к моему же серверу через их сайт. С последним я смирился, но потом они что то сломали, и по прямому IP или доменному имени он перестал работать, остался только их p2p вариант (не уверен что правильно описал эту технологию). И пережёвывать 300 Гб музыки пару часов это слишком как по мне

Далее я нашел Koel. Выглядит чертовки круто, но в Докере никак не стартовал, а собрать с composer не получалось из-за ошибки сертификатов на Synology. В общем был вариант сломать всю систему, и я сдал назад. Подниму на Ubuntu этого зверя чтобы поиграться

Затем чисто случайно набрел на Navidrome, о нем и будет повесть

Официальный сайт: Navidrome

Установка через Docker

  • Ставим Docker
  • Создаем папку navidrome (можно любую другую) в директории docker
  • Подключаемся к северу по ssh протоколу
  • Переходим к созданной папке командой cd /volume1/docker/navidrome, у вас путь может быть другой
  • Скачиваем файл конфигурации
  • Закидаем его в директорию navidrome
  • Вводим команду docker-compose up -d. В командной строке должна появится надпись done
  • Теперь сервер доступен по следующему адресу: IP Synology: 4533
  • Придумываем логин/пароль
  • Если все прошло удачно, вы увидите свои музыкальные файлы

Описывать интерфейс не стал, есть демка где все можно пощупать самому https://www.navidrome.org/demo/

Файлы настройки будут хранится в директории navidrome, потому если нужно перенести конфигурацию просто скопируйте их

Обновление

  1. Перейти в директорию navidrome
    cd /volume1/docker/navidrome
  2. Посмотреть список запущенных контейнеров. Нужно столбец Name
    docker ps -a
  3. Остановить контейнер
    docker stop navidrome_navidrome_1
  4. Удалить текущий контейнер
    docker rm navidrome_navidrome_1
  5. Скачать новый контейнер
    docker pull deluan/navidrome
  6. Запустить
    docker-compose up -d

Установка на Orange Pi

Данній мануал подойдет и для обычных x64 Linux систем. Нужно лишь выбрать правильный пакет для своей архитектуры ОС

  • Обновим репозитории
    sudo apt update
  • Установим все последние обновления
    sudo apt upgrade
  • Установка ffmpeg. В целом можно и без него, он лишь если хотите использовать конвертирование аудио(например flac в mp3)
    sudo apt install vim ffmpeg
  • Создаем рабочие директории. Обратите внимание, что я использую пользователя orangepi, он был предустановлен в системе по умолчанию. Если нужно используйте своего
    sudo install -d -o orangepi -g users /opt/navidrome
    sudo install -d -o orangepi -g users /var/lib/navidrome
  • Теперь определяемся с архитектурой ОС. Все доступные пакеты на гите https://github.com/navidrome/navidrome/releases
    uname -m
  • Скачиваем, распаковываем архив
    wget https://github.com/navidrome/navidrome/releases/download/v0.52.5/navidrome_0.52.5_linux_armv7.tar.gz -O Navidrome.tar.gz
    sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
    sudo chown -R orangepi:users /opt/navidrome
  • Конфигурируем файл nano /var/lib/navidrome/navidrome.toml. В него вставить следующее содержимое:
    MusicFolder = "/home/orangepi/Music"
    ScanSchedule = '@every 2h'
    Где /home/orangepi/Music — путь к директории с музыкой, выберите свой если он отличается
    ScanSchedule = '@every 2h' — каждые 2 часа сканировать директорию на наличие новой музыки
  • У меня музыка находится на другом сервере, потому нужно примонтировать сетевой диск
    sudo mkdir -p /home/orangepi/Music
    sudo chmod -R 0777 /home/orangepi/Music
    sudo mount -t cifs -o username=admin,password='admin',uid=1000,sec=ntlmssp,iocharset=utf8 //192.168.88.44/Disk_2/Music /home/orangepi/Music — команда для монтирования с Synology DSM 7.2
    df -h | grep sda1 — проверяем статус монтирования
    Если нужно размонтировать sudo umount //192.168.88.44/Disk_2/Music
  • Создаем скрипт для автоматического монтирования при старте системы
    !/bin/bash
    sleep 10
    mount -t cifs -o username=admin,password='admin',uid=1000,sec=ntlmssp,iocharset=utf8 //192.168.88.44/Disk_2/Music /home/orangepi/Music

    Скачать скрипт

    Если вы подключили вместо сетевого диска обычный по USB к OrangePi
    sudo mkdir -p /home/orangepi/Music
    sudo chmod -R 0777 /home/orangepi/Music
    sudo mount /dev/sda1 /home/orangepi/Music
    df -h | grep sda1
    sudo umount /dev/sda1 — если нужно размонтировать
  • Редактируем службу Navidrome nano /etc/systemd/system/navidrome.service. Вставить следующее содержимое:
    [Unit]
    Description=Navidrome Music Server and Streamer compatible with Subsonic/Airsonic
    After=remote-fs.target network.target
    AssertPathExists=/var/lib/navidrome
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=orangepi
    Group=users
    Type=simple
    StartLimitIntervalSec=0
    ExecStart=/opt/navidrome/navidrome --configfile "/var/lib/navidrome/navidrome.toml"
    WorkingDirectory=/var/lib/navidrome
    TimeoutStopSec=20
    KillMode=process
    Restart=on-failure
    ProtectSystem=full
  • Запускаем службу
    sudo systemctl daemon-reload
    sudo systemctl start navidrome.service
    sudo systemctl status navidrome.service

    Если все ок
    sudo systemctl enable navidrome.service

    Дополнительные команды
    sudo systemctl restart navidrome.service — перезапуск
    sudo systemctl stop navidrome.service — остановка
  • Удаление Navidrome
    sudo systemctl stop navidrome
    sudo systemctl disable navidrome
    sudo rm -rf /opt/navidrome
    sudo rm -rf /var/lib/navidrome
    sudo rm -rf /etc/navidrome
    sudo rm /etc/systemd/system/navidrome.service

Обновление на Orange Pi

  • sudo systemctl stop navidrome.service
  • Закинуть файл navidrome в директорию /opt/navidrome
  • sudo systemctl start navidrome.service
Наверх