Jellyfin + stack *arr en Proxmox LXC: arma tu propio Netflix en 2026
Self-hosting

Jellyfin + stack *arr en Proxmox LXC: arma tu propio Netflix en 2026

Ricardo Gil
12 de octubre de 2026
10 min de lectura

Traducido del original en inglés. Read this article in English →

#Jellyfin #Self-Hosting #Proxmox #Home Lab #Sonarr #Radarr #Media Server

Plex se ha ido comiendo a sí mismo poco a poco. Cuentas obligatorias, un servicio de streaming que nadie pidió, funciones bloqueadas detrás de Plex Pass y una política de privacidad cada vez peor. La comunidad de homelab lo notó, y la migración a Jellyfin se aceleró muchísimo durante 2025 y en lo que va de 2026.

Esta es la guía que me habría gustado tener: un recorrido completo para correr Jellyfin junto a Sonarr, Radarr y Prowlarr dentro de contenedores LXC de Proxmox, compartiendo una misma carpeta de medios y con transcodificación por hardware funcionando con Intel Quick Sync.

Por qué ganó Jellyfin

Jellyfin es un fork de Emby de 2018 que se volvió completamente open source. No tiene plan de pago. No necesitas una cuenta para usar tu propio servidor. No tiene telemetría que no puedas desactivar. Las apps cliente son gratis en todas partes: iOS, Android, Apple TV, Roku, Fire TV y smart TVs desde el navegador o con apps nativas.

La diferencia de funciones con Plex prácticamente desapareció. La transcodificación por hardware funciona. La sincronización móvil funciona. Los multiusuario con bibliotecas individuales y control parental funcionan. La interfaz web es limpia y rápida. Si sigues en Plex por miedo a perder funciones, dedica una tarde a probar Jellyfin: probablemente te sorprenda.

Del lado *arr: Sonarr se encarga de las series, Radarr de las películas y Prowlarr es el agregador de indexadores que reemplazó a Jackett e Hydra en la mayoría de los setups. Juntos forman un sistema autónomo que vigila tu lista de seguimiento, descarga los nuevos estrenos, renombra y organiza los archivos y le avisa a Jellyfin para que actualice su biblioteca, todo de forma automática.

Vista general de la arquitectura

Este es el stack que vamos a montar:

  • Proxmox VE 9.x como hipervisor
  • Un contenedor LXC por servicio (más limpio que Docker dentro de LXC para este caso, y con menos sobrecarga)
  • Un bind mount compartido del host de Proxmox a cada contenedor para /media
  • Intel Quick Sync para transcodificar por hardware (con passthrough de /dev/dri)
  • Servicios: jellyfin, sonarr, radarr, prowlarr

Necesitas un host con al menos 16 GB de RAM y una CPU razonablemente moderna. Para el almacenamiento, planifica discos dedicados para tu biblioteca: una buena configuración son dos discos WD Red Plus de 8 TB en espejo ZFS en el host de Proxmox, expuestos a los contenedores mediante bind mount.

Paso 1: prepara la carpeta de medios en el host de Proxmox

Antes de crear cualquier contenedor, deja lista la estructura de almacenamiento. Todos los contenedores harán bind mount a la misma ruta /mnt/media del host.

bash
# On Proxmox host
mkdir -p /mnt/media/{movies,tv,downloads/complete,downloads/incomplete}
chown -R 1000:1000 /mnt/media

Si usas un pool ZFS, tu ruta podría verse como /mnt/tank/media; ajústala según tu caso. Lo importante es usar la misma ruta base en todos los contenedores.

Para un setup tipo NAS bajo Proxmox, los discos Seagate IronWolf Pro valen lo que cuestan en cargas que están encendidas todo el día. Como alternativa económica, el WD Red Plus de 4 TB maneja bien los patrones de escritura de un homelab.

Paso 2: crea los contenedores LXC

Para Jellyfin vamos a usar los scripts de la comunidad de Proxmox (helper scripts), que configuran automáticamente el passthrough de dev/dri. Para el stack *arr, creamos contenedores Debian 12 normales e instalamos a mano (más control, menos sorpresas).

Contenedor de Jellyfin

bash
# Run on Proxmox host — uses the community helper script
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/jellyfin.sh)"

El script te pedirá el ID del contenedor, el hostname, el tamaño de disco, la RAM y los núcleos. Mínimos recomendados:

  • RAM: 4096 MB (más si tienes contenido 4K)
  • Núcleos: 4
  • Disco: 16 GB (los medios se montan, no se guardan aquí)

Después de crearlo, verifica que /dev/dri exista dentro del contenedor:

bash
pct exec <CTID> -- ls /dev/dri
# Should show: card0  renderD128

Si tu máquina tiene una CPU Intel (de 10.ª generación o más nueva para el mejor soporte de AV1), la transcodificación con Quick Sync funciona de entrada. El Beelink GTi14 Ultra, con su Intel Core Ultra 9 185H, es especialmente capaz aquí: según las especificaciones de Intel, su GPU Xe está pensada para manejar varias transcodificaciones 4K HEVC → H.264 a la vez.

