Singularity Core no es “RawLoadrr con una interfaz web”. Es el stack completo: normalización, verificación, subida, edición masiva y mantenimiento de trackers UNIT3D.
Puertas rápidas:
No tienes que cazar archivos sueltos por el repo. Cada plataforma tiene su carpeta lista para descargar, con todo lo necesario dentro:
| Plataforma | Carpeta | Contenido |
|---|---|---|
| 🐧 Linux | linux-installer/ |
docker-compose.yml · makefile · final-user-install.sh |
| 🪟 Windows | windows-installer/ |
docker-compose.yml · install-windows.bat · setup-windows.ps1 |
Baja la carpeta de tu sistema (o solo esos archivos), mételos en una carpeta vacía en tu HOME
y sigue los pasos de abajo. No hace falta clonar el repo entero ni reconstruir la imagen: solo la
imagen publicada + esos archivos. Las plantillas de config y los 53 módulos de tracker se
extraen solos desde la imagen.
make install # crea config/ y work_data/, genera plantillas, siembra trackers, instala el lanzador
make up # baja la imagen si hace falta y arranca el contenedor
make attach # entra a la TUI
singularity # y a partir de aquí, este comando abre la TUI cuando quierasQué hace make install:
- crea
./config/y./work_data/ - instala
singularityysingularity-shell - genera
.env,config.py,singularity_config.pyymass_config.py - siembra
work_data/trackersdesde la imagen (si no, veríasModuleNotFoundError: src.trackers.PTP) - deja
NOBSpreformado yconfig.pymulti-tracker para cualquier UNIT3D serio
Qué evitar: no ejecutes los make con sudo (el script pide permisos solo cuando toca); no
muevas config/ ni work_data/ tras instalar; no bajes RawLoadrr/ suelto — esto es un tanque,
no una pieza suelta.
- Instala Docker Desktop y déjalo arrancado (WSL2 backend).
- Crea una carpeta vacía, por ejemplo
C:\Singularity, y mete dentro los 3 archivos dewindows-installer/. - Doble clic en
install-windows.bat(o botón derecho → Ejecutar). Hace lo mismo quemake install: creaconfig/ywork_data/, extrae las plantillas y los trackers desde la imagen, y genera los lanzadoresup.bat/singularity.bat/singularity-shell.bat. - Edita tus claves en
config/(ver “Qué configurar…”). En Windows, el qBit/Sonarr/Radarr de tu host se alcanzan porhost.docker.internal, no por127.0.0.1— cámbialo enconfig/config.py. up.batpara arrancar el contenedor →singularity.batpara entrar a la TUI.
Realidad de Windows (no es magia):
- Sin aceleración hardware. WSL2 es virtualización: MKVerything transcodifica por CPU (lento). Sirve para probar la lógica de subida, no para lotes de transcode.
- Medios: por defecto se monta la carpeta
mediaque el instalador crea junto al compose — suelta ahí tus pelis/series y listo. Para apuntar a tu carpeta real, abredocker-compose.ymlcon el Bloc de notas y edita la línea marcada (ej.- D:\Pelis:/media). Sin terminal, sin variables de entorno. - El compose de Windows va sin
privileged,/dev/dri,group_add,:zninetwork_mode: host(ninguno aplica en Docker Desktop).
El instalador deja preparada una base funcional con:
TRACKER_BASE_URL=https://nobs.rawsmoke.netTRACKER_ABBREV=NOBSTRACKER_COOKIE_NAME=nuclear_order_bit_syndicate_sessionME_TRACKER_URL=https://nobs.rawsmoke.netME_TRACKER_DEFAULT=NOBSME_TRACKER_COOKIE_NAME=nuclear_order_bit_syndicate_session- bloque
NOBSenconfig/config.py default_trackers = 'NOBS'
Y además config.py conserva la flota multi-tracker anonimizada para no capar la suite a un solo tracker.
NABS queda fuera porque es testing interno.
Solo esto:
config/.env
config/config.py
config/singularity_config.py
config/mass_config.py
Si esos archivos no existen tras make install, para ahí. No lances la suite todavía.
Poner solo el tracker no basta. La suite necesita claves para identificar la película/serie y para subir las imágenes. Si te falta alguna, el upload se queda a medias.
Identificación (lo más importante): se decide por consenso entre proveedores, no por uno solo. Hace falta que al menos dos coincidan.
tmdb_api— TMDB (gratis, registro).imdb_api— en realidad es la clave de OMDb (gratis, te la mandan por email).- TVmaze — sin clave, pero solo sirve para series.
Consecuencia práctica:
- Solo TMDB → la identificación falla (un único voto no confirma nada). Verás cosas tipo “ID not confirmed — providers disagree”.
- Películas: necesitas TMDB + OMDb sí o sí (TVmaze no vota en cine).
- Series: TMDB + OMDb + TVmaze.
- Anime: además entran MAL/AniList cuando el release parece anime.
Image hosts: configura varios, no uno. Los planes gratuitos tienen límites de subida y
si uno te corta el grifo a media tanda, el upload se cae. Campos disponibles: imgbb_api,
imgbox, ptscreens_api, ptpimg_api, lensdump_api, oeimg_api. Pon dos o tres como mínimo.
Cliente torrent (qBittorrent): url, puerto, usuario, contraseña y la ruta de sesión
(torrent_storage_dir / BT_backup). Sin esto, el .torrent se genera pero no se siembra.
Regla simple: TMDB + OMDb + un par de image hosts + qBit. Eso es el mínimo para que un upload termine entero.
- bajar
RawLoadrr/suelto y montarte una movida paralela - clonar subdirectorios e inventar el resto
- desplegar en VM/LXC rara sin respetar mounts, launcher y config
- tunear menús sin haber corrido
make install
Si haces eso, luego aparecen fantasmas tipo “falta NOBS” cuando en realidad faltan piezas del tanque.
Sobre meter capas (VM, LXC, otro Docker dentro de otro…): corre esto en tu ~/ directo.
El motivo no es manía: en una VM o un LXC la aceleración hardware no funciona, sin más. Todo
el trabajo pesado cae sobre la CPU. MKVerything (normalizar, rescatar, transcodificar) pasa de
minutos a horas o días — directamente inusable. La única excepción es un hipervisor con
passthrough de HW real (gente de NAS/Proxmox que sabe lo que hace), y casi nadie monta eso.
Si aun así vas a virtualizar, asúmelo: irás por CPU y será lento. Y antes de arrancar, ten plan para lo compartido — carpetas de medios (mounts NFS/CIFS), devices y la red hacia qBittorrent. Si no defines cómo ven los datos y el cliente las distintas capas, el contenedor arranca pero no encuentra ni los archivos ni qBit. Lo que falle ahí es tuyo.
(Workarounds concretos para desatascar el arranque en VM/LXC más abajo, mientras preparamos la versión lite.)
En corto:
- MKVerything normaliza y rescata medios
- Verifier audita en 4 capas
- RawLoadrr sube a trackers UNIT3D
- UNIT3D Orchestrator hace edición masiva, banners, imágenes, metadatos y mantenimiento
- Singularity coordina todo desde TUI + dashboard
No es un uploader aislado. Es un orquestador.
Si clonas el repo entero, además del modo ligero tienes plantillas visibles en:
config/.env.exampleconfig/config.py.exampleconfig/singularity_config.py.exampleconfig/mass_config.py.example
Sirven para inspección, diff y mantenimiento. Pero no son requisito para el usuario final del modo ligero.
Respeto a:
- ldu / Uploadrr
- MakeMKV
- MKVToolNix
- FFmpeg
- The TOR Project
No es escenario soportado. Esto NO arregla el rendimiento — seguirás en CPU y MKVerything seguirá siendo lento. Solo sirve para que el stack al menos arranque y se deje usar:
- El rendimiento no se arregla. No hay flag ni truco: sin HW accel, normalizar/transcodificar va por CPU. Para lotes grandes, no virtualices.
- Permisos / UID. El contenedor corre como
uid 1000. Si tu usuario host (o el desplazamiento de UID del LXC) no es 1000, los directorios montados (work_data,logs,config) salen inaccesibles →PermissionError. Workaround: crea esos dirs a mano ychown -R 1000:1000sobre ellos, o corre el stack desde un usuario host que seauid 1000. - Trackers que “desaparecen” (
ModuleNotFoundError: src.trackers.PTP). El bind-mount dework_data/trackersvacío tapa los trackers que trae la imagen. Déjalo que se auto-rellene (make uplo siembra desde la imagen) o, si tu capa lo impide, copia los trackers a mano:docker cp singularity_core:/app/RawLoadrr/src/trackers/. work_data/trackers/. INCORRECT QBIT LOGIN CREDENTIALScon qBit que sí funciona. Suele ser puerto/bloque qBit equivocado enconfig.py, no la contraseña. Revisa que apuntas al puerto real del WebUI y que no estás usando un bloque legacy.- qBittorrent inalcanzable. Dentro de otra capa,
127.0.0.1no es el qBit del host. Usa una IP que el contenedor pueda alcanzar (la de la bridge, ohost.docker.internaldonde exista). - Dashboard solo en localhost. Escucha en loopback a propósito: no lleva auth, así que no
está hecho para exponerse. Si lo necesitas desde fuera de la capa, túnel SSH (o un reverse
proxy con autenticación delante). Nunca lo bindees a
0.0.0.0— eso publica un panel sin contraseña en la red.
Este README queda en modo operativo.
Instalar sin inventar: arriba. Entender las tripas: esos botones.