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
- Menu : Stacks → Add stack
- Nom :
handbrake - 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
- 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 :
- Créez un preset de conversion adapté à vos besoins
- Les fichiers déposés dans
/media/freebox/Téléchargementsseront automatiquement détectés - Les fichiers convertis seront sauvegardés dans
/media/synology/films - L’option
AUTOMATED_CONVERSION_KEEP_SOURCE: 0supprime 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 :
- Containers → HandBrake
- 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