Contenedores del stack *arr

Crea tres contenedores LXC Debian 12 (sin privilegios) para Sonarr, Radarr y Prowlarr. Con 512 MB de RAM y 2 núcleos cada uno es suficiente, son livianos:

bash
# Example for Sonarr — repeat with different IDs/names for Radarr and Prowlarr
pct create 201 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname sonarr \
  --memory 512 \
  --cores 2 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --storage local-lvm \
  --rootfs local-lvm:8 \
  --unprivileged 1

Paso 3: agrega el bind mount compartido de medios

Esta es la parte que la mayoría de las guías pasa por encima, y causa el 80% de los dolores de cabeza con permisos. Hazla bien una sola vez.

Para cada contenedor (Jellyfin, Sonarr, Radarr, Prowlarr), agrega el bind mount en /etc/pve/lxc/.conf:

ini
# Add to /etc/pve/lxc/200.conf (Jellyfin)
mp0: /mnt/media,mp=/media

# Add to /etc/pve/lxc/201.conf (Sonarr)
mp0: /mnt/media,mp=/media

# Same for Radarr (202) and Prowlarr (203)

En contenedores sin privilegios también necesitas mapear UID/GID. Agrega esto a la configuración de cada contenedor:

ini
lxc.idmap: u 0 100000 1000
lxc.idmap: u 1000 1000 1
lxc.idmap: u 1001 101001 64535
lxc.idmap: g 0 100000 1000
lxc.idmap: g 1000 1000 1
lxc.idmap: g 1001 101001 64535

Y en el host:

bash
echo 'root:1000:1' >> /etc/subuid
echo 'root:1000:1' >> /etc/subgid

Esto mapea el UID 1000 dentro de los contenedores directamente al UID 1000 del host, así la propiedad de los archivos se mantiene consistente entre todos los contenedores y el host. Se acabaron los errores de permission denied cuando el stack *arr intenta mover archivos a la biblioteca de Jellyfin.

Paso 4: instala Sonarr, Radarr y Prowlarr

Dentro de cada contenedor correspondiente:

Sonarr

bash
apt update && apt install -y curl gnupg
curl -fsSL https://packagecloud.io/packages/sonarr/latest/ubuntu/jammy/Release.gpg | gpg --dearmor -o /usr/share/keyrings/sonarr.gpg
echo "deb [signed-by=/usr/share/keyrings/sonarr.gpg] https://packagecloud.io/sonarr/sonarr/debian/ bookworm main" > /etc/apt/sources.list.d/sonarr.list
apt update && apt install -y sonarr
systemctl enable --now sonarr

Sonarr corre por defecto en el puerto 8989.

Radarr

bash
apt update && apt install -y curl
curl -L https://github.com/Radarr/Radarr/releases/latest/download/Radarr.master.linux-core-x64.tar.gz -o radarr.tar.gz
tar -xzf radarr.tar.gz -C /opt/
useradd -r -s /bin/false radarr
chown -R radarr:radarr /opt/Radarr

Crea una unidad de systemd en /etc/systemd/system/radarr.service:

ini
[Unit]
Description=Radarr
After=network.target

[Service]
User=radarr
Group=radarr
ExecStart=/opt/Radarr/Radarr -nobrowser -data=/var/lib/radarr
Restart=on-failure

[Install]
WantedBy=multi-user.target
bash
systemctl daemon-reload
systemctl enable --now radarr

Radarr corre en el puerto 7878.

Prowlarr

Es el mismo patrón que Radarr, pero descargando la versión de Prowlarr. Corre en el puerto 9696. Prowlarr sincroniza la configuración de tus indexadores con Sonarr y Radarr automáticamente: agregas tus indexadores una vez en Prowlarr y se propagan a todos lados.

Paso 5: conecta todo

Con los cuatro servicios funcionando, el flujo de conexiones es este:

Prowlarr → Sonarr + Radarr: en Prowlarr, ve a Settings → Apps → Add Application. Agrega Sonarr y Radarr con las IPs de sus contenedores y sus API keys. Prowlarr les enviará la configuración de indexadores a ambos.

Sonarr/Radarr → cliente de descargas: una opción sencilla es qBittorrent en su propio LXC (puerto 8080). En Sonarr y Radarr, ve a Settings → Download Clients → Add qBittorrent y apunta a la IP del contenedor. Configura la ruta de descargas en /media/downloads/complete.

Sonarr/Radarr → notificaciones a Jellyfin: en Sonarr, ve a Settings → Connect → Add → Jellyfin. Ingresa la IP del contenedor de Jellyfin, el puerto 8096 y una API key del panel de Jellyfin (Dashboard → API Keys). Así, cuando Sonarr importe un episodio nuevo, le avisa a Jellyfin para que escanee la biblioteca de inmediato.

En cuanto a hardware, un cliente de descargas dedicado se beneficia de un NVMe rápido para el búfer de descargas incompletas. El Samsung 990 Pro de 2 TB es hoy la opción top para cargas con mucha escritura, aunque el WD Black SN850X es una alternativa sólida a menor precio.

Paso 6: configura Jellyfin

