Security Notifications para Jellyfin — guía

Instalación

Necesitas Jellyfin Server 12.2 o superior 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 Security Notifications 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-securitynotifications_x.y.z.zip (el SHA-256 del archivo se muestra junto al botón).
  2. Extráelo en una carpeta nueva Security Notifications 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 → Security Notifications by MediaLab y haz clic en Open License page.
  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 Roll back to x.y.z, la actualización automática de Jellyfin para ese plugin se desactiva hasta el siguiente Install update en la página License, de modo que la tarea programada Update Plugins (en el arranque y cada día) no trae de nuevo la versión más nueva.
  • Licencia de por vida y actualizaciones automáticas. El catálogo público de Jellyfin (https://medialab.works/jellyfin/manifest.json) siempre ofrece la versión más nueva. Cuando el período de actualizaciones de una licencia de por vida ha terminado, las versiones publicadas después no están licenciadas: si las actualizaciones automáticas de plugins de Jellyfin instalan una, el plugin se detiene con «version not licensed» hasta que vuelves atrás con Roll back to x.y.z en su página License o compras un pase de actualizaciones. Para evitarlo, no dejes que Jellyfin actualice este plugin automáticamente: añade tu repositorio privado de plugins, que ofrece solo las versiones que tu licencia permite, en lugar del catálogo público, o quita los desencadenantes de la tarea programada Update Plugins en Dashboard → Scheduled Tasks (esto detiene las actualizaciones automáticas de todos los plugins).

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 Security Notifications en el menú del panel de Jellyfin. La página tiene cinco pestañas: Overview, History, Rules, Channels y Settings.

  1. Channels: activa los canales que quieras y fija la severidad mínima de cada uno, y después usa Send a test.
    • Telegram: escribe el token del bot, envía /start al bot (o añádelo a un grupo) y haz clic en Find para rellenar el chat.
    • E-mail: destinatarios y tu servidor SMTP. Se recomienda el puerto 587 con STARTTLS (el puerto 465 con TLS implícito no está soportado). Si Registration by MediaLab está instalado, puedes reutilizar su servidor SMTP.
    • Webhook: elige Discord, Slack, ntfy, Gotify o JSON y pega la dirección. La dirección contiene el token y se guarda aparte de los ajustes. Para Gotify, añade ?token=… a la dirección /message.
    • Registro de actividad de Jellyfin: las alertas también aparecen en la lista de actividad del panel.
  2. No spam (misma pestaña): cada cuánto puede repetirse la misma alerta, las horas de silencio (solo las alertas críticas salen de inmediato, el resto llega en un resumen cuando terminan) y el resumen diario opcional para alertas medias e informativas.
  3. Rules: cada una de las 20 reglas tiene un interruptor, una severidad y, donde aplica, umbrales (por ejemplo, cuántas contraseñas incorrectas en cuántos minutos, la velocidad para el impossible travel o las horas habituales del administrador).
  4. Settings:
    • Location: DB-IP Lite (gratis, sin cuenta), MaxMind GeoLite2 (tu id de cuenta y clave de licencia) o desactivado. Sin ubicación, las reglas de país nuevo, impossible travel y red nueva no funcionan.
    • Network: redes de confianza (CIDR) tratadas como locales, como tu propia VPN. Las redes privadas y las de los ajustes de red de Jellyfin se incluyen automáticamente. Activa The server is behind its own proxy si Jellyfin está detrás de nginx, Caddy, Traefik o similar, para que se esperen las cabeceras reenviadas; Cloudflare se reconoce por sí solo.
    • Bad IP lists: salidas de Tor (actualizadas cada hora) y Spamhaus DROP (cada día).

Uso diario

  • Overview muestra las alertas recientes y el estado del plugin.
  • History lista cada alerta con cuenta, dirección, ubicación, dispositivo y los canales a los que se envió; filtra por severidad, regla y período, o exporta a CSV.
  • Cada alerta dice por qué es sospechosa y qué comprobar. Si fuiste tú (un teléfono nuevo, un viaje al extranjero), no hay que hacer nada.

Solución de problemas

  • Todas las alertas muestran la misma dirección (tu proxy o Cloudflare): añade el proxy a Known proxies de Jellyfin (Dashboard → Networking) para que Jellyfin transmita la dirección real del visitante, y activa The server is behind its own proxy en Settings.
  • No llegan mensajes de Telegram: envía /start al bot otra vez y haz clic en Find; comprueba la severidad mínima del canal.
  • Sin ubicación: comprueba el origen de ubicación en Settings; con MaxMind, comprueba el id de cuenta y la clave.

La compilación es pública; para usar el plugin necesitas una licencia o la prueba gratuita de 30 días.