Jellyfin 10.11.0
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Nos complace presentarles Jellyfin 10.11.0, nuestra nueva versión estable. Probablemente se trata de uno de los lanzamientos más grandes e impactantes que hemos realizado hasta ahora, con cambios masivos en el backend para mejorar el rendimiento, la escalabilidad a largo plazo y la mantenibilidad. Este lanzamiento ha tardado mucho en llegar, con más de 6 meses de desarrollo y otros 6 meses de pruebas RC, lo que ha desbaratado por completo nuestro plan de lanzamientos semestrales, pero definitivamente creemos que los resultados valen la pena, tanto para los usuarios actuales como para la salud a largo plazo del proyecto.
Si solo quieres un resumen rápido de lo que necesitas saber (¡y realmente necesitas saberlo!) para actualizar y poner en marcha tu sistema, continúa leyendo la sección "TL; DR" justo debajo, o sigue leyendo para una explicación completa de todas las características principales y mejoras en Jellyfin 10.11.0. También puedes consultar los registros de cambios completos en los lanzamientos de GitHub del servidor y la interfaz web.
- Joshua
TL; DR
¡ES MUY IMPORTANTE QUE LEAS ESTA SECCIÓN ANTES DE ACTUALIZAR A JELLYFIN 10.11.0! Si no lo haces, podrías tener problemas. Siempre puedes pedir ayuda en nuestro chat si tienes dudas o encuentras dificultades.
-
Como siempre en actualizaciones importantes, asegúrate de DETENER Jellyfin y hacer una COPIA DE SEGURIDAD MANUAL COMPLETA DE TUS DIRECTORIOS DE DATOS Y CONFIGURACIÓN antes de actualizar. Aunque el proceso de actualización debería ser fluido y tiene medidas de protección, hemos visto muchos errores extraños durante las pruebas RC y más vale prevenir que lamentar.
-
¡DEBES estar ejecutando Jellyfin 10.10.7 antes de actualizar a 10.11.0! Es posible que funcione con Jellyfin 10.9.11, pero esto está menos probado. Actualizar desde otras versiones NO es compatible y FALLARÁ; actualiza primero a 10.10.7 y luego a 10.11.0.
-
La actualización inicial incluirá MÚLTIPLES MIGRACIONES DE LARGA DURACIÓN que pueden tardar varias horas dependiendo del tamaño y estado de tu biblioteca. NO CANCELES NI INTERRUMPAS EL SISTEMA durante estas migraciones; déjalas ejecutando toda la noche si es posible para bibliotecas muy grandes. Puedes usar la nueva interfaz de inicio y visor de registros (ver más abajo) desde tu red local para ver el progreso durante la actualización. Consulta la sección siguiente para más detalles sobre el "por qué".
-
La actualización hará una copia de seguridad de tu archivo
library.dbexistente llamadalibrary.db.old. Este archivo se puede usar para recuperarte si la actualización falla. Una vez que hayas actualizado con éxito y Jellyfin 10.11.0 funcione sin problemas, puedes eliminar esta copia de seguridad. Si necesitas intentar las migraciones nuevamente por un fallo, detén Jellyfin, cambia el nombre de este archivo alibrary.db, inicia Jellyfin nuevamente y se reintentará la migración. -
Si has ajustado el Tamaño de Página de la Biblioteca a algo distinto del valor predeterminado de 100, recomendamos restablecerlo por motivos de rendimiento antes de actualizar.
-
Tras actualizar, recomendamos encarecidamente ejecutar un análisis completo de la biblioteca para asegurar que todos los datos se han poblado correctamente. Si no lo haces, podrían aparecer errores extraños si alguna entrada de metadatos estaba corrupta o no se migró correctamente (raro pero posible). Además, los usuarios también deben realizar un análisis de metadatos faltantes en sus bibliotecas de música, ya que esto puede ser necesario para el correcto funcionamiento musical tras la actualización. Aunque no sea estrictamente necesario, realizar este análisis adicional en otras bibliotecas es recomendable para asegurar que todo funcione correctamente.
-
Jellyfin 10.11.0 NO es compatible con sistemas ARM de 32 bits (
armhf), como las Raspberry Pi de primera y segunda generación u otras placas de desarrollo de bajo rendimiento o antiguas, o cualquier sistema ARM que ejecute un sistema operativo de 32 bits. Es obligatorio ejecutar un sistema operativo ARM64 para poder utilizar Jellyfin 10.11.0 en sistemas ARM. Consulta más información más abajo. -
Esta versión también corrige varios fallos de seguridad, tanto propios como de proyectos superiores como DotNET. Recomendamos actualizar a la versión 10.11.0 lo antes posible.
-
Como siempre con las versiones principales de Jellyfin, pueden existir errores, incluso después de 6 meses de pruebas en versión candidata. Este es un segundo recordatorio para realizar una copia de seguridad completa antes de actualizar, ya que es la única forma de volver a una versión anterior si lo necesitas.
¡Y ahora pasamos a las nuevas funciones geniales!
¡La conversión de la base de datos de la biblioteca a EF Core está completa!
Para entender esto, necesitamos un poco de contexto. Durante mucho tiempo, el backend de Jellyfin ha sido un desorden de código espagueti, ya que históricamente, antes de Jellyfin, se prestó muy poca atención a las mejores prácticas a largo plazo durante el desarrollo de nuevas funciones. Esto se manifestó como una base de código completamente plagada de llamadas a la base de datos, escritas como sentencias SQLite directas dentro de otro código, sin prácticamente ninguna centralización de la funcionalidad de gestión de bases de datos en un ORM (sistema de mapeo objeto-relacional).
Esto tuvo tres efectos negativos principales: (1) realizar cualquier cambio en los esquemas de la base de datos requería migraciones manuales complejas y propensas a errores, específicas para cada cambio, con pocas salvaguardas y sin soporte para reversión; (2) era muy difícil añadir nuevas funcionalidades o modificar las existentes sin reescribir grandes bloques de código no relacionado; y (3) bloqueaba completamente el sistema en el uso de SQLite basado en archivos, sin posibilidad de admitir otros motores de bases de datos.
Aquí entra EF Core, un ORM para .NET y C# (el framework y lenguaje en que está escrito Jellyfin), que simplifica y ayuda a gestionar la base de datos, permitiéndonos eliminar todo este código heredado y simplificar enormemente el manejo de bases de datos en Jellyfin. Incluye funciones como un manejador de migraciones automáticas con versionado, interfaces estandarizadas para las llamadas a la base de datos, y la flexibilidad de usar otros motores de bases de datos en el futuro.
El trabajo inicial de conversión comenzó hace casi 5 años con bases de datos más simples como Usuarios y Autenticación, pero el verdadero desafío era la base de datos de la Biblioteca: su enorme complejidad, alcance expansivo y dependencia no solo de la base de datos sino también de archivos XML estáticos en disco, hicieron que fuera un proyecto colosal que se estancó durante años. Entonces apareció @JPVenson, quien con menos de 6 meses en el proyecto asumió esta tarea masiva y la llevó a término.
El resultado final puede no parecer muy notable para un usuario normal: las consultas son más rápidas y los futuros cambios deberían ser menos propensos a errores, pero en gran medida este cambio es transparente. Sin embargo, para el backend y el desarrollo futuro de Jellyfin, esto es enorme. El acceso simplificado a la base de datos nos permitirá escribir código más limpio y robusto, implementar nuevas funciones, realizar migraciones complejas y mucho más, con mucha mayor rapidez y mínimo esfuerzo, abriendo nuevas oportunidades de mejora. Finalmente podremos abordar la enorme cantidad de solicitudes de funciones pendientes, muchas de las cuales eran prácticamente imposibles antes de este cambio. Para los administradores, también abre nuevas posibilidades (aún no oficiales, pero pronto) de ejecutar Jellyfin con sistemas de bases de datos "reales" como PostgreSQL, ofreciendo opciones de redundancia, balanceo de carga y mantenimiento más sencillo. ¡El futuro se ve muy prometedor!
Desduplicación y Migraciones
El núcleo de la migración implica transferir todos los datos de la Biblioteca desde el antiguo library.db a las nuevas estructuras en jellyfin.db. Aunque parece simple, decidimos mejorar activamente el esquema durante la conversión, lo que nos permitió limpiar simultáneamente gran parte del mencionado código espagueti. Así, la migración crea por primera vez referencias cruzadas relacionales adecuadas en la base de datos, incluyendo claves foráneas.
Sin embargo, el inconveniente es que los datos de biblioteca inconsistentes y lógicamente corruptos tienden a causar problemas durante la migración, lo cual ha sido el origen de muchas incidencias. La migración no solo debe reestructurar los datos, sino también corregir estas corrupciones lógicas y limpiar cualquier dato que "ya no tenga sentido", como elementos multimedia sin elemento superior o datos duplicados de Personas para múltiples conjuntos de medios.
Esta deduplicación y limpieza consume mucho tiempo, y su escala depende en gran medida de cuántas entradas lógicamente inconsistentes existan en la base de datos actual. Esto significa esencialmente que cuanto más antigua sea tu base de datos y más entradas corruptas lógicamente contenga, más trabajo requerirá la migración para limpiar todo, prolongando el proceso. Esto también dificulta estimar la duración de la migración: una base de datos con 300,000 entradas sin problemas puede migrarse en minutos, mientras que una con solo 30 series pero inconsistencias graves puede tardar varias horas.
Por lo tanto, reiteramos que al ejecutar la migración, es mejor dejarla correr durante períodos de baja actividad, como durante la noche, y permitir que se complete; si termina rápido, perfecto, y si no, evitarás retrasar el acceso de los usuarios.
Interfaz de usuario de inicio y visor de registros
Una pequeña pero útil característica surgida del trabajo de migración y su prolongado proceso inicial es nuestra nueva Interfaz de Usuario de Inicio y Visor de Registros. Antes de esta función, durante el arranque de Jellyfin (por ejemplo, al ejecutar migraciones), el sistema parecía inactivo: la interfaz no cargaba y parecía que no ocurría nada a menos que tuvieras el nivel de registro en depuración. La Interfaz de Inicio cambia esto proporcionando una WebUI básica accesible solo en tus redes locales configuradas, que muestra el estado actual del proceso de inicio y mensajes de registro mientras el sistema se prepara, dándote mayor tranquilidad sobre lo que sucede. En instancias pequeñas quizás ni siquiera sea visible, pero en instancias grandes de inicio lento resulta inestimable para monitorear el progreso y depurar problemas.

