96 lines
4.3 KiB
Markdown
96 lines
4.3 KiB
Markdown
# 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`):
|
|
|
|
```yaml
|
|
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
|
|
|
|
```bash
|
|
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}`).
|