Comment migrer Jellyfin d’un conteneur vers une pile de services résiliente

Eva Wong est la rédactrice technique et bricoleuse résidente chez ZimaSpace. Geek depuis toujours, passionnée par les laboratoires informatiques personnels et les logiciels open source, elle se spécialise dans la vulgarisation de concepts techniques complexes au moyen de guides pratiques et concrets. Eva pense que l’hébergement personnel doit être amusant, et non intimidant. À travers ses tutoriels, elle aide la communauté à démystifier les configurations matérielles, de la construction de leur premier NAS à la maîtrise des conteneurs Docker.

Migrez Jellyfin en déclarant d’abord son comportement actuel et en protégeant son état persistant, puis en ajoutant des services par étapes réversibles et testées.

Cette procédure s’adresse à un conteneur Docker fonctionnel qui a dépassé le stade d’une commande non documentée ou d’une configuration tout-en-un. L’objectif n’est pas de multiplier les conteneurs, mais de mettre en place un service Jellyfin reproductible avec des montages, des réseaux, des périphériques, des indicateurs d’état, un périmètre de sauvegarde et une procédure de retour arrière clairement définis. Gardez le stockage des médias indépendant de l’état de l’application, conservez l’ancienne instance jusqu’à la réussite des tests d’acceptation et n’ajoutez que des dépendances que le foyer est en mesure de gérer.

Définir ce que la résilience doit couvrir

Déterminez les incidents que la nouvelle pile doit pouvoir gérer : plantage d’un processus Jellyfin, mise à jour défectueuse de l’image, perte du stockage de configuration, indisponibilité d’un mandataire, redémarrage de l’hôte ou perte complète de l’hôte. Chaque incident exige une mesure différente. Une politique de redémarrage aide après l’arrêt d’un processus ; elle ne restaure pas un volume supprimé et ne répare pas un montage de médias inaccessible.

Définissez des objectifs de reprise mesurables pour la configuration, l’historique de lecture et la disponibilité du service. Décidez du temps d’arrêt et de la perte de données acceptables, de la personne à avertir et des éléments qui peuvent être reconstruits. Ce périmètre évite qu’une petite migration domestique ne s’encombre de bases de données, de mandataires, de tableaux de bord et d’automatisations qui ne réduisent aucun risque identifié.

Inventorier le conteneur en cours d’exécution

Consignez la référence exacte de l’image, la commande, les variables d’environnement, les ports publiés, les réseaux, la politique de redémarrage, les identifiants utilisateur et groupe, les mappages de périphériques, les paramètres DNS, les étiquettes, le montage de configuration, le montage du cache, les montages des médias et les secrets. Relevez également le propriétaire et les permissions de chaque chemin sur l’hôte. Une capture d’écran de l’interface d’un conteneur ne constitue pas un dossier de déploiement complet.

Convertissez cet inventaire en définition Compose sans modifier le comportement. La méthode consistant à examiner chaque option de ce guide de migration de Docker run vers Compose est utile, car elle privilégie la reproductibilité comme premier objectif, plutôt que l’ajout de fonctionnalités. Pour la migration initiale, épinglez le condensat de l’image ou la version actuellement utilisée.

Séparer l’état persistant, le cache et les médias

Associez la configuration et l’état de la base de données Jellyfin à un chemin persistant clairement nommé. Placez le cache temporaire et les segments de transcodage dans un chemin distinct afin qu’ils ne soient pas confondus avec des données de sauvegarde critiques. Montez les médias dont vous êtes propriétaire séparément et en lecture seule lorsque le flux de travail le permet ; une couche applicative résiliente ne doit pas brouiller la frontière de protection d’une vaste bibliothèque multimédia.

Arrêtez ou mettez Jellyfin en pause avant la première copie cohérente de l’état, sauf si la méthode de sauvegarde garantit la cohérence de l’application. Consignez les permissions, les sommes de contrôle ou le nombre de fichiers, l’heure de la sauvegarde et l’emplacement de restauration. Ne partez jamais du principe que l’image du conteneur contient les données utilisateur : la définition du déploiement, les secrets, l’état persistant et les références aux médias sont des éléments de récupération distincts.

Vérifiez la restauration avant de modifier le réseau

Créez une cible de restauration temporaire, copiez-y l’état protégé de l’application et démarrez le service Jellyfin épinglé sur un autre port, avec les médias montés en lecture seule. Vérifiez les utilisateurs, les bibliothèques, l’historique de visionnage, les métadonnées, les extensions et un échantillon représentatif de lecture. Détruisez l’instance temporaire et recommencez à partir de la procédure écrite si une étape reposait sur la mémoire.

Une sauvegarde Compose pratique doit préserver le fichier de déploiement, les paramètres d’environnement, les volumes et tout export de base de données cohérent avec l’application. Ce guide de sauvegarde et de mise à niveau de Compose explique pourquoi la copie d’une image seule ou des fichiers d’une base de données active ne constitue pas une procédure de récupération complète.

Basculer vers le service Jellyfin déclaratif

Choisissez une fenêtre de maintenance, arrêtez l’ancien conteneur, effectuez une dernière sauvegarde cohérente de l’état et empêchez l’ancienne instance de redémarrer automatiquement. Lancez le service Compose équivalent avec les mêmes chemins persistants et le même accès aux périphériques. Ne conservez la route publique inchangée qu’après la réussite des vérifications locales de l’état et de la lecture.

Vérifiez l’état des conteneurs, les journaux, la visibilité des bibliothèques, l’accès aux périphériques matériels, la lecture directe, un transcodage représentatif, la gestion des sous-titres et un redémarrage. Si le service ne peut pas accéder à un périphérique ou à un point de montage, arrêtez-vous et rétablissez l’ancien conteneur plutôt que de modifier plusieurs couches sous pression. Le retour arrière consiste à utiliser l’image précédente, épinglée, ainsi que l’état antérieur à la bascule et les paramètres d’exécution d’origine.

Ajoutez les services adjacents une limite à la fois

N’introduisez un proxy inverse que si l’accès distant nécessite une route gérée séparément. Ajoutez une surveillance lorsqu’il existe un signal d’état défini et qu’une personne interviendra en conséquence. Ajoutez un canal d’alerte lorsqu’il faut être averti des boucles de redémarrage, des pertes de stockage ou des échecs de sauvegarde. Chaque service doit avoir un responsable, une décision concernant l’état persistant, un périmètre réseau, une méthode de mise à jour et un effet en cas de défaillance.

La raison architecturale de ces limites est expliquée séparément dans la présentation de ZimaSpace sur les raisons pour lesquelles les déploiements Jellyfin utilisent des piles de services. Pendant la migration, appliquez ce modèle avec prudence : regroupez les composants qui doivent être rétablis ensemble et évitez de rendre la lecture dépendante de tableaux de bord ou d’automatisations facultatifs.

Rendre observables l’état de santé, les mises à jour et les sauvegardes

Définissez l’état de santé selon le parcours de l’utilisateur, et pas seulement selon l’état d’exécution d’un processus. Vérifiez que Jellyfin répond localement, que le point de montage des médias est présent, que la route publique mène au service prévu lorsqu’elle est activée et qu’un fichier connu peut être lu. Acheminez les échecs des vérifications vers un canal de notification déjà utilisé par la personne responsable, en fournissant suffisamment de contexte pour distinguer une défaillance de l’application d’une perte de stockage ou de réseau.

Versionnez la définition Compose, gardez les secrets hors du dépôt et examinez les changements d’image avant le déploiement. Automatisez les sauvegardes uniquement après avoir réussi une restauration manuelle. Le processus décrit dans ce guide de vérification de l’intégrité et de surveillance de Jellyfin montre comment les déclarations, les vérifications, les alertes et les sauvegardes s’articulent ; conservez un point d’approbation et une possibilité de retour arrière pour les mises à jour susceptibles de modifier les données stockées.

Effectuer des exercices de défaillance avant d’abandonner l’ancienne configuration

Redémarrez l’hôte, arrêtez Jellyfin de manière inattendue, rendez le proxy indisponible, déconnectez un chemin d’accès à un support de test et restaurez l’état de l’application dans un emplacement temporaire vierge. Pour chaque exercice, vérifiez l’alerte attendue, l’ordre de récupération et le comportement visible par l’utilisateur. Ne simulez pas une perte de stockage destructrice sur l’unique copie de vos médias.

Consignez le temps de récupération et toutes les commandes manuelles. Un conteneur qui redémarre rapidement mais revient avec une bibliothèque vide ne satisfait pas au test de service. Une sauvegarde qui existe, mais ne peut pas être restaurée dans le délai prévu, ne satisfait pas au test de récupération. Corrigez ces limites avant d’ajouter d’autres services.

Terminer la migration par un contrat d’exploitation stable

Ne supprimez le conteneur d’origine qu’une fois que le nouveau service Jellyfin a résisté à une utilisation domestique normale, à une mise à jour planifiée, au redémarrage de l’hôte et à une répétition de restauration réussie. Archivez les anciens paramètres, la dernière sauvegarde avant la bascule, la définition Compose actuelle, la méthode de récupération des secrets, le plan des points de montage et les étapes de retour arrière, conformément à la politique de conservation choisie.

Arrêtez d’étendre l’infrastructure dès que la pile est reproductible, surveillée, récupérable et compréhensible par la personne qui l’exploite. N’ajoutez un autre nœud ou une autre dépendance que si les exigences mesurées en matière de capacité, de confiance ou de domaine de défaillance l’imposent. La résilience repose sur un état connu et des procédures de récupération éprouvées, pas sur le nombre de conteneurs dans le diagramme.

Configuration de NAS et de serveur

À lire aussi

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.