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 homelabs et les logiciels open source, elle se spécialise dans la traduction de concepts techniques complexes en guides accessibles et pratiques. Eva croit que l’auto-hébergement doit être amusant, pas intimidant. À travers ses tutoriels, elle donne à la communauté les moyens de démystifier les configurations matérielles, depuis la construction de leur premier NAS jusqu’à la maîtrise des conteneurs Docker.

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

Cette procédure s’applique à un conteneur Docker fonctionnel qui a dépassé une commande non documentée ou une architecture tout-en-un. L’objectif n’est pas d’avoir le maximum de conteneurs, mais de disposer d’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 restauration clairement définis. Gardez le stockage des médias indépendant de l’état de l’application, préservez l’ancienne instance jusqu’à la réussite des tests d’acceptation et n’ajoutez que les dépendances que le foyer peut gérer.

Définissez ce que la résilience doit couvrir

Choisissez les pannes que la nouvelle pile doit gérer : plantage du processus Jellyfin, mise à jour défectueuse de l’image, perte du stockage de configuration, indisponibilité d’un proxy, redémarrage de l’hôte ou perte complète de l’hôte. Chacune nécessite un contrôle différent. 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 récupération mesurables pour la configuration, l’état de visionnage et la disponibilité du service. Décidez quelle durée d’interruption et quelle perte de données sont acceptables, qui reçoit une alerte et quelles parties peuvent être reconstruites. Ce périmètre évite qu’une petite migration domestique accumule des bases de données, des proxys, des tableaux de bord et des automatisations qui ne réduisent aucun risque identifié.

Inventoriez le conteneur en fonctionnement

Notez 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 d’utilisateur et de groupe, les mappages de périphériques, les paramètres DNS, les étiquettes, le montage de configuration, le montage du cache, les montages de 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.

Traduisez cet inventaire en une définition Compose sans modifier le comportement. La méthode détaillée indicateur par indicateur de ce guide de migration de Docker run vers Compose est utile, car elle considère la reproductibilité comme première étape, et non l’ajout de fonctionnalités. Pour la première bascule, verrouillez le condensat ou la version de l’image actuellement utilisée.

Séparez 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 et les segments de transcodage temporaires sur un chemin distinct afin qu’ils ne soient pas confondus avec les données critiques à sauvegarder. Montez les médias détenus indépendamment et en lecture seule lorsque le fonctionnement le permet ; une couche applicative résiliente ne doit pas brouiller la limite de protection d’une vaste bibliothèque multimédia.

Arrêtez ou mettez Jellyfin au repos avant la première copie cohérente de l’état, sauf si la méthode de sauvegarde garantit la cohérence applicative. Notez les permissions, les sommes de contrôle ou le nombre de fichiers, l’heure de la sauvegarde et son emplacement de restauration. Ne supposez jamais 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.

Validez la restauration avant de modifier le réseau

Créez une cible de restauration temporaire, copiez-y l’état applicatif protégé et démarrez le service Jellyfin verrouillé 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 plug-ins et la lecture de plusieurs contenus représentatifs. Détruisez l’instance temporaire et recommencez à partir de la procédure écrite si une étape dépendait de votre 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 de fichiers de base de données en cours d’utilisation ne constitue pas un chemin de récupération complet.

Basculez vers le service Jellyfin déclaratif

Choisissez une fenêtre de maintenance, arrêtez l’ancien conteneur, effectuez la dernière sauvegarde cohérente de l’état et empêchez l’ancienne instance de redémarrer automatiquement. Démarrez 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 qu’après la réussite des vérifications locales de l’état et de la lecture.

Validez l’état du conteneur, 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 voit pas un périphérique ou un montage, arrêtez-vous et restaurez l’ancien conteneur plutôt que de modifier plusieurs couches sous pression. La restauration repose sur l’ancienne image verrouillée, l’état antérieur à la bascule et les paramètres d’exécution d’origine.

Ajoutez les services voisins une limite à la fois

N’introduisez un proxy inverse que lorsque l’accès entrant à distance nécessite une route gérée séparément. Ajoutez la supervision lorsqu’un indicateur d’état est défini et qu’une personne interviendra en conséquence. Ajoutez un canal d’alerte lorsque les boucles de redémarrage, la perte de stockage ou les échecs de sauvegarde doivent être détectés. 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 panne.

La raison architecturale de ces limites est expliquée séparément dans l’article de ZimaSpace consacré à l’utilisation de piles de services pour les déploiements Jellyfin. Pendant la migration, appliquez ce modèle avec prudence : regroupez les composants qui doivent être restaurés ensemble et évitez de rendre la lecture dépendante de tableaux de bord ou d’automatisations facultatifs.

Rendez l’état, les mises à jour et les sauvegardes observables

Définissez l’état de santé sur le parcours utilisateur, et pas seulement comme le fonctionnement d’un processus. Vérifiez que Jellyfin répond localement, que le montage des médias est présent, que la route publique atteint le service prévu lorsqu’elle est activée et qu’un fichier connu peut être lu. Acheminez les échecs vers un canal de notification déjà utilisé par l’opérateur, avec 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. N’automatisez les sauvegardes qu’après la réussite d’une restauration manuelle. Le fonctionnement décrit dans ce guide des contrôles d’état et de la supervision de Jellyfin montre comment les déclarations, les contrôles, les alertes et les sauvegardes s’articulent ; conservez un point d’approbation et de restauration pour les mises à jour susceptibles de modifier l’état stocké.

Réalisez des exercices de panne avant d’abandonner l’ancien chemin

Redémarrez l’hôte, arrêtez Jellyfin de manière inattendue, rendez le proxy indisponible, déconnectez un chemin de médias de test et restaurez l’état applicatif dans un emplacement temporaire propre. Confirmez l’alerte attendue, l’ordre de récupération et le comportement visible par l’utilisateur pour chaque exercice. Ne simulez pas une perte de stockage destructive sur l’unique copie des médias.

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

Clôturez la migration par un contrat d’exploitation stable

Ne retirez l’ancien conteneur qu’après que le nouveau service Jellyfin a supporté l’utilisation normale du foyer, une mise à jour planifiée, un redémarrage de l’hôte et une répétition propre de la restauration. Archivez les anciens paramètres, la dernière sauvegarde précédant la bascule, la définition Compose actuelle, la méthode de récupération des secrets, la cartographie des montages et les étapes de restauration conformément à la politique de conservation choisie.

Arrêtez d’étendre la pile lorsqu’elle est reproductible, supervisée, récupérable et compréhensible par son opérateur. N’ajoutez un autre nœud ou une autre dépendance que lorsqu’une exigence mesurée de capacité, de confiance ou de domaine de panne l’impose. La résilience vient d’un état connu et d’une récupération répétée, pas du nombre de conteneurs dans le schéma.

Configuration NAS et serveur

Plus à lire

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.