💾 Partager un volume de médias entre Jellyfin et FileBrowser¶
Procédure compagnon des guides Installer Jellyfin et Installer FileBrowser, qui suppose les deux conteneurs déjà installés. Plutôt qu'un stockage dédié à Jellyfin, un unique volume LVM thin est créé sur l'hôte Proxmox puis bind-monté à la fois dans Jellyfin (lecture des médias) et dans FileBrowser (dépôt/gestion des fichiers par les utilisateurs) — évite de dupliquer les fichiers entre les deux services.
Valeurs d'exemple utilisées dans cette procédure :
| Paramètre | Valeur d'exemple |
|---|---|
| ID du conteneur Jellyfin | 205 |
| ID du conteneur FileBrowser | 202 |
| Volume LVM thin partagé | pve/shared-media, 300G, monté sur /mnt/shared-media (host) |
| Chemin médias dans Jellyfin | /data |
| Chemin médias dans FileBrowser | /srv/media |
1. Créer et monter le volume sur l'hôte Proxmox¶
# Volume LVM thin (ne consomme que l'espace réellement utilisé)
lvcreate -n shared-media -V 300G --thinpool pve/data
mkfs.ext4 -L shared-media /dev/pve/shared-media
mkdir -p /mnt/shared-media
mount /dev/pve/shared-media /mnt/shared-media
echo "/dev/pve/shared-media /mnt/shared-media ext4 defaults 0 2" >> /etc/fstab
# Propriétaire = utilisateur FileBrowser (uid/gid mappés host, cf conteneur non privilégié)
chown 100999:100996 /mnt/shared-media
chmod 775 /mnt/shared-media
for dir in films series musique photos; do
mkdir -p /mnt/shared-media/$dir
chown 100999:100996 /mnt/shared-media/$dir
chmod 775 /mnt/shared-media/$dir
done
L'uid/gid
100999:100996correspond au mapping unprivileged LXC de l'utilisateurfilebrowser(uid 999 / gid 996 dans le conteneur 202) vers l'hôte (+100000). Adapter selon le uid/gid réel de votre service dans le conteneur cible.
2. Bind mount dans les deux conteneurs¶
pct set 202 --mp1 /mnt/shared-media,mp=/srv/media # FileBrowser
pct set 205 --mp0 /mnt/shared-media,mp=/data # Jellyfin
pct stop 202 && pct start 202
pct stop 205 && pct start 205
3. Ajouter la source dans la config FileBrowser¶
Dans /etc/filebrowser/config.yaml du conteneur FileBrowser :
server:
sources:
- path: "/srv/files"
name: "Files"
- path: "/srv/media"
name: "Médias"
config:
defaultEnabled: true
pct exec 202 -- systemctl restart filebrowser
config.defaultEnabled: true donne accès à cette source à tout nouveau compte créé après ce changement — les comptes existants doivent recevoir l'accès manuellement (Settings → Users → éditer l'utilisateur → ajouter la source), defaultEnabled n'est pas rétroactif.
4. Créer les bibliothèques dans Jellyfin¶
/data contient maintenant les mêmes fichiers que /srv/media côté FileBrowser. Suivre l'étape "Créer les bibliothèques" du guide Installer Jellyfin pour les déclarer (/data/films, /data/series, /data/musique) — cette étape inclut un piège connu (scan interrompu) à lire avant de continuer.
Migration depuis un ancien serveur de médias¶
Si les médias existent déjà ailleurs, un simple rsync vers le volume avant l'étape 4 suffit :
rsync -av --progress root@ancien-serveur:/chemin/vers/media/ /mnt/shared-media/
chown -R 100999:100996 /mnt/shared-media