Cómo autoalojar Jellyfin en Proxmox LXC: guía completa de servidor multimedia 2026
Homelab

Cómo autoalojar Jellyfin en Proxmox LXC: guía completa de servidor multimedia 2026

Ricardo Gil
12 de octubre de 2026
9 min de lectura

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

#jellyfin #proxmox #lxc #self-hosting #media-server
🛒

Productos en este artículo

Enlaces de afiliado

Como Afiliado de Amazon, gano comisiones por compras que califican, sin costo extra para ti.

Jellyfin es la alternativa totalmente open source y sin suscripciones a Plex, y si ya usas Proxmox, un contenedor LXC es la forma más limpia de alojarlo. Sin la sobrecarga de Docker, sin desperdiciar memoria en una VM y con acceso directo a la transcodificación por hardware si tu CPU la soporta. Esta guía cubre el setup completo: creación del contenedor, instalación de Jellyfin, bind mounts de medios, transcodificación por hardware con Intel Quick Sync y un proxy inverso con HTTPS.

¿Por qué Jellyfin en LXC y no en Docker o en una VM?

Los contenedores LXC en Proxmox te dan un rendimiento casi de bare metal con muy poca sobrecarga. En el caso de Jellyfin, eso importa cuando hay transcodificación por hardware de por medio: un LXC puede acceder directamente a los dispositivos de la iGPU del host mediante device passthrough, mientras que una VM completa agrega una capa de virtualización que complica compartir la GPU y consume memoria extra. Docker funciona bien para Jellyfin, pero si ya administras tu homelab con Proxmox, mantener todo como contenedores LXC te da un modelo operativo consistente: una estrategia de respaldos (PBS), una herramienta de snapshots, un formato de configuración.

Además, los snapshots de LXC son lo bastante rápidos como para ser prácticos: puedes hacer un snapshot de todo el contenedor de Jellyfin antes de actualizar, volver atrás en 10 segundos si algo se rompe y borrar el snapshot cuando estés seguro. Ese flujo es mucho más limpio que manejar respaldos de volúmenes de Docker junto con el estado del contenedor.

Lo que necesitas

  • Proxmox VE 8.x o 9.x en tu nodo de homelab
  • La plantilla LXC de Debian 12 descargada en Proxmox (disponible en la biblioteca de plantillas del almacenamiento local)
  • Un volumen de almacenamiento para tus medios: un pool ZFS, un montaje NFS o un disco local grande accesible desde el host de Proxmox
  • Opcional pero recomendado: una CPU con Intel Quick Sync (8.ª generación o más nueva) para transcodificar por hardware

Un mini PC Beelink EQ12 (~$189) con Intel N100 es una excelente base para Jellyfin. Según las especificaciones de Intel, los gráficos UHD del N100 pueden transcodificar 4K HEVC con un consumo muy bajo: un valor absurdo para un servidor multimedia encendido 24/7. Combínalo con 32 GB de RAM DDR4 (~$59) para que Proxmox tenga margen y pueda correr Jellyfin junto a tus otros contenedores sin presión de memoria.

Paso 1: crea el contenedor LXC

En la interfaz web de Proxmox, haz clic en Create CT y usa esta configuración:

  • Hostname: jellyfin
  • Plantilla: debian-12-standard (la más reciente disponible)
  • Disco: 16 GB: los metadatos, miniaturas y la caché de transcodificación de Jellyfin caben bien en este tamaño
  • CPU: 4 núcleos como mínimo; 6-8 si piensas tener varios streams simultáneos con transcodificación por software como respaldo
  • Memoria: 2048 MB de RAM, 512 MB de swap
  • Red: asigna una IP fija en vmbr0; no quieres que la IP de Jellyfin cambie
  • Unprivileged: sí; vamos a manejar el passthrough de dispositivos y el mapeo de UID de forma explícita

O créalo desde la consola del host de Proxmox, más rápido si ya estás conectado por SSH:

bash
pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname jellyfin \
  --cores 4 \
  --memory 2048 \
  --swap 512 \
  --rootfs local-lvm:16 \
  --net0 name=eth0,bridge=vmbr0,ip=192.168.1.200/24,gw=192.168.1.1 \
  --unprivileged 1 \
  --features nesting=1

pct start 200
pct enter 200

El flag nesting=1 activa capacidades del kernel que necesita el contenedor. Reemplaza con tu gateway real y la IP fija que quieras.

Paso 2: instala Jellyfin

Jellyfin ofrece un repositorio oficial para Debian. Dentro de la consola del contenedor:

bash
apt update && apt upgrade -y
apt install -y curl apt-transport-https gnupg2

