Plan Guard para Jellyfin

Para Jellyfin: límites de streaming por usuario o por plan, aplicados antes y durante la reproducción, más detección de cuentas compartidas con otras personas.

Streams playing right now with each viewer's plan profile, quality and address; a second stream over a Basic plan is flagged with the reason1 de 7

Plan Guard establece límites de streaming por usuario o por plan en tu servidor de Jellyfin, los aplica antes y mientras la gente ve contenido, y detecta cuentas compartidas con otras personas, por ejemplo una cuenta de pago usada en varias casas a la vez. Jellyfin no tiene un límite propio de streams simultáneos; Plan Guard lo añade.

Qué hace

  • Perfiles de límites: streams simultáneos, calidad en casa y fuera de casa (bitrate), resolución máxima, si se permite la conversión de vídeo (transcodificación) y si se pueden convertir fuentes 4K, y cuántos dispositivos puede usar una cuenta en 30 días. Cada usuario recibe un perfil, o el perfil predeterminado para todos los demás. Los administradores nunca están limitados.
  • Antes de que empiece la reproducción: por encima del límite de streams, una reproducción nueva se rechaza, y la calidad solicitada se limita al bitrate del perfil para casa o fuera de casa. El bitrate remoto y el ajuste de conversión de vídeo también se escriben en la propia política de cada usuario de Jellyfin.
  • Durante la reproducción: una reproducción que incumple el perfil recibe un mensaje, después una orden de detención, después se termina su transcodificación en el servidor y, por último, se cierra la sesión del dispositivo. Opcionalmente, el dispositivo también se bloquea para ese usuario.
  • Difícil de eludir (desde la versión 0.1.2): el límite de streams cuenta las peticiones de reproducción reales por inicio de sesión y título, incluidas las peticiones de archivo directo, descarga y HLS, así que un segundo inicio de sesión con el mismo dispositivo o un reproductor que no informa de la reproducción ya no lo elude. El límite de calidad también se aplica a las peticiones directas. Puedes tratar cada cliente como fuera de casa, y un cliente sin dirección cuenta como fuera de casa.
  • Detección de cuentas compartidas: una puntuación de confianza por cuenta de los últimos 30 días, a partir de reproducciones simultáneas en redes distintas, «impossible travel», demasiadas redes en un día, demasiados dispositivos y dispositivos nuevos. Por defecto solo notifica; también puedes enviar un mensaje al usuario, forzar un nuevo inicio de sesión o bloquear el dispositivo más nuevo.
  • Funciona con Cashier: los suscriptores reciben el perfil vinculado a su plan de pago, y Plan Guard se encarga de detener la reproducción.
  • Página de administración: streams activos con un botón Stop (con un mensaje opcional), perfiles, usuarios, cuentas compartidas y un registro de cada acción. Las alertas de cuentas compartidas también van al registro de actividad de Jellyfin.

Compatibilidad con clientes

El límite de streams y el bitrate también se escriben en los propios ajustes de usuario de Jellyfin, así que se aplican a cada cliente. No todos los reproductores obedecen una orden de detención, así que Plan Guard usa lo que admite cada uno:

  • Jellyfin Web (probado de extremo a extremo): una reproducción extra se rechaza antes de empezar, Stop se obedece, y una fuente de 10 Mbit/s se transcodifica a 1.6 Mbit/s bajo un perfil de 2 Mbit/s.
  • Los reproductores sin control remoto, como Infuse, Kodi y DLNA, ignoran las órdenes de detención: para ellos, detener significa cerrar la sesión del dispositivo (el usuario tiene que iniciar sesión de nuevo en ese dispositivo). Puedes desactivarlo en los ajustes. Esto se deduce de cómo funcionan estos reproductores; aún no se ha probado en las apps reales.
  • Si un reproductor sigue reproduciendo tras la orden de detención, Plan Guard termina su transcodificación en el servidor y después cierra la sesión del dispositivo.
  • El límite de streams se comprueba al iniciarse la reproducción, también para reproductores que se saltan la petición de información de reproducción de Jellyfin y piden el stream directamente.

Las apps nativas (Android, Android TV, Swiftfin, Findroid, Kodi/JellyCon, Infuse, Streamyfin) aún no se han probado; la lista de cómo reacciona cada una se añadirá tras las pruebas.

Qué envía y adónde

Nada sobre tus usuarios sale de tu servidor, y las ubicaciones se consultan en local. Plan Guard descarga las bases de datos gratuitas DB-IP Lite City y ASN de download.db-ip.com, y de nuevo en el arranque cuando tienen más de 35 días; lo hace solo mientras la detección de cuentas compartidas está activada (lo está por defecto) y cuando no puede reutilizar una base de datos de ubicaciones que ya guardan Access Log o Security Notifications. Aparte de eso, solo la comprobación de licencia llega a medialab.works. En tu servidor, Plan Guard guarda los accesos por sesión (usuario, dispositivo, IP, ubicación aproximada) durante 31 días, y un registro de sus acciones.

Detalles completos de cada producto, incluido qué se queda en tu servidor: Licencias, privacidad y compatibilidad.

IP Geolocation by DB-IP. Las bases de datos DB-IP Lite se distribuyen bajo la CC BY 4.0.

Requisitos

  • Por ahora medialab Server (la variante de MediaLab de Jellyfin 12.2). La compilación actual no se carga en la imagen Docker oficial de Jellyfin 12.2 (la API del servidor deja de responder); seguirá una compilación verificada en la imagen Docker oficial y en el paquete de Debian, y hasta entonces el plugin sigue «coming soon».
  • Opcional: Cashier, para perfiles de límites por plan de pago.

Límites

  • La resolución y la conversión de vídeo se comprueban después de que empieza la reproducción (mensaje y después detención); solo el límite de streams y el bitrate se aplican antes de que empiece.
  • Las redes móviles, las VPN y los viajes pueden parecer compartición, así que la acción predeterminada para las cuentas compartidas es solo una notificación.

Licencia

El plugin es de código abierto (GPL-3.0). Las compilaciones listas para instalar son públicas, igual que el código fuente. Lo que compras es la suscripción: la licencia para usar el plugin en un servidor de Jellyfin, las actualizaciones que incluye tu plan y el soporte: cada actualización mientras la suscripción esté activa, a través de tu repositorio privado de plugins, y ayuda cuando algo no funcione. El plugin comprueba la clave de suscripción una vez al día; sin una suscripción válida se detiene hasta que renueves (no se borra nada). Mensual, anual o de por vida (la de por vida incluye un año de actualizaciones), o incluido en el paquete para Jellyfin. 30 días de prueba gratis.

Código fuente. Para cada versión, el código fuente correspondiente completo es público, junto a la compilación, en el registro de cambios, y también en tu cuenta (Cuenta → Licencias, Código fuente); cada archivo comprimido contiene el texto completo de la GPL-3.0 (LICENSE). Si necesitas el código fuente de una versión que ya no puedes descargar, pídenoslo y te lo enviamos. Consulta la sección 10 del EULA.

Código propio, escrito por MediaLab Works; no contiene código de terceros. El lector de los archivos de la base de datos de ubicaciones es nuestra propia implementación, escrita a partir de la especificación pública del formato MaxMind DB. Los datos de ubicación proceden de DB-IP y los descarga tu servidor, no se incluyen en el plugin.

Funciona mejor con medialab Server

Este plugin funciona en Jellyfin oficial 12.2 o posterior. En medialab Server, nuestro servidor basado en Jellyfin con los mismos datos, bibliotecas, usuarios y apps, funciona mejor:

  • Verified – medialab. El servidor comprueba la firma de nuestros plugins y te muestra que los archivos son exactamente los que publicamos. Si un plugin se modifica después de publicarse, se marca.
  • Integrado en la interfaz. Los plugins pueden añadir botones y enlaces al menú de tus usuarios (por ejemplo, "TV", "Share") sin configurar nada a mano en la web.
  • Prioridad de forma predeterminada. Los plugins de medialab aparecen primero donde importa: sintonizadores de TV en directo, fuentes de guía y proveedores de subtítulos. El orden lo decides tú: puedes cambiarlo en cualquier momento.
  • El catálogo de medialab.works incluido, con instalación sin confirmaciones adicionales.
  • Actualizaciones desde la interfaz web, sin terminal (con Self-Update de MediaLab): comprueba, actualiza y vuelve a la versión anterior desde el panel de control; si una versión nueva no arranca, el servidor vuelve por sí solo a la anterior con tus datos intactos.
  • El mismo Jellyfin, al día. medialab Server sigue cada semana las versiones estables de Jellyfin 12.x; una versión nueva solo se publica después de superar todas las pruebas, incluidas las de nuestros plugins.

Las apps de Jellyfin (Android, iOS, TV, web) se conectan exactamente igual que a Jellyfin oficial.

Para instalarlo, ejecuta la imagen del contenedor (guía) o, en Debian 12, los paquetes apt, que sustituyen a jellyfin-server y jellyfin-web y conservan tus datos donde están (guía).

medialab Server es software libre (GPL-2.0), basado en Jellyfin. El código fuente es público: medialab-server y medialab-server-web.

Requisitos

  • Jellyfin Server 12.2 o posterior (Linux, Windows o Docker)
  • Ubicación a partir de las bases de datos gratuitas DB-IP Lite City y ASN, descargadas cada mes (IP Geolocation by DB-IP, CC BY 4.0)
  • Cashier by MediaLab opcional: perfiles de límites por plan de pago
  • Código abierto (GPL-3.0): el código fuente de cada versión está en tu cuenta

Última versión

0.1.4
publicada el 20 oct 2026
Ver todos los cambios →