Guide complet : Installer HandBrake sur ZimaOS avec montages réseau NFS et SMB

Introduction

Ce tutoriel vous guide pas à pas pour installer et configurer HandBrake sur ZimaOS avec des montages réseau permanents. HandBrake surveillera automatiquement un dossier sur votre Freebox et encodera les vidéos vers votre NAS Synology.

Prérequis :

  • ZimaOS installé sur un mini PC
  • Accès SSH root à ZimaOS
  • Une Freebox avec partage SMB activé
  • Un NAS Synology avec partage NFS configuré
  • Portainer installé (via le magasin d’applications ZimaOS)

Architecture finale :

  • Source (watch) : Freebox via SMB → /media/freebox/Téléchargements
  • Destination (output) : Synology via NFS → /media/synology/films
  • Configuration : SSD local → /media/SSD-Storage/docker/handbrake/config

Étape 1 : Connexion SSH à ZimaOS

ssh root@ADRESSE_IP_ZIMAOS

Étape 2 : Vérifier la configuration réseau

Vérifiez que ZimaOS peut communiquer avec vos équipements réseau :

# Afficher la configuration réseau
ip a

# Vérifier la connectivité (les Freebox peuvent bloquer les pings)
nc -zv 192.168.1.254 445  # Port SMB Freebox
showmount -e 192.168.1.24  # Partages NFS Synology

Résultat attendu pour le Synology :

Export list for 192.168.1.24:
/volume1/video 192.168.1.75

Étape 3 : Monter le partage Freebox (SMB/CIFS)

3.1 Créer le fichier de credentials

# Créer le dossier de configuration
mkdir -p /DATA/config

# Créer le fichier credentials
nano /DATA/config/.freebox_credentials

Contenu du fichier :

username=VOTRE_USER_FREEBOX
password=VOTRE_PASS_FREEBOX

Sécuriser le fichier :

chmod 600 /DATA/config/.freebox_credentials

3.2 Créer le point de montage et tester

# Créer le point de montage
mkdir -p /media/freebox

# Tester le montage manuel
mount -t cifs //192.168.1.254/nvme /media/freebox -o credentials=/DATA/config/.freebox_credentials,uid=0,gid=0,iocharset=utf8

# Vérifier
df -h | grep freebox
ls -la /media/freebox/

3.3 Rendre le montage permanent

nano /etc/fstab

Ajouter cette ligne :

//192.168.1.254/nvme  /media/freebox  cifs  credentials=/DATA/config/.freebox_credentials,uid=0,gid=0,iocharset=utf8,_netdev,x-systemd.automount  0  0

Recharger systemd :

systemctl daemon-reload

Tester le montage via fstab :

umount /media/freebox
mount /media/freebox
df -h | grep freebox

Étape 4 : Monter le partage Synology (NFS)

4.1 Créer le point de montage et monter

# Créer le point de montage
mkdir -p /media/synology

# Monter le partage NFS
mount -t nfs 192.168.1.24:/volume1/video /media/synology

# Vérifier
df -h | grep synology
ls -la /media/synology/

4.2 Rendre le montage permanent

nano /etc/fstab

Ajouter cette ligne :

192.168.1.24:/volume1/video  /media/synology  nfs  defaults,_netdev,x-systemd.automount  0  0

Recharger systemd :

systemctl daemon-reload

Tester :

umount /media/synology
mount /media/synology
df -h | grep synology

Étape 5 : Préparer la structure pour Docker

5.1 Créer les dossiers pour HandBrake

# Créer la structure sur le SSD
mkdir -p /media/SSD-Storage/docker/handbrake/config

# Vérifier les permissions
ls -la /media/SSD-Storage/docker/handbrake/

5.2 Vérifier l’arborescence complète

# Vérifier tous vos montages
df -h | grep -E 'freebox|synology|SSD'

Résultat attendu :

//192.168.1.254/nvme           3.7T     0  3.7T   0% /media/freebox
192.168.1.24:/volume1/video     16T  1.8T   14T  12% /media/synology
/dev/sda                       3.7T     0  3.7T   0% /media/SSD-Storage

Étape 6 : Créer le stack Docker Compose pour HandBrake

6.1 Ouvrir Portainer

Accédez à Portainer dans votre navigateur :

http://ADRESSE_IP_ZIMAOS:9000

