Files

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}`).