Soporte interno de copia de seguridad y restauración
Uno de los primeros grandes beneficios del nuevo backend es una función muy esperada: ¡soporte interno y en vivo para Copias de Seguridad y Restauración! Ahora puedes tomar una instantánea completa de tu base de datos de metadatos, respaldarla en almacenamiento externo y restaurarla ante fallos importantes. También puedes realizar copias de seguridad periódicas por precaución. Esto ayudará enormemente tanto en el mantenimiento diario como en futuras actualizaciones, sabiendo siempre que tienes una copia válida de tus datos.
El sistema de copia de seguridad y restauración solo puede recuperar sistemas donde se creó originalmente el respaldo, por lo que no es una herramienta para migrar desde otros sistemas operativos o contenedores de terceros.

Almacenamiento en caché agresivo en memoria
El nuevo motor de base de datos está ajustado para almacenar metadatos en memoria de forma agresiva, evitando que las lentas lecturas de disco se conviertan en un cuello de botella; esto era un problema frecuente en versiones anteriores de Jellyfin y motivo de quejas habituales. En la práctica, Jellyfin usará más RAM que antes, hasta el tamaño completo de tu base de datos de biblioteca. Esta memoria no se desperdicia, ya que la aceleración es muy notable, especialmente en bibliotecas grandes, y el sistema intentará ser lo más eficiente posible si otras tareas requieren memoria. Esto significa que la memoria se liberará cuando otros programas necesiten más recursos. Tenlo en cuenta al actualizar, pues parecerá un aumento significativo en la utilización de recursos.
Comportamiento de bloqueo mejorado
El nuevo motor de base de datos también habilita varios modos de bloqueo; para la mayoría de usuarios esto es irrelevante, pero quienes experimenten problemas frecuentes con bloqueos de base de datos ahora pueden ajustar la configuración. Puedes encontrar más detalles sobre esta funcionalidad en esta publicación de blog.
Eliminación del soporte para ARM32 (armhf)
En Jellyfin 10.10.0, desaprobamos el soporte para ARM32 y lo hemos eliminado completamente en Jellyfin 10.11.0; ahora Jellyfin requiere un sistema operativo ARM64 para funcionar en plataformas ARM. En términos prácticos, esto significa abandonar el soporte para SBC ARM muy antiguos o de gama muy baja (Raspberry Pi 1/2, etc.). Constatamos consistentemente que estos SBC antiguos tenían un rendimiento absolutamente deficiente ejecutando Jellyfin, incluso sin transcodificación, y decidimos que eliminar este soporte agilizaría nuestros procesos de lanzamiento y ayudaría a garantizar que los usuarios obtengan la mejor experiencia desde el primer momento. Si aún utilizas uno de estos sistemas, o un SBC ARM más nuevo que no ejecuta un sistema operativo de 64 bits, deberás actualizar tu hardware y/o reinstalar un sistema operativo de 64 bits para actualizar a Jellyfin 10.11.0.
Desaprobación del soporte interno para TLS/SSL
Anunciamos la desaprobación del soporte interno para TLS/SSL en Jellyfin, que planeamos eliminar en Jellyfin 10.12.0. Los mecanismos actuales de TLS internos son engorrosos y no se integran bien con sistemas externos como certbot de Let's Encrypt, lo que implica trabajo manual y reinicios manuales cada vez que se debe actualizar un certificado. Además, compilar con soporte TLS significa dependencias de bibliotecas externas que complican nuestros binarios empaquetados para Linux. Siempre hemos recomendado ejecutar Jellyfin detrás de un reverse proxy, ya que todos ofrecen una integración mucho mejor para TLS/SSL, por lo que en nuestro próximo lanzamiento eliminaremos esta funcionalidad. Para quienes ejecutan una instancia de producción orientada a Internet usando TLS sin reverse proxy, ahora es el momento de configurarlo. A pesar de esta eliminación, planeamos mantener opciones de configuración manual para el sistema TLS integrado de Kestrel, que serviría como alternativa para configurar TLS, pero no estará expuesto a través de la interfaz de usuario y solo se recomendaría para casos de uso muy avanzados y específicos; las instancias normales deberían migrar a reverse proxies.
Verificación de espacio libre
Jellyfin ahora verifica activamente el espacio libre disponible en sus directorios de configuración y datos. Si tienes menos de 2GB de espacio libre en cada directorio de datos, Jellyfin ahora se niega a iniciar para evitar corrupción de datos. Además, se implementaron verificaciones para prevenir ciertas configuraciones incorrectas de rutas que se sabe causan problemas.
Nuevas funciones y mejoras
Tenemos varias nuevas funciones y mejoras para disfrutar:
Experiencia de usuario
-
El rendimiento de búsqueda se ha mejorado enormemente, haciendo mucho más rápido encontrar lo que necesitas.
-
La página de Favoritos ahora incluirá canales de TV en vivo, videos musicales, álbumes de fotos, fotos y temporadas, además de los tipos de medios existentes.
-
Ahora tenemos soporte de decodificación HEVC para Firefox 134+. Más información disponible en la página de soporte para clientes.
-
Se puede desactivar el estilo nativo de subtítulos.
-
Las series pueden mostrarse agrupadas en colecciones al visualizar bibliotecas.
-
Los temas multimedia ahora se reproducirán en orden aleatorio.
-
Se pueden asignar roles a actores invitados, por ejemplo, Kelsey Grammer como Capitán Morgan Bateson.
-
Se puede configurar una imagen "splash screen" personalizable como fondo en la página de inicio de sesión.
-
El diseño experimental tiene una navegación rediseñada y controles para filtrar y ordenar bibliotecas.
Experiencia de administrador
-
El panel de control ahora muestra estadísticas del número de elementos multimedia en el servidor y el espacio de almacenamiento disponible.
-
Los proveedores de segmentos multimedia pueden configurarse por biblioteca, similar a otros proveedores de metadatos.
-
Se puede activar la decodificación AV1 para la aceleración por hardware VideoToolbox.
-
Los sintonizadores M3U pueden configurarse para usar la tasa de fotogramas nativa.
-
Las opciones de personalización de marca se ampliaron enormemente, incluyendo soporte para imágenes "splash screen", soporte extendido para avisos legales y CSS personalizado; incluso más funciones están planificadas para permitir que los administradores adapten completamente la experiencia de usuario a su marca.
-
La migración de las páginas del panel de control a nuestra nueva pila tecnológica está casi completa, con la mayoría de páginas convertidas, ofreciendo un diseño organizativo mucho más simple y claro.
-
Al reemplazar archivos, Jellyfin ahora reconocerá este cambio y eliminará los datos relacionados (capítulos, archivos de trickplay, subtítulos extraídos y adjuntos) durante el análisis, asegurando que estos datos se regeneren para que coincidan con el nuevo archivo.
Transcodificación y Manejo de Medios
-
Hemos migrado al nuevo FFmpeg 7.1 de upstream, que trae muchas mejoras.
-
Ahora admitimos mapeo de tonos HDR basado en LUT 3D para gráficos Intel HD/UHD y Rockchip RK3588, mejorando el rendimiento.
-
Ahora admitimos mapeo de tonos Dolby Vision Profile 5 en Rockchip RK3588.
-
Ahora tenemos un renderizado más preciso de subtítulos ASS/SSA al usar transcodificación por hardware.
-
Ahora admitimos decodificación por hardware AV1 para Apple VideoToolbox.
-
Hemos mejorado nuestro manejo de metadatos HDR dinámicos, lo que implica detectar correctamente videos HDR10+ y eliminar selectivamente metadatos DoVi o HDR10+ para evitar pantallas negras en dispositivos que solo admiten un tipo de metadatos HDR dinámicos.
Cambios en el Desarrollo de Clientes
Los siguientes cambios aplican a todos los desarrolladores de aplicaciones cliente. Por favor, revísenlos detenidamente y actualicen sus aplicaciones según sea necesario.
API HTTP
-
Hemos añadido una nueva opción para que los desarrolladores prueben sus clientes con métodos de autorización obsoletos desactivados. Planeamos eliminar los métodos de autorización antiguos en la versión 10.12.0. Más detalles sobre cómo autorizar y probar están disponibles en este documento.
-
Las operaciones
OnPlaybackStart,OnPlaybackProgressyOnPlaybackStoppedahora están obsoletas. Use en su lugar las operacionesReportPlaybackStart,ReportPlaybackProgressyReportPlaybackStopped, ya que las primeras se eliminarán en una versión futura. -
Se ha añadido una nueva operación
GetSystemStoragepara recuperar información sobre el almacenamiento del servidor. -
Se ha añadido una nueva
BackupApipara listar, crear y restaurar copias de seguridad. -
Las letras ahora contienen señales para permitir la sincronización de palabras individuales.
-
Las clasificaciones parentales ahora se han movido a la nueva propiedad
ratingScoreque permite subpuntuaciones. -
El servidor ahora puede devolver
503 Service Unavailablecuando está en proceso un inicio/apagado/reinicio del servidor. Los clientes deben esperar este código, reaccionar al encabezadoRetry-After: secy reintentar la operación según sea necesario.
Complementos
-
Todo el acceso a la base de datos debe hacerse ahora mediante EF Core. El servidor ya no aceptará SQL crudo.
-
Los complementos ahora pueden proporcionar acceso personalizado a bases de datos. Esta es una API ALTAMENTE experimental y está sujeta a cambios, con el objetivo de estabilizarse en la versión 10.12.0.
-
Los complementos de metadatos deben usar la nueva interfaz para proveedores de URL externas para proporcionar mejores nombres a los enlaces de metadatos externos.
¡Feliz visualización!