Afficher/cacher Sommaire
Navidrome
Les étapes suivantes ont été testées sur Ubuntu 18.04 et devraient fonctionner sur toutes les versions 16.04 et supérieures ainsi que sur les autres distros basées sur Debian. Tout au long de ces instructions, les commandes auront des espaces réservés pour l’utilisateur (<user>
) et le groupe (<group>
) sous lesquels vous souhaitez exécuter Navidrome et le chemin du dossier de musique (<library_path>
). Si vous utilisez une médiathèque existante, assurez-vous que l’utilisateur a les droits sur la médiathèque.
Prérequis
Conditions préalables à la mise à jour et à l’installation
Assurez-vous que votre système est à jour et installez ffmpeg.
sudo apt update && sudo apt upgrade
sudo apt install libtag1-dev ffmpeg
Utilisateur “navidrome”
Par défaut, la commande useradd ne crée pas de répertoires de base, mais pour un démon, je vous recommande d’utiliser l’option système et de remplacer le shell par un shell inexistant afin que personne ne puisse se connecter à ce compte (sous ssh par exemple):
sudo useradd -r -s /bin/false navidrome
Créer une structure de répertoire
Créez un répertoire pour stocker l’exécutable Navidrome et un répertoire de travail avec les permissions appropriées.
sudo install -d -o navidrome -g navidrome /opt/navidrome
sudo install -d -o navidrome -g navidrome /var/lib/navidrome
Obtenir Navidrome
Sur le git officiel
Téléchargez la dernière version depuis la page des versions, extrayez le contenu dans le répertoire exécutable et définissez les autorisations pour les fichiers. (Remplacez l’URL ci-dessous par celle de la page des versions) :
wget https://github.com/navidrome/navidrome/releases/download/v0.45.1/navidrome_0.45.1_Linux_arm64.tar.gz -O Navidrome.tar.gz
sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/
sudo chown -R navidrome:navidrome /opt/navidrome
Version compilée
Archlinux Debian - Compilation go Audio Navidrome
Copier le fichier navidrome dans le répertoire /opt/navidrome/
et modifier les droits
sudo mkdir -p /opt/navidrome
sudo cp navidrome /opt/navidrome/
sudo chown -R navidrome:navidrome /opt/navidrome
sudo chmod +x /opt/navidrome/navidrome
Créer le fichier de configuration
Dans le répertoire de travail, créer un nouveau fichier nommé navidrome.toml
( sudo nano /var/lib/navidrome/navidrome.toml
) avec les paramètres suivants.
MusicFolder = "/home/lxcyan/media/musicyan"
Pour d’autres options de configuration, voir la page des options de configuration.
Etendre Réduire "/var/lib/navidrome/navidrome.toml"
Les fichiers “playlists” sont de type m3u et chaque titre doit comporter le chemin complet
Exemple de fichier playlist.m3u pour un dossier musique /home/lxcyan/media/musicyan
)
/home/yunohost.multimedia/share/Music/musicyan/Cactus/'Ot 'N'Sweaty/Swim.mp3
/home/yunohost.multimedia/share/Music/musicyan/_LoveSongs/062 - Elvis Presley - Heartbreak Hotel.mp3
/home/yunohost.multimedia/share/Music/musicyan/Johnny Rivers - John Lee Hooker/John Lee Hooker.mp3
/home/yunohost.multimedia/share/Music/musicyan/Jazz Manouche/13 - Tchavolo Schmitt - It Had To Be You.mp3
Créer une unité Systemd navidrome.service
Créez un nouveau fichier sous /etc/systemd/system/
nommé navidrome.service
avec les données suivantes.
/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=navidrome
Group=navidrome
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"
Démarrez le service Navidrome
Rechargez le démon de service, démarrez le service nouvellement créé, et vérifiez qu’il a démarré correctement.
sudo systemctl daemon-reload
sudo systemctl start navidrome.service
sudo systemctl status navidrome.service
Si le service a démarré correctement, vérifiez que vous pouvez accéder à http://localhost:4533.
Ouvrir un terminal sur le client linux qui dispose des clés ssh et lancer la commande
ssh -L 9500:localhost:4533 leno@192.168.0.145 -p 55145 -i /home/yann/.ssh/lenovo-ed25519
Ouvrir un navigateur sur le client et saisir localhost:9500 pour afficher le serveur audio
Démarrez Navidrome au démarrage
sudo systemctl enable navidrome.service
Proxy nginx (navidrome)
Remplacer “zic.rnmkcy.eu” par votre nom de domaine
Le domaine “zic.rnmkcy.eu” est activé avec les certificats let’s encrypt
Le fichier de configuration nginx /etc/nginx/conf.d/zic.rnmkcy.eu.conf
server {
listen 80;
listen [::]:80;
server_name zic.rnmkcy.eu;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name zic.rnmkcy.eu;
# Certificats Let's Encrypt
ssl_certificate /etc/ssl/private/rnmkcy.eu-fullchain.pem;
ssl_certificate_key /etc/ssl/private/rnmkcy.eu-key.pem;
location / {
proxy_pass http://127.0.0.1:4533;
}
}
Valider et recharger ginx
sudo nginx -t
sudo systemctl reload nginx