# Add the Jellyfin GPG key
curl -fsSL https://repo.jellyfin.org/ubuntu/jellyfin_team.gpg.key \
  | gpg --dearmor -o /usr/share/keyrings/jellyfin-archive-keyring.gpg

# Add the Debian Bookworm repository
echo "deb [signed-by=/usr/share/keyrings/jellyfin-archive-keyring.gpg] \
  https://repo.jellyfin.org/debian bookworm main" \
  | tee /etc/apt/sources.list.d/jellyfin.list

apt update && apt install -y jellyfin
systemctl enable --now jellyfin
systemctl status jellyfin

La interfaz web de Jellyfin ya está disponible en http://<container-ip>:8096. No hagas todavía el asistente de configuración: primero monta tu almacenamiento de medios para poder apuntar Jellyfin a tu biblioteca desde el primer arranque.

Paso 3: monta tu almacenamiento de medios

En Proxmox, lo correcto es un bind mount del host al contenedor, en lugar de montar una carpeta de red directamente dentro del LXC. Así el montaje NFS/SMB queda centralizado en el host y el contenedor ve una ruta de sistema de archivos local y limpia.

Ejecuta esto en el host de Proxmox (no dentro del contenedor):

bash
# Stop the container before modifying mounts
pct stop 200

# Bind-mount your media directory into the container
# Replace /mnt/media with your actual media path on the Proxmox host
pct set 200 -mp0 /mnt/media,mp=/media,ro=0

pct start 200

Dentro del contenedor, /media ahora corresponde a /mnt/media del host. Puedes agregar más puntos de montaje (-mp1, -mp2) para separar películas y series si tu almacenamiento está repartido en varios volúmenes.

Un detalle con los contenedores sin privilegios: el mapeo de UID. El usuario jellyfin dentro del contenedor corre como UID 104, que corresponde a un UID más alto en el host. La solución más simple es que tus medios sean legibles por todos:

bash
# On the Proxmox host
chmod -R o+r /mnt/media

Para un setup más restringido, revisa el UID mapeado real y asigna la propiedad con precisión; pero en un homelab, que los medios sean legibles por todos es aceptable.

Paso 4: configuración inicial

Abre http://<container-ip>:8096 y sigue el asistente:

  1. Cuenta de administrador: crea una contraseña fuerte; esta cuenta administra todos los usuarios y bibliotecas
  2. Agrega bibliotecas de medios: apúntalas a /media/Movies, /media/TV, /media/Music según corresponda; elige el tipo de contenido correcto en cada una para que Jellyfin use el scraper de metadatos adecuado
  3. Idioma de los metadatos: elige tu idioma preferido (puedes poner español); Jellyfin usa TMDB y TheTVDB por defecto
  4. Acceso remoto: déjalo por defecto por ahora; el proxy inverso lo configuramos después

Al terminar el asistente, Jellyfin escaneará tu biblioteca y descargará metadatos. Una biblioteca grande (más de 1000 elementos) tarda 20-40 minutos en el escaneo inicial. Puedes ver el progreso en Dashboard → Activity Log.

Paso 5: transcodificación por hardware con Intel Quick Sync

Aquí es donde Proxmox LXC se gana su lugar frente a Docker para Jellyfin. La transcodificación por hardware permite que Jellyfin le pase a la iGPU de la CPU la decodificación y codificación de HEVC/H.264, bajando el uso de CPU de 100% a menos de 10% en un stream 4K.

Primero, verifica que existan los nodos de dispositivo en el host de Proxmox:

bash
ls -la /dev/dri/
# Expected output: card0  renderD128

Detén el contenedor y edita su configuración en /etc/pve/lxc/200.conf en el host:

bash
pct stop 200

cat >> /etc/pve/lxc/200.conf << 'EOF'
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
EOF

pct start 200

Dentro del contenedor, confirma que el dispositivo sea visible y agrega Jellyfin a los grupos necesarios:

bash
ls -la /dev/dri/
# Should show renderD128

usermod -aG render,video jellyfin
systemctl restart jellyfin

En la interfaz web de Jellyfin, ve a Dashboard → Playback → Transcoding y configura:

  • Aceleración por hardware: Intel Quick Sync Video (QSV)
  • Codificación por hardware: activa la codificación H.264 y HEVC
  • Decodificación por hardware: activa H.264, HEVC, VP9 y AV1, según lo que soporte tu iGPU
  • Throttle transcodes when the CPU is busy: actívalo para tener estabilidad 24/7

En un N100 o en cualquier Intel de 12.ª generación en adelante, deberías poder transcodificar 4K HEVC → 1080p H.264 en tiempo real con un uso de CPU muy bajo. Jellyfin no cobra nada por la transcodificación por hardware, a diferencia de Plex, que bloquea Quick Sync detrás de Plex Pass.

Paso 6: HTTPS con proxy inverso

Para acceso solo en tu red local, el puerto 8096 por HTTP está bien. Para acceso externo o un subdominio limpio, pon Jellyfin detrás de un proxy inverso. Si ya corres Traefik o Nginx Proxy Manager en Proxmox (de otras guías de este sitio), es agregar una configuración más.

Para una configuración de Nginx simple en un LXC dedicado como proxy inverso:

bash
server {
    listen 443 ssl http2;
    server_name jellyfin.yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/jellyfin.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jellyfin.yourdomain.com/privkey.pem;

    # Buffer size for video streaming
    proxy_buffering off;

    location / {
        proxy_pass         http://192.168.1.200:8096;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;

        # WebSocket support — required for Jellyfin
        proxy_http_version 1.1;
        proxy_set_header   Upgrade    $http_upgrade;
        proxy_set_header   Connection "upgrade";
    }
}

En Dashboard → Networking de Jellyfin, define tu URL base como https://jellyfin.yourdomain.com y agrega la IP de tu proxy a la lista de Known Proxies para que las cabeceras de las peticiones se consideren confiables.

Paso 7: respaldos con Proxmox Backup Server

El valor de Jellyfin está en sus metadatos: historial de reproducción, calificaciones y los pósters/carátulas que descargó de TMDB. Volver a descargar todo para una biblioteca grande toma horas y se pierde el progreso de reproducción de todos los usuarios. Respáldalo.

Si usas Proxmox Backup Server, solo incluye el CT 200 en tu trabajo de respaldo de PBS y queda cubierto automáticamente a nivel de contenedor. Para un enfoque manual más liviano:

bash
# Inside the Jellyfin container
tar -czf /tmp/jellyfin-backup-$(date +%F).tar.gz \
  /var/lib/jellyfin \
  /etc/jellyfin

# Pull the archive to the host from outside the container
pct pull 200 /tmp/jellyfin-backup-2026-08-31.tar.gz /backup/jellyfin/

La carpeta /var/lib/jellyfin contiene todos los metadatos, imágenes y datos de usuario. El binario y la configuración de Jellyfin en /etc/jellyfin completan el set de restauración.

Notas de rendimiento y ajustes

Algunos detalles prácticos que hacen una diferencia real:

  • Ruta temporal de transcodificación: muévela a tu almacenamiento más rápido. En Dashboard → Transcoding, apunta la carpeta temporal a una ruta en un NVMe rápido. Un NVMe WD Black de 2 TB (~$129) como disco del sistema y los contenedores de Proxmox maneja varias transcodificaciones simultáneas sin cuellos de botella de E/S.
  • Rendimiento de red: la reproducción directa de 4K HEVC llega a unos 80 Mbps. Una red local de 1 Gb está bien, pero si transmites a varios clientes a la vez desde un nodo ocupado, un adaptador Ethernet USB TP-Link de 2.5G (~$29) elimina esa variable.
  • Programación del escaneo de la biblioteca: configura un escaneo programado (cada noche a las 3 a. m.) en lugar de depender solo del monitoreo en tiempo real del sistema de archivos. Los observadores de archivos dentro de contenedores LXC a veces pierden eventos según el backend de almacenamiento.
  • Limita la CPU del contenedor: si corres otras cargas en el mismo nodo de Proxmox, pon un límite de CPU al contenedor de Jellyfin (pct set 200 --cpulimit 4) para que una transcodificación pesada no deje sin recursos a tus otros servicios.

Qué configurar después

Con Jellyfin funcionando, lo natural es agregar:

  • Jellyseerr: una interfaz para gestionar pedidos (parecida a Overseerr) donde los usuarios piden películas y series. Corre como otro LXC y se integra con Jellyfin por API.
  • Radarr + Sonarr + Prowlarr: el stack de adquisición automática de medios. Cada uno corre bien como un LXC liviano separado y deja los archivos nuevos en tu carpeta de medios montada, donde Jellyfin los detecta automáticamente.
  • Jellyfin en el móvil: las apps oficiales de Jellyfin para iOS y Android son gratis y permiten descargas sin conexión, a diferencia de las apps móviles de Plex, que requieren Plex Pass.

El stack completo (Proxmox LXC, Jellyfin, transcodificación por hardware y respaldos con PBS) corre cómodamente en el hardware mencionado arriba y cuesta menos de $300 si empiezas de cero. Si ya usas Proxmox para otros servicios, el costo adicional son unos minutos de configuración.

¿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