Установка и обновление Navidrome на Almalinux 8

baltun

Администратор
Сообщения
10.874
Реакции
2.584
Баллы
2.003
Возможности кратко:
  • Выбирайте из большого выбора мобильных клиентов или используйте встроенный веб-плеер
  • Легкий, быстрый и автономный. Хорошо работает даже на платформах с ограниченными ресурсами (например, Raspberry Pi)
  • Хорошо сочетается с гигантскими музыкальными коллекциями (протестировано с ~900K песен - 2/3 FLAC, 1/3 MP3)
  • Преобразует / уменьшает ваши музыкальные файлы по мере их воспроизведения, поэтому вы не нарушаете свой тарифный план
  • Построен с использованием новых технологий
  • Совместимость со стандартным Музыкальным API, поддерживающим всех своих клиентов и экосистему
  • Новые релизы на регулярной основе, добавление функций и исправление ошибок
Создаем каталог для хранения исполняемого файла Navidrome и рабочий каталог, все каталоги и группы будут на примере пользователя xsacha:
Код:
sudo install -d -o xsacha -g xsacha /opt/navidrome
sudo install -d -o xsacha -g xsacha /var/lib/navidrome

Скачиваем Navidrome у устанавливаем права:
Код:
wget https://github.com/navidrome/navidrome/releases/download/v0.47.5/navidrome_0.47.5_Linux_x86_64.tar.gz -O Navidrome.tar.gz
sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo chown -R xsacha:xsacha /opt/navidrome

Создаем файл конфигурации по пути /var/lib/navidrome navidrome.toml, права на файл от пользователя и группы xsacha:
Код:
ScanSchedule = '@every 1h'
TranscodingCacheSize = '150MiB'
MusicFolder = '/media'

Создаем новый файл с именем и следующими данными /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=xsacha
Group=xsacha
Type=simple
ExecStart=/opt/navidrome/navidrome --configfile "/var/lib/navidrome/navidrome.toml"
WorkingDirectory=/var/lib/navidrome
TimeoutStopSec=20
KillMode=process
Restart=on-failure

# See https://www.freedesktop.org/software/systemd/man/systemd.exec.html
DevicePolicy=closed
NoNewPrivileges=yes
PrivateTmp=yes
PrivateUsers=yes
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
ReadWritePaths=/var/lib/navidrome

# You can uncomment the following line if you're not using the jukebox This
# will prevent navidrome from accessing any real (physical) devices
#PrivateDevices=yes

# You can change the following line to `strict` instead of `full` if you don't
# want navidrome to be able to write anything on your filesystem outside of
# /var/lib/navidrome.
ProtectSystem=full

# You can uncomment the following line if you don't have any media in /home/*.
# This will prevent navidrome from ever reading/writing anything there.
#ProtectHome=true

# You can customize some Navidrome config options by setting environment variables here. Ex:
#Environment=ND_BASEURL="/navidrome"

Запускаем наш сервис Navidrome:
Код:
sudo systemctl daemon-reload
sudo systemctl start navidrome.service
sudo systemctl status navidrome.service

Добавляем службу в автозагрузку:
Код:
sudo systemctl enable navidrome.service

После всего можем посмотреть работу нашего скрипта при первом входе скрипт требует создать администратора. Скрипт полностью на русском языки. Для прослушивании музыки есть также приложения для iOS, Android, Windows, Linux.
Если размещать скрипт на nginx с проксированием тогда правила можно прописать так:
HTML:
    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_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_buffering off;
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
    }

Обновление скрипта:
Код:
sudo systemctl stop navidrome.service
wget https://github.com/navidrome/navidrome/releases/download/v0.48.0/navidrome_0.48.0_Linux_x86_64.tar.gz -O Navidrome.tar.gz
sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo systemctl start navidrome.service
 
Последнее редактирование:
Назад
Верх Низ