💾 Archived View for sl1200.dystopic.world › art › tutorial-navidrome.gmi captured on 2023-03-20 at 17:56:11. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
2022-04-01
#navidrome #linux #vps
En mi caso hago la instalación en mi VPS con Debian 10.
Deberás tener instalado nginx, ffmpeg y cerbot
Actualizamos el sistema:
sudo apt update sudo apt upgrade
Creamos los directorios para almacenar el ejecutable de navidrome y el directorio de trabajo, debemos poner el usuario y grupo que corresponda:
sudo install -d -o <user> -g <group> /opt/navidrome sudo install -d -o <user> -g <group> /var/lib/navidrome
Descargamos el programa, lo descomprimimos y configuramos los permisos, cambia v0.XX.0 por la versión actual y pon el usuario y grupo que corresponda:
wget https://github.com/navidrome/navidrome/releases/download/v0.XX.0/navidrome_0.XX.0_Linux_x86_64.tar.gz -O Navidrome.tar.gz sudo tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ sudo chown -R <user>:<group> /opt/navidrome
Creamos el archivo de configuración navidrome.toml en el directorio /var/lib/navidrome con este contenido en el que indicamos la ruta del directorio en el que guardaremos la música de nuestra colección, por ejemplo en la carpeta musica del usuario:
MusicFolder = "~/musica"
Creamos el servicio navidrome. En el directorio /etc/systemd/system/ creamos el archivo navidrome.service con este contenido, recuerda poner de nuevo el nombre de usuario y grupo que corresponda:
[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=<user> Group=<group> 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"
Iniciamos el servicio Navidrome:
sudo systemctl daemon-reload sudo systemctl start navidrome.service sudo systemctl status navidrome.service
Lo configuramos para que el servicio Navidrome se inicie automáticamente al reiniciar el vps:
sudo systemctl enable navidrome.service
A partir de este momento ya tienes el servicio operativo. Sólo tienes que acceder desde un navegador. Mi dominio por ejemplo es dystopic.world, para acceder deberé ir a dystopic.world:4533 para que acceda al puerto en el que está Navidrome.
No hace falta nada más para que funcione, en los siguientes apartados explicaré como tener el servicio en un subdominio, hacer el proxy para que vaya al puerto que toca y cifrar la comunicación servidor-cliente con un certificado Let's Encrypt.
Creamos el archivo music.conf en el directorio /etc/nginx/conf.d con el siguiente contenido, deberás poner el nombre de tu subdominio, en mi caso es music.dystopic.world
server { listen 80; server_name music.dystopic.world; location / { proxy_pass http://localhost: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; } }
Después reiniciamos nginx:
sudo service nginx restart
Ahora ya tenemos operativo el servicio en el subdominio music.dystopic.world y no requerimos detallar el número de puerto, pero seguimos teniendo una comunicación sin cifrar entre cliente y servidor.
Con este sencillo paso dotamos de certificado a nuestro sitio, en este caso music.dystopic.world
sudo certbot --nginx
Sólo tienes que seguir las instrucciones, si ya tienes una web en nginx sólo te pedirá para qué dominio y subdominio quieres el certificado, si no tienes ninguna web ni servicio te pedirá algún dato más.
Links: