Plan Guard para Jellyfin — guía

Instalación

Por ahora necesitas 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) y una cuenta de MediaLab Works con una licencia que cubra el plugin (una suscripción activa, una licencia de por vida dentro de su período de actualizaciones, el paquete de Jellyfin o la prueba gratuita de 30 días).

Desde tu repositorio de plugins (recomendado). Jellyfin instala y actualiza el plugin por sí solo.

  1. En tu cuenta de MediaLab Works abre Licenses → Jellyfin plugin repository y haz clic en Create address. Cópialo: es privado (contiene un token), así que no lo compartas; puedes regenerarlo o revocarlo en cualquier momento.
  2. En Jellyfin abre Dashboard → Plugins → Repositories, haz clic en +, dale un nombre (por ejemplo MediaLab Works), pega la dirección y guarda.
  3. En Dashboard → Plugins → Catalog busca Plan Guard by MediaLab, haz clic en Install y reinicia Jellyfin.

El repositorio lista solo los plugins que cubren tus licencias, y solo las versiones que permiten. Sus enlaces de descarga están firmados y caducan a las pocas horas, así que Jellyfin siempre lee una lista nueva.

Desde el catálogo público. https://medialab.works/jellyfin/manifest.json lista cada plugin publicado de MediaLab Works con su compilación pública; medialab Server lo añade por sí solo. Puedes añadirlo del mismo modo para instalar un plugin antes de tener una clave: el plugin entonces pide la licencia, o inicia la prueba, en su página License. Con una licencia de por vida cuyo período de actualizaciones ha terminado, mantente en tu repositorio privado, que ofrece solo las versiones que tu licencia permite.

Manualmente, desde un archivo zip.

  1. En Account → Licenses descarga jf-planguard_x.y.z.zip (el SHA-256 del archivo se muestra junto al botón).
  2. Extráelo en una carpeta nueva Plan Guard by MediaLab_x.y.z.0 dentro de la carpeta de plugins de Jellyfin:
    • Linux (paquete): /var/lib/jellyfin/plugins/
    • Docker (imagen oficial): /config/plugins/ en el volumen de configuración
    • Windows: %ProgramData%\Jellyfin\Server\plugins\
  3. Reinicia Jellyfin.

Activación de la licencia

  1. Abre la página del plugin en Dashboard → Plugins → Plan Guard by MediaLab y haz clic en License.
  2. Pega tu clave de licencia y haz clic en Activate with key. El plugin contacta con el servidor de licencias, vincula la clave a este servidor de Jellyfin y muestra la licencia como Active.
  3. ¿Aún no tienes clave? En la misma página escribe tu correo e inicia la prueba gratuita de 30 días (se necesita tarjeta, nada que pagar hoy) o compra una licencia; el plugin se activa solo cuando el pago se ha hecho.

La licencia se comprueba una vez al día y en cada arranque de Jellyfin. Sin internet, el plugin sigue funcionando durante 7 días tras la última comprobación exitosa. Sin una licencia válida, el plugin detiene su trabajo y solo su página License sigue funcionando (prueba, clave, renovación); no se borra nada y todo se reanuda en cuanto la licencia es válida de nuevo. Move license (release this server) en la misma página libera la clave para otro servidor.

Actualizaciones y vuelta atrás

  • Desde el repositorio: Jellyfin muestra las versiones nuevas en Dashboard → Plugins y puede actualizar el plugin automáticamente; reinicia Jellyfin para cargar la nueva versión.
  • Desde la página License del plugin: con una licencia válida, Install update instala la versión más nueva que tu licencia permite y Roll back to x.y.z vuelve a la versión anterior (por ejemplo, si algo dejó de funcionar tras una actualización). Reinicia Jellyfin después de cualquiera de las dos. Ambos paquetes se comprueban contra la suma de verificación publicada por el servidor de licencias.
  • Una licencia de por vida recibe las versiones publicadas durante su período de actualizaciones; después, el plugin sigue funcionando en la última versión que puede usar.
  • Tras una vuelta atrás, si tu repositorio de plugins está añadido en Jellyfin, la tarea programada Update Plugins de Jellyfin (en el arranque y cada día) vuelve a instalar la versión más nueva. Para quedarte un tiempo en la versión anterior, quita los desencadenantes de esa tarea en Dashboard → Scheduled Tasks y vuelve a añadirlos después.

Código fuente

El código fuente GPL-3.0 de cada versión está en Account → Licenses (Source code), junto a la descarga, como archivo .tar.gz creado a partir del commit exacto de esa versión.

Configuración

Abre Plan Guard en el menú del panel de Jellyfin. La página tiene seis pestañas: Active streams, Profiles, Users, Sharing, Log y Settings.

  1. Profiles: haz clic en Add profile y define, para cada perfil (0 significa sin límite):
    • el número de simultaneous streams;
    • la calidad at home y away from home, en Mbit/s;
    • la maximum resolution;
    • si se permite la video conversion (transcodificación) y si se permite la conversión en 4K (la más cara para el servidor);
    • cuántos devices in 30 days puede usar una cuenta antes de que cuente como señal de compartición;
    • con Cashier, el linked Cashier plan.
  2. Users: elige el perfil de cada usuario y el profile for everyone else (o sin límites). Los administradores nunca están limitados.
  3. Cashier plans (opcional): con Cashier instalado y With Cashier installed: the profile follows the paid plan activado, los suscriptores reciben el perfil vinculado a su plan (o el límite de dispositivos del plan), y Plan Guard se encarga de detener la reproducción.
  4. Settings → enforcement:
    • Automatically stop playback that breaks the profile (desactivado: solo registra);
    • Seconds between message and stop (10 por defecto);
    • Sign out devices that ignore stop (activado por defecto): el usuario tiene que iniciar sesión de nuevo en ese dispositivo;
    • Block the device after signing it out (desactivado por defecto).
  5. Settings → shared accounts: activa Detect shared accounts y elige what happens below the threshold: solo notificar (registro de actividad, lo predeterminado), notificar y enviar un mensaje al usuario, notificar y forzar un nuevo inicio de sesión, o notificar y bloquear el dispositivo más nuevo. También puedes fijar el umbral de puntuación (50 por defecto), la velocidad de «impossible travel» (500 km/h por defecto) y cuántas redes distintas en un día cuentan como señal (5 por defecto).

Uso diario

  • Cuando un usuario inicia una reproducción por encima del límite de streams, Jellyfin la rechaza antes de que empiece. La calidad se limita al inicio, al bitrate del perfil para casa o fuera de casa.
  • Durante la reproducción, Plan Guard comprueba cada stream aproximadamente cada 10 segundos. Una reproducción que incumple el perfil recibe un mensaje y después una orden de detención; si sigue reproduciéndose, su transcodificación se termina en el servidor y el dispositivo se cierra la sesión.
  • Active streams muestra quién está viendo qué, la calidad, desde dónde y el perfil, con un botón Stop y un mensaje opcional para el usuario.
  • Sharing muestra una puntuación de confianza por cuenta (100 = limpia) de los últimos 30 días, con las señales y los lugares que hay detrás. Las alertas también van al registro de actividad de Jellyfin, como máximo una vez al día por cuenta.
  • Log muestra cada acción que tomó Plan Guard y por qué.

Cómo reaccionan los reproductores

  • Los reproductores sin control remoto, como Infuse, Kodi y DLNA, ignoran las órdenes de detención, así que Plan Guard cierra la sesión del dispositivo en su lugar (si Sign out devices that ignore stop está activado).
  • Los reproductores que siguen reproduciendo tras la orden de detención ven terminada su transcodificación en el servidor y después se les cierra la sesión.
  • La lista completa de clientes y cómo reacciona cada uno se añadirá tras las pruebas.

Qué envía y adónde

Las ubicaciones se consultan en tu servidor, a partir de las bases de datos gratuitas DB-IP Lite City y ASN, descargadas de download.db-ip.com mientras la detección de cuentas compartidas está activada, y descargadas de nuevo en el arranque cuando tienen más de 35 días. Si Access Log o Security Notifications ya guardan una base de datos de ubicaciones, Plan Guard la reutiliza; la pestaña Sharing muestra cuál está en uso. Nada sobre tus usuarios se envía a ningún sitio; solo la comprobación de licencia llega a medialab.works.

IP Geolocation by DB-IP (CC BY 4.0).

Solución de problemas

  • «Geolocation is not available yet»: las bases de datos DB-IP Lite todavía se están descargando; el servidor necesita alcanzar download.db-ip.com por HTTPS.
  • Un usuario con datos móviles o una VPN parece una cuenta compartida: puede pasar; mantén la acción en Notify only o sube el ajuste de redes por día.
  • Cashier está instalado pero los perfiles no siguen los planes: comprueba que la licencia de Cashier esté activa y actualizada; la pestaña Users muestra el estado del enlace.