Configuración inicial en http://:8096:

  1. Crea tu cuenta de administrador
  2. Agrega bibliotecas que apunten a /media/movies y /media/tv
  3. Activa la aceleración por hardware: Dashboard → Playback → Transcoding → selecciona Intel QuickSync (QSV)
  4. Configura la carpeta temporal de transcodificación en una ruta local rápida (no en tu disco de medios)

Para acceso remoto sin abrir puertos, Jellyfin funciona perfecto detrás de Tailscale: agrega el LXC de Jellyfin a tu tailnet y accedes desde cualquier lugar por un túnel cifrado. Combínalo con la app móvil de Jellyfin (gratis en iOS y Android) y tienes un setup de streaming completo.

Si quieres un proxy inverso con dominio propio, Caddy lo resuelve de forma elegante:

code
jellyfin.yourdomain.com {
    reverse_proxy 192.168.1.200:8096
}

Caddy obtiene automáticamente los certificados de Let's Encrypt y maneja HTTPS, sin configuración adicional más allá de esto.

Hardware recomendado para este stack

Correr los cuatro servicios (Jellyfin, Sonarr, Radarr, Prowlarr) más qBittorrent requiere un host capaz. En reposo, el uso de RAM ronda los 3-4 GB en total. Durante una transcodificación 4K el uso de CPU sube, pero Quick Sync descarga la mayor parte del trabajo de los núcleos.

Para un servidor multimedia dedicado:

  • Opción mini PC: Minisforum UM890 Pro: AMD Ryzen 9 8945HS y 32 GB de RAM, muy bueno también para transcodificar por software si no tienes Quick Sync
  • Opción económica: Beelink EQ12 Pro: procesador N100 y 16 GB de RAM, consume unos 6 W en reposo y maneja bien la transcodificación a 1080p
  • Switch de red: TP-Link TL-SG108E: switch administrable de 8 puertos, perfecto para segmentar el tráfico de tu homelab
  • Cables: cables de red Cat6A si vas a usar 2.5GbE entre tu NAS y el servidor multimedia

Detalles que conviene saber desde el principio

Los hardlinks importan. Configura Sonarr y Radarr para usar hardlinks en lugar de copias al importar desde la carpeta de descargas. Si tus descargas y tu biblioteca están en el mismo sistema de archivos, los hardlinks hacen que la importación sea instantánea y no dupliquen el uso de disco. Para que funcione, la ruta de descargas y la de medios deben estar en el mismo volumen; por eso usamos /media/downloads y /media/movies, ambas bajo /mnt/media.

*Las convenciones de nombres del stack arr son estrictas. Sonarr y Radarr usan formatos específicos de carpetas y archivos que Jellyfin necesita interpretar correctamente. Recomiendo las convenciones de nombres de TRaSH Guides: la comunidad las usa muchísimo y funcionan perfecto con los scrapers de metadatos de Jellyfin.

Los scrapers de metadatos de Jellyfin necesitan tiempo. En el primer escaneo de una biblioteca con miles de elementos, Jellyfin consulta TheMovieDB y TheTVDB para traer metadatos y carátulas. Dale unas horas. Las actualizaciones siguientes son rápidas.

LXC vs Docker: esta guía usa contenedores LXC en lugar de Docker dentro de LXC porque ya estamos en Proxmox y LXC tiene menos sobrecarga. Si te sientes más cómodo con Docker Compose, puedes correr todo este stack como servicios de compose en un solo LXC; hay buenos archivos compose de la comunidad para el stack arr completo. La arquitectura es la misma; la diferencia es de preferencia operativa.

¿Usas IA para organizar tu trabajo? Si usas Claude, armé un pack de prompts para Claude: 50 prompts bilingües (EN/ES) de productividad, programación y más. $17, descarga inmediata.

Resultado final

Después de una tarde de configuración, terminas con:

  • Un servidor Jellyfin que transmite a cualquier dispositivo, sin suscripción
  • Descarga automática de series y películas según tus listas de seguimiento
  • Una única carpeta /media que todos los servicios comparten sin problemas
  • Transcodificación por hardware para que tu mini PC no queme CPU recodificando a H.264
  • Todo aislado en entornos LXC dentro de Proxmox

El costo mensual, una vez comprado el hardware, es cero. Nada de Plex Pass a $120 al año. Nada de suscripciones de streaming para una biblioteca que ya estás pagando de otras formas. Control total sobre tus datos, tus metadatos y quién tiene acceso.

Eso es justo lo que Plex nunca pudo ofrecer de verdad.


Aviso: este artículo contiene enlaces de afiliado. Si compras a través de ellos, puedo ganar una pequeña comisión sin costo extra para ti.

¿Quieres algo así para tu negocio?

Instalo infraestructura privada y autoalojada en Proxmox: IA, automatización y herramientas internas en hardware que es tuyo, documentado y entregado. Ver el stack de IA privada →

¿No sabes qué necesitas? Agenda una llamada gratis.

📬Newsletter semanal

Recibe lo mejor de homelab e IA

Sin spam. Un correo por semana. Te das de baja cuando quieras.

Comparte este artículo