Qué vas a montar

Un stack completo donde pides una película o serie desde una interfaz tipo Netflix, se busca y descarga sola, y termina reproducible en streaming con subtítulos automáticos. El flujo final:

Jellyseerr (pides contenido)

Prowlarr (busca en indexers)

Radarr / Sonarr (gestiona películas / series)

qBittorrent (descarga)

/mnt/pve/data/shared/media/

Jellyfin (reproduce) + Bazarr (subtítulos)

Requisitos previos:

Si ya tienes qBittorrent y Prowlarr montados de otro proyecto (por ejemplo, del stack de música o de libros), reutilízalos tal cual — es exactamente el mismo mecanismo, solo cambian los indexers y los clientes que se conectan.


Paso 1 — Preparar la carpeta compartida

En el host de Proxmox, crea la estructura de directorios para media y descargas:

mkdir -p /mnt/pve/data/shared/media/Movies
mkdir -p /mnt/pve/data/shared/media/TV
mkdir -p /mnt/pve/data/shared/downloads

Paso 2 — Crear los LXC

Crea un contenedor Debian/Ubuntu para cada servicio. La forma más rápida es usar plantillas de scripts comunitarios de Proxmox (busca “Proxmox VE Helper-Scripts”, tienen instaladores dedicados para Jellyfin, Radarr, Sonarr, qBittorrent y Prowlarr que hacen todo el proceso de instalación automáticamente). Si prefieres hacerlo manual, crea el LXC desde la interfaz de Proxmox con una plantilla Debian 12 y sigue con la instalación nativa de cada servicio según su documentación oficial.

Reparte IPs fijas para no perderte, por ejemplo:

Servicio LXC ID IP
Jellyfin 111 192.168.1.71
Radarr 112 192.168.1.72
Sonarr 113 192.168.1.73
Jellyseerr 114 192.168.1.74
Bazarr 115 192.168.1.75

Paso 3 — Bind mounts (acceso a la carpeta compartida)

El diálogo de “Mount Point” de la interfaz de Proxmox solo entiende volúmenes virtuales, no rutas del host. Para montar una carpeta real del host dentro de un LXC hay que editar directamente su fichero de configuración:

nano /etc/pve/lxc/111.conf

Añade al final (ajusta el ID en cada fichero):

mp0: /mnt/pve/data/shared/media,mp=/mnt/media
mp1: /mnt/pve/data/shared/downloads,mp=/mnt/downloads

Repite esto para Jellyfin (111), Radarr (112) y Sonarr (113) — los tres necesitan ver la misma carpeta de media y descargas. Reinicia el contenedor tras editar:

pct reboot 111

Paso 4 — Arreglar el DNS de cada LXC nuevo (hazlo ya, antes de que te dé problemas)

Cada LXC que crees en Proxmox hereda por defecto el DNS de Tailscale (100.100.100.100) si tienes Tailscale en el nodo, y ese DNS no resuelve dominios externos desde dentro del contenedor. El síntoma es un fallo de conexión genérico al intentar acceder a APIs externas, sin ninguna pista de que es un problema de DNS — así que ahórrate el rato de depuración y arréglalo de entrada en cada contenedor nuevo:

pct set 111 --nameserver "1.1.1.1 8.8.8.8"
pct set 112 --nameserver "1.1.1.1 8.8.8.8"
pct set 113 --nameserver "1.1.1.1 8.8.8.8"

Paso 5 — Instalar Jellyfin, Radarr y Sonarr

Dentro de cada LXC, instala el servicio correspondiente siguiendo su instalador oficial (o el script comunitario si lo usaste en el paso 2). Una vez arriba:

Paso 6 — Conectar Radarr y Sonarr a qBittorrent

En ambos, Settings → Download Clients → Add → qBittorrent, con la IP y puerto de tu instancia (en mi caso 192.168.1.68:8090).

Revisa el bind mount de qBittorrent con lupa. Si vienes de reutilizar el mismo qBittorrent de otro proyecto (por ejemplo libros), es fácil que el mount point siga apuntando a una subcarpeta antigua tipo /mnt/pve/data/shared/downloads/books en vez de a /mnt/pve/data/shared/downloads en general. Si eso pasa, todo lo que descarguen Radarr/Sonarr terminará metido dentro de esa subcarpeta equivocada sin que salte ningún error. Comprueba el fichero de configuración del LXC de qBittorrent:

cat /etc/pve/lxc/108.conf | grep mp

Y corrige la ruta si hace falta con sed o editando a mano.

Paso 7 — Prowlarr e indexers

Si Prowlarr ya está montado (de otro proyecto), solo tienes que:

  1. Conectar Radarr y Sonarr como aplicaciones en Prowlarr: Settings → Apps → Add
  2. Añadir indexers de vídeo — si vienes de un proyecto de libros o música, los que tengas configurados no sirven para esto
  3. Sincronizar: Prowlarr empuja los indexers a Radarr/Sonarr automáticamente

Sobre qué indexers funcionan: en mi caso, YTS funciona bien como indexer público de películas. EZTV está bloqueado por Cloudflare y necesita algo como FlareSolverr delante para funcionar (lo explico en el post del stack de música, donde lo monté para otro indexer con el mismo problema).

Paso 8 — Jellyseerr (pedir contenido con interfaz tipo Netflix)

Si usas Plex, la opción estándar es Overseerr. Si usas Jellyfin, Overseerr no te sirve — es exclusivo de Plex. La alternativa es Jellyseerr, el fork pensado para Jellyfin. En mi caso no había binarios prácticos disponibles y tuve que compilarlo desde el código fuente siguiendo las instrucciones de su repositorio (necesita Node.js y yarn).

Una vez arriba (http://192.168.1.74:5055), conéctalo a tu instancia de Jellyfin, y luego a Radarr y Sonarr en Settings → Services, para que las peticiones se traduzcan automáticamente en tareas de descarga.

Paso 9 — Bazarr (subtítulos automáticos)

Instala Bazarr (http://192.168.1.75:6767), conéctalo a Radarr y Sonarr en Settings → Radarr / Settings → Sonarr, y añade proveedores de subtítulos (OpenSubtitles es el más habitual) en Settings → Providers.

Extras opcionales


Checklist final

Siguientes pasos

Si quieres el mismo tipo de automatización pero para música, tengo el proceso completo (con VPN incluida para saltarte bloqueos de ISP) en el post del servidor de música.