TL;DR : la migration tient en dix secondes et les livres arrivent enfin avec leurs couvertures, à condition de relancer un rafraîchissement complet. Avant de passer l’image en 12.0, ouvrez la page Transcodage et notez vos réglages : les nôtres n’ont pas survécu.
Jellyfin, le serveur multimédia libre qu’on héberge chez soi, abandonne son « 10. » : ce qui devait être la 10.12 s’appelle 12.0, et le projet annonce une base de données refondue, des livres et des bandes dessinées lus sans plugin, l’interface « Modern » par défaut et FFmpeg 8.1. Les notes de version exigent une sauvegarde avant de migrer. On a voulu voir pourquoi.
Le protocole
Une 10.11.11 propre en Docker, trois bibliothèques (livres, musique, films), un balayage. Puis l’image passée en 12.0 sur le même dossier de configuration. Chaque image se tire en dix secondes : 810 Mo pour la 10.11.11, 867 Mo pour la 12.0.

Sans le plugin Bookshelf, la 10.11 range les EPUB par nom de fichier, sans couverture ni auteur.
La migration : dix secondes, une sauvegarde, une erreur

Au premier démarrage, la 12.0 sauvegarde jellyfin.db elle-même, applique 18 migrations de schéma et 13 migrations de code, optimise la base et annonce « Startup complete » en 9,6 secondes. La 10.11.11 avait mis 19,5 secondes sur la même machine, sans rien à migrer. Sur une base minuscule, ce chiffre dit surtout que la mécanique est propre.
La ligne rouge est ailleurs : Error loading configuration file: encoding.xml. Le fichier écrit par la 10.11 contient <EncoderPreset xsi:nil="true" />, une valeur nulle que la 12.0 ne sait plus lire. Elle rejette alors le fichier entier et repart des valeurs par défaut. On a rejoué la migration après avoir enregistré, par l’API de la 10.11 comme le fait l’interface web, une accélération VAAPI et un CRF H.264 à 20. Après le passage en 12.0 : accélération à none, CRF à 23, fichier réécrit. Un seul indice dans le journal, aucun dans l’interface.
Les livres, à condition d’insister
Après la migration, un balayage ordinaire a duré 3,2 secondes et n’a rien changé : mêmes pavés bleus. Les notes de version parlent d’un balayage complet ; c’est un rafraîchissement des métadonnées en remplacement qu’il faut lancer, depuis le menu de la bibliothèque. Cinq secondes plus tard :

Titres, auteurs, genres et couvertures sortent de l’OPF de chaque EPUB. Un livre déposé après la migration reçoit tout ça au simple balayage, avec une bizarrerie : il hérite du nom de son dossier comme nom de série.

Le ComicInfo.xml glissé dans notre CBZ est lu en entier : série, numéro, résumé, scénariste, dessinateur, éditeur, et la première page devient la couverture. Ce que faisait le plugin, sans le plugin.
Ce qu’on n’a pas vu changer
L’OGG Vorbis était déjà reconnu comme audio en 10.11.11. Notre vidéo de mire, Mire (2026).mp4, a été identifiée comme Dans la ligne de mire de 1993 sur les deux versions : la correspondance de titres reste aussi généreuse. Mémoire après balayage : 497 Mio en 10.11, 512 en 12.0.
Notre avis
Migrez, dans cet ordre : sauvegarde, lecture de la page Transcodage, passage en 12.0, rafraîchissement complet des livres, retour sur la page Transcodage. Le projet a fait le travail difficile, la base, et vite. Reste ce détail de fichier XML qui, sur une instance qui transcode pour trois téléviseurs, se remarquera un soir de film. Si vous cherchiez une raison de ranger vos EPUB à côté de vos films, elle est là : on a déjà un lecteur pour la musique, il manque le bon pour les livres.