Files
network-documentation/servicios/musica/README.md

4.3 KiB

Automatización de Música (slskd + Soularr + Lidarr)

Ubicación: LXC 109 (Navidrome, TYAN) · Montado: 21 Sept 2026


Arquitectura

Lidarr (8686) ──► lista de álbumes/artistas que quieres
      │                    │
      │                    ▼
      └──────────► Soularr (cron cada 30 min) ──► busca en Soulseek vía slskd
                                                         │
                              slskd (5030) ──► descarga a /var/lib/slskd/downloads
                                                         │
                              Soularr mueve/importa ──► Lidarr ──► /opt/navidrome/music
                                                         │
                              Navidrome (4533) ──► escaneo automático cada 1 h

Componentes

Servicio Puerto Acceso Función
Lidarr 8686 http://192.168.10.85:8686 Gestión de artistas/álbumes deseados (la "lista")
slskd 5030 http://192.168.10.85:5030 (admin / Slskd2026!) Cliente Soulseek con interfaz web
Soularr — cron */30 * * * * Conecta Lidarr ↔ Soulseek (descarga automática)
Navidrome 4533 https://navidrome.consultoria-as.com Reproductor (escaneo automático @every 1h)

Rutas y configuración

Dato Valor
Música final (Navidrome) /opt/navidrome/music (13 GB, 2341 archivos)
Descargas slskd /var/lib/slskd/downloads
Config Soularr /opt/soularr/config.ini
Config slskd /opt/slskd/slskd.yml
Config Lidarr /var/lib/lidarr/
Logs journalctl -u slskd -u lidarr · /opt/soularr/soularr.log
Binarios /opt/slskd/bin/slskd (0.26.0) · /opt/lidarr/Lidarr/ (3.1.0)

Notas de instalación

  • Instalados nativos (sin Docker): el LXC 109 no tiene Docker y tiene recursos holgados (10 GB RAM, 235 GB libres).
  • Ambos binarios son .NET self-contained → requieren DOTNET_BUNDLE_EXTRACT_BASE_DIR (configurado a /home/<usr>/.dotnet-extract en sus unit files); sin él fallan al arrancar.
  • Lidarr 3.x extrae su binario en /opt/lidarr/Lidarr/Lidarr (subdirectorio, no en la raíz del tar).
  • Los comandos largos vía pct exec se cortan si la sesión SSH cae → usar systemd-run --unit=<x> --collect dentro del contenedor para tareas largas (descargas, apt, pip).

Pendientes (configuración de usuario)

  • Cuenta Soulseek en slskd: http://192.168.10.85:5030 → Settings → Soulseek (usuario/contraseña de la red Soulseek)
  • Lidarr: agregar Root Folder /opt/navidrome/music y los artistas/álbumes deseados en http://192.168.10.85:8686
  • Tras eso, Soularr (cron cada 30 min) buscará y descargará automáticamente

⚠️ Usar con contenido que se tenga derecho a descargar (compras propias, música libre, artistas que lo permitan).


⚠️ Configuración de slskd 0.26 — esquema YAML (Sept 2026)

El slskd 0.26 cambió los nombres de las secciones; con el esquema viejo ignora silenciosamente la configuración (síntoma: Not connecting to the Soulseek server; username and/or password invalid + escucha en el puerto default 50300 en vez del configurado).

Esquema correcto (/opt/slskd/slskd.yml):

directories:
  downloads: /var/lib/slskd/downloads
  incomplete: /var/lib/slskd/incomplete
web:
  port: 5030
  authentication:
    username: admin
    password: Slskd2026!
    api_keys:            # ← dentro de authentication (no como hermana de web)
      - id: soularr
        key: f62d4b3d70a3092dd9530c99736a2a5a
soulseek:                # ← era `slskd:` en versiones viejas
  username: Fransacreblue
  password: Aasi940812
  listen_port: 50300

Verificación

journalctl -u slskd -n 20 | grep -iE "logged|listening"   # debe decir: Logged in ... as Fransacreblue
curl -s -H "X-API-Key: <key>" http://127.0.0.1:5030/api/v0/session   # 200 = API OK

Cuenta Soulseek

  • Usuario: Fransacreblue (creada por el usuario vía cliente Nicotine+, IP residencial)
  • Con CGNAT no somos "connectable" (los peers no nos alcanzan), pero búsqueda y descarga funcionan vía conexiones indirectas — verificado: búsqueda de prueba devolvió 123 peers / 5,352 archivos.
  • NOTA: los endpoints de la API de slskd para resultados están en /searches/{id}/responses (no en /searches/{id}).