Por qué alojar su servidor multimedia en un VPS
Un media-server autoalojado en un VPS le convierte en propietario de su catálogo: películas, series, música y fotos siguen accesibles por HTTPS desde el navegador, una Smart TV o un móvil, sin cuota impuesta ni análisis de sus hábitos.
A diferencia de una máquina doméstica, el VPS dispone de un ancho de banda de subida estable, indispensable para el streaming a distancia, de una IP fija para configurar un dominio y de una disponibilidad 24/7 sin sobrecoste de electricidad. Su mediateca ya no depende de la conexión ni del hardware de su casa.
Jellyfin es totalmente libre (licencia GPL) y no tiene ninguna función de pago; Plex ofrece una experiencia de cliente más pulida, pero reserva la transcodificación por hardware a Plex Pass y, desde el 29 de abril de 2025, la reproducción remota de sus vídeos personales a Plex Pass o Remote Watch Pass. La elección se juega, por tanto, entre libertad total y comodidad preconfigurada.
Lo que gana alojándolo usted mismo
- Acceso remoto en HTTPS sin pasar por un relé externo ni exponer sus contenidos a un tercero
- Sin límite de cuentas, de flujos simultáneos ni de tamaño de la biblioteca
- Transcodificación al vuelo gobernada por sus propios recursos de VPS (CPU o GPU)
- Subtítulos, metadatos y carátulas recuperados automáticamente y almacenados en su servidor
- Con Jellyfin: cero funciones de pago, sin telemetría, código fuente auditable
- Copia de seguridad y migración triviales: todo cabe en un volumen Docker y una carpeta media
- Soporte DLNA (mediante el plugin oficial de Jellyfin) para transmitir a televisores y reproductores de red sin cliente dedicado
Requisitos para un VPS media-server
Para el streaming directo (remux sin recodificación) basta con un VPS de 2 vCPU y 2 GB de RAM. En cuanto active la transcodificación por software de un flujo 1080p, cuente con 4 vCPU y 4 GB; para varios flujos 4K simultáneos, apunte a entre 6 y 8 vCPU. La transcodificación por hardware (QSV, NVENC) sigue siendo poco habitual en un VPS compartido: dé prioridad a archivos ya compatibles con sus clientes para mantenerse en Direct Play.
En cuanto al almacenamiento, prevea un volumen generoso e, idealmente, un disco rápido para los metadatos. Necesita Docker y Docker Compose instalados, un subdominio (por ejemplo, media.your-domain.com) apuntando a la IP del VPS y un reverse proxy para el TLS.
Desplegar Jellyfin (o Plex) con Docker y reverse proxy
Preparar el árbol de directorios y los volúmenes
En el VPS, cree
mkdir -p /srv/jellyfin/{config,cache}y una carpeta media/srv/media/{films,series,musique}. Estas rutas se montarán como volúmenes para persistir la configuración y separar claramente los contenidos de la base de datos.Redactar el docker-compose.yml
Declare el servicio
jellyfin/jellyfin(oplexinc/pms-docker), monte./config,./cachey/srv/mediaen solo lectura, y exponga el puerto8096(Jellyfin) o32400(Plex) únicamente en local:127.0.0.1:8096:8096. El reverse proxy se encargará de la exposición pública.Arrancar el contenedor
Ejecute
docker compose up -dy luego sigadocker compose logs -f. Acceda al asistente mediante un túnel SSHssh -L 8096:127.0.0.1:8096 user@vpspara crear la cuenta de administrador antes de cualquier exposición pública.Configurar la transcodificación
En la interfaz de Jellyfin, en Panel de control → Reproducción → Transcodificación, conserve la ruta de transcodificación predeterminada (
/cache/transcodesen la imagen oficial): esos archivos temporales no deben estar en./config, que usted respalda. Si su VPS tiene CPU limitada, priorice el Direct Play y, en el perfil de cada usuario (Panel de control → Usuarios), retire el permiso de reproducir vídeo que requiera transcodificación: los archivos incompatibles fallarán en vez de saturar el servidor. En Plex, la opción equivalente, «Disable video stream transcoding», está en Configuración → Servidor → Transcodificador.Implantar el reverse proxy y el SSL
Configure Caddy o Nginx para hacer de proxy de
media.your-domain.comhacia127.0.0.1:8096. Con Caddy bastan dos líneas y el certificado Let's Encrypt es automático; no olvide retransmitir las cabeceras WebSocket para la reproducción en tiempo real. Atención con Jellyfin 12: los prefijos heredados/emby/y/mediabrowser/han sido eliminados — si configuró su reverse proxy sobre esas rutas, actualícelo para apuntar a la raíz/.Asegurar el acceso con la autenticación de Jellyfin
Jellyfin gestiona la autenticación de forma nativa: exija contraseñas largas y, en el perfil de cada usuario (Panel de control → Usuarios), fije el número máximo de intentos de inicio de sesión fallidos antes del bloqueo. Para Plex detrás de un reverse proxy, declare la URL pública en Configuración → Servidor → Red («Custom server access URLs»); la reproducción remota de sus vídeos exige además un Plex Pass en la cuenta de administrador del servidor, o un Remote Watch Pass en la cuenta de cada espectador. No abra nunca el puerto
8096ni el32400directamente en el cortafuegos: solo los puertos 80/443 deben ser accesibles.Indexar sus bibliotecas
En la interfaz, añada las carpetas
/media/filmsy/media/series, elija el agente de metadatos y lance el escaneo. Compruebe que un archivo se reproduce en Direct Play desde un cliente externo para confirmar que el proxy y los códecs son correctos.Hacer copia de seguridad de la configuración
La copia de seguridad de Jellyfin se reduce a dos elementos: la carpeta
./config(base de datos, plugins, preferencias) y sus archivos media. Automatice untar -czf jellyfin-config-$(date +%Y%m%d).tar.gz ./configdiario y sincronícelo con almacenamiento remoto. Para Plex, la carpetaPlex Media Server/es el equivalente. Pruebe la restauración en un entorno de prueba antes de necesitarla.
Jellyfin 12: qué cambia y cómo migrar
Jellyfin 12.0 se publicó el 7 de septiembre de 2026; la rama va ya por la 12.4, publicada en octubre de 2026. El paso de 10.11.x a 12 se debe a un cambio de numeración: el proyecto abandonó el prefijo «10.», y 12.0 es la versión que se habría llamado 10.12.0. Aun así, introduce cambios incompatibles.
Eliminación de los prefijos de API heredados. Las rutas /emby/ y /mediabrowser/ han sido eliminadas definitivamente: los clientes de terceros antiguos y los scripts que dependían de ellas dejan de funcionar mientras no llamen a las rutas desde la raíz /. Además, la autorización heredada («legacy authorization») queda desactivada por defecto, también en las instalaciones migradas. Verifique cada aplicación cliente antes de migrar.
Migración de base de datos irreversible. Jellyfin 12 sigue en SQLite pero reestructura su base: las listas de reproducción y las colecciones pasan a ser relacionales (nueva tabla LinkedChildren) y unas rutinas de limpieza se ejecutan automáticamente en el primer arranque. Estos cambios impiden cualquier vuelta atrás sin una restauración completa. Haga una copia de seguridad completa de la carpeta config/ — especialmente data/jellyfin.db — antes de actualizar la imagen del contenedor Docker. Revertir implica restaurar esa copia junto con la imagen Docker de la versión anterior. Tras la actualización, lance un escaneo completo de las bibliotecas: es necesario para recuperar las versiones alternativas de los medios.
Incompatibilidad de plugins de 10.11. El servidor apunta ahora a .NET 10: los plugins deben recompilarse para Jellyfin 12. Las notas de la versión recomiendan quitar los plugins instalados desde un repositorio (los no integrados) antes de migrar y reinstalarlos después desde el repositorio estable oficial cuando se publiquen versiones compatibles.
Migración directa soportada. Las actualizaciones desde 10.10.7 y 10.11.x a 12 están soportadas — no es necesario reinstalar desde cero ni pasar por una versión intermedia; por debajo de 10.10.7, actualice primero a 10.10.7. Después descargue la nueva imagen Docker, tras hacer la copia de seguridad.
Desplace la tabla
| Criterio | Jellyfin | Plex |
|---|---|---|
| Licencia / coste | Libre (GPL), 100% gratuito | Freemium, Plex Pass de pago para las funciones clave |
| Transcodificación por hardware | Incluida y gratuita | Reservada a los suscriptores de Plex Pass |
| Acceso remoto | Directo a través de su reverse proxy | Directo o mediante el relé de Plex (ancho de banda limitado); la reproducción remota de vídeo requiere Plex Pass o Remote Watch Pass |
| Privacidad | Sin telemetría, todo se queda en su servidor | Cuenta Plex y metadatos centralizados |
| Calidad de los clientes (TV, móvil) | Buena, en progresión constante | Muy lograda y estable |
| Soporte DLNA | Mediante el plugin DLNA oficial (red host necesaria en Docker) | Presente, menos configurable |
| Plugins y extensiones | Catálogo comunitario amplio y activo | Más cerrado, funciones integradas |
| Aplicaciones móviles | Gratuitas (Android, iOS) | Gratuitas, Plex Pass necesario para las descargas |
| Comunidad | Muy activa, código abierto, foros y Matrix | Activa, foro oficial, menos abierta |
| Chromecast | Soportado mediante la app móvil | Soportado de forma nativa |
| Configuración inicial | Algunos ajustes manuales | Asistente muy guiado |
Solución de problemas: los errores más frecuentes
Transcodificación que falla en silencio. El reproductor muestra un error genérico o el vídeo no arranca. Primera comprobación: en Panel de control → Registros, filtre por Transcod. Si el registro indica que no se encuentra FFmpeg o un error de permisos en la carpeta de transcodificación, el contenedor no encuentra el binario o no puede escribir en esa carpeta (/cache/transcodes por defecto). Verifique que el volumen está montado con permisos de escritura y que la imagen Docker es jellyfin/jellyfin (no una bifurcación sin mantenimiento).
Fallo de la aceleración por hardware. En un VPS sin GPU dedicada, la aceleración por hardware (VAAPI, QSV, NVENC) no está disponible: la transcodificación falla si activó una opción por hardware que el servidor no puede atender. En Panel de control → Reproducción → Transcodificación, desactive la aceleración por hardware para volver a la transcodificación por software, o fuerce el Direct Play. En una máquina con GPU, el contenedor debe poder acceder a ella: asigne el dispositivo de renderizado (devices: - /dev/dri/renderD128:/dev/dri/renderD128, con group_add en el grupo render del host) para VAAPI o QSV, o instale el controlador NVIDIA y el NVIDIA Container Toolkit en el host para NVENC.
Acceso remoto bloqueado detrás de un reverse proxy (prefijo de ruta). Si sirve Jellyfin bajo una subruta como your-domain.com/media/, los recursos estáticos y la API no se cargan correctamente. Un subdominio dedicado (media.your-domain.com) evita estos problemas; la documentación advierte además de que la Base URL rompe, entre otros, el plugin DLNA, HDHomeRun, Sonarr y Radarr. Si la subruta es inevitable, rellene el campo Base URL en Panel de control → Red (se guarda en network.xml y requiere reinicio) y asegúrese de que su reverse proxy reenvía la ruta completa sin reescribirla.
Sincronización de metadatos en bucle. El escaneo de la biblioteca se ejecuta indefinidamente sin progresar. Causas habituales: permisos insuficientes en la carpeta media (Jellyfin debe poder leer los archivos), nombres de archivos que no siguen el estándar Title (Year).mkv, o problemas de conectividad con los agentes de metadatos remotos. Consulte los registros de tareas programadas en Panel de control → Tareas programadas para identificar qué paso está bloqueado.
Para evitar saturar la CPU de su VPS, estandarice su biblioteca en H.264/AAC dentro de un contenedor MP4 o MKV. Un simple script ffmpeg de remux (sin recodificación, opción -c copy) reacondiciona sus archivos en unos segundos y alivia de forma duradera al servidor, sobre todo en un VPS sin GPU. Esta operación no afecta a la calidad del vídeo: solo cambia el contenedor, no el contenido.