Skip to content

Jellyfin - Serveur Streaming Média

Serveur média open-source permettant streaming de films, séries, musique sur tous devices.

Informations Générales

Paramètre Valeur
Container LXC 100 - docker-media
IP:Port 192.168.1.11:8096
Image Docker jellyfin/jellyfin:latest
Version 10.10.3
Transcoding Intel HD Graphics 2000 (iGPU)

Architecture

graph LR
    A[Client Web/Mobile] -->|HTTP| B[Jellyfin :8096]
    B --> C[Intel iGPU<br/>Transcoding]
    B --> D[MergerFS Pool<br/>/mnt/storage]
    D --> E[movies/]
    D --> F[series/]

    style B fill:#94c9ff
    style C fill:#ffe6a8
    style D fill:#d4edda

Configuration Docker

Fichier : /root/docker-compose/docker-compose.yml (LXC 100)

services:
  jellyfin:
    container_name: jellyfin
    image: jellyfin/jellyfin:latest
    ports:
      - "8096:8096"
      - "8920:8920" # HTTPS
      - "7359:7359/udp" # Auto-discovery
      - "1900:1900/udp" # DLNA
    environment:
      - TZ=Europe/Paris
      - JELLYFIN_PublishedServerUrl=http://192.168.1.11:8096
    volumes:
      - /root/docker-compose/jellyfin/config:/config
      - /root/docker-compose/jellyfin/cache:/cache
      - /mnt/storage:/media:ro
    devices:
      - /dev/dri:/dev/dri # Intel iGPU passthrough
    group_add:
      - "44" # video group
      - "107" # render group
    restart: unless-stopped

Bibliothèques Média

Films

  • Path : /media/movies
  • Type : Films
  • Scanner : TheMovieDB
  • Language : French (Preferred), English

Séries TV

  • Path : /media/series
  • Type : Séries
  • Scanner : TheTVDB
  • Language : French (Preferred), English

Vérification paths

pct exec 100 -- ls -la /mnt/storage/movies
pct exec 100 -- ls -la /mnt/storage/series

Hardware Transcoding (Intel iGPU)

Configuration Active

Dashboard → Playback → Transcoding

  • Hardware acceleration : Intel QuickSync (QSV)
  • Enable hardware decoding :
  • ✅ H264
  • ✅ HEVC
  • ✅ VC1
  • Enable hardware encoding :
  • ✅ H264
  • ✅ HEVC
  • Enable VPP Tone mapping : ✅ (HDR → SDR)
  • Prefer OS native DXVA or VA-API hardware decoders :

Vérification iGPU Disponible

# Depuis LXC 100
ls -la /dev/dri
# Résultat attendu :
# drwxr-xr-x 3 root root       100 Jan 26 10:00 .
# drwxr-xr-x 8 root root      3420 Jan 26 10:00 ..
# crw-rw---- 1 root video 226,   0 Jan 26 10:00 card0
# crw-rw---- 1 root render 226, 128 Jan 26 10:00 renderD128

# Test transcoding avec vainfo
docker exec jellyfin vainfo
# Attendu : Intel HD Graphics 2000 détecté

Test Transcoding

  1. Lecture vidéo HEVC 1080p depuis client web
  2. Dashboard → Playback Activity
  3. Vérifier "Transcode Reason : DirectPlay not supported"
  4. Vérifier "Video Codec : h264 (qsv)"

Performances Transcoding

Codec Source Résolution CPU Usage iGPU Usage FPS
H264 1080p 1920x1080 15% 45% 60 fps
HEVC 1080p 1920x1080 10% 60% 50 fps
HEVC 4K 3840x2160 20% 85% 25 fps

Note : Sans iGPU, CPU transcoding 1080p utiliserait 90%+ CPU.

Utilisateurs et Accès

Admin Principal

  • Username : admin
  • Permissions : Full admin access
  • Libraries : All

Création Nouvel Utilisateur

Dashboard → Users → Add User

Username: user_name
Password: [secure_password]
Libraries Access:
  - Movies: 
  - Series: 
Permissions:
  - Allow remote access: 
  - Enable media playback: 
  - Allow media deletion: 

Monitoring

Dashboard Jellyfin

http://192.168.1.11:8096/web/index.html#!/dashboard

  • Active Devices
  • Playback Activity (transcoding en cours)
  • Server Activity (CPU, RAM, bandwidth)

Logs Docker

# Logs temps réel
docker logs -f jellyfin

# Dernières 100 lignes
docker logs --tail 100 jellyfin

# Erreurs seulement
docker logs jellyfin 2>&1 | grep -i error

Métriques Système

# CPU/RAM usage container
docker stats jellyfin

# iGPU usage
intel_gpu_top  # depuis host Proxmox

Maintenance

Mise à Jour

# LXC 100
cd /root/docker-compose
docker compose pull jellyfin
docker compose up -d jellyfin

Scan Bibliothèques

Automatique : Toutes les 12h
Manuel : Dashboard → Libraries → Scan All Libraries

# Scan via API
curl -X POST "http://192.168.1.11:8096/Library/Refresh" \
  -H "Authorization: MediaBrowser Token=YOUR_API_KEY"

Backup Configuration

# Config et database
tar -czf /backup/jellyfin-config-$(date +%Y%m%d).tar.gz \
  /root/docker-compose/jellyfin/config

# Restauration
tar -xzf /backup/jellyfin-config-YYYYMMDD.tar.gz -C /
docker restart jellyfin

Nettoyage Cache

# Cache transcoding (peut devenir gros)
du -sh /root/docker-compose/jellyfin/cache
rm -rf /root/docker-compose/jellyfin/cache/*
docker restart jellyfin

Troubleshooting

Transcoding Échoue (Fallback CPU)

Symptôme : Lecture lente, CPU 90%+

# Vérifier /dev/dri accessible
docker exec jellyfin ls -la /dev/dri

# Vérifier groups
docker exec jellyfin id jellyfin
# Doit inclure video(44) et render(107)

# Recréer container avec bons groups
docker compose down jellyfin
docker compose up -d jellyfin

Bibliothèque Vide

# Vérifier mount point
docker exec jellyfin ls /media/movies
docker exec jellyfin ls /media/series

# Permissions
pct exec 100 -- chmod -R 755 /mnt/storage

Plantage au Démarrage

# Logs détaillés
docker logs jellyfin

# Réinitialiser DB corrompue
docker stop jellyfin
mv /root/docker-compose/jellyfin/config/data/library.db \
   /root/docker-compose/jellyfin/config/data/library.db.old
docker start jellyfin
# Re-scan bibliothèques

Ressources