6.2 Créer un nouveau stack

  1. Menu : StacksAdd stack
  2. Nom : handbrake
  3. Collez le Docker Compose suivant :
version: "3.9"
services:
  handbrake:
    image: jlesage/handbrake:latest
    container_name: HandBrake
    hostname: handbrake
    mem_limit: 20g
    mem_reservation: 12g
    cpu_shares: 1024
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:5800
      interval: 30s
      timeout: 10s
      retries: 3
    ports:
      - 5800:5800
    volumes:
      - /media/freebox/Téléchargements:/watch:rw
      - /media/synology/films:/output:rw
      - /media/SSD-Storage/docker/handbrake/config:/config:rw
    environment:
      USER_ID: 0
      GROUP_ID: 0
      TZ: Europe/Paris
      DARK_MODE: 1
      VNC_LISTENING_PORT: -1
      AUTOMATED_CONVERSION: 1
      AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS: 5
      AUTOMATED_CONVERSION_NO_GUI_PROGRESS: 0
      LANG: fr_FR.UTF-8
      HANDBRAKE_GUI: 1
      AUTOMATED_CONVERSION_KEEP_SOURCE: 0
    restart: always
    networks:
      - handbrake_network

networks:
  handbrake_network:
    driver: bridge
  1. Cliquez sur Deploy the stack

Étape 7 : Accéder à HandBrake

Une fois le conteneur démarré, accédez à l’interface web :

http://ADRESSE_IP_ZIMAOS:5800

Configuration recommandée dans HandBrake :

  1. Créez un preset de conversion adapté à vos besoins
  2. Les fichiers déposés dans /media/freebox/Téléchargements seront automatiquement détectés
  3. Les fichiers convertis seront sauvegardés dans /media/synology/films
  4. L’option AUTOMATED_CONVERSION_KEEP_SOURCE: 0 supprime les fichiers sources après conversion

Étape 8 : Mettre à jour Portainer (bonus)

Si Portainer signale une mise à jour disponible :

# Arrêter et supprimer l'ancien conteneur
docker stop portainer
docker rm portainer

# Télécharger la dernière version
docker pull portainer/portainer-ce:latest

# Recréer le conteneur (adaptez si nécessaire)
docker run -d \
  --name portainer \
  --restart=always \
  -p 9000:9000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Vérifications et dépannage

Vérifier que les montages sont actifs

df -h | grep -E 'freebox|synology'
mount | grep -E 'freebox|synology'

Vérifier les logs HandBrake

Dans Portainer :

  1. ContainersHandBrake
  2. Onglet Logs

Ou en ligne de commande :

docker logs -f HandBrake

Tester les permissions

# Vérifier l'accès en lecture (source)
ls -la /media/freebox/Téléchargements/

# Vérifier l'accès en écriture (destination)
touch /media/synology/films/test.txt
rm /media/synology/films/test.txt

En cas de problème de montage au redémarrage

# Remonter manuellement
mount -a

# Ou individuellement
mount /media/freebox
mount /media/synology

Optimisations possibles

Limiter la bande passante réseau

Si HandBrake sature votre réseau, limitez la vitesse dans le Docker Compose :

    network_mode: bridge
    sysctls:
      - net.ipv4.tcp_window_scaling=1

Planifier les conversions

Utilisez l’option AUTOMATED_CONVERSION_SCHEDULE pour ne convertir que la nuit :

    environment:
      AUTOMATED_CONVERSION_SCHEDULE: "0 2 * * *"  # 2h du matin

Activer l’accélération matérielle

Si votre CPU supporte Quick Sync (Intel) ou NVENC (Nvidia) :

    devices:
      - /dev/dri:/dev/dri  # Pour Intel Quick Sync
    environment:
      HANDBRAKE_VIDEO_ENCODER: qsv_h264  # ou nvenc_h264

Conclusion

Vous disposez maintenant d’une solution complète et automatisée pour encoder vos vidéos :

✅ Montages réseau permanents (SMB + NFS)
✅ HandBrake en mode automatique
✅ Stockage optimisé (config sur SSD, source/destination sur réseau)
✅ Interface web accessible
✅ Redémarrage automatique des services

Ressources utiles :


Article rédigé le 8 novembre 2025 – Testé sur ZimaOS avec HandBrake jlesage/handbrake:latest