ConvertX – un convertisseur de fichier open-source et self-host

Contexte

  • Mise en service : 20 février 2026
  • Objectif : Avoir un container dédier à la conversion de fichier et ne plus dépendre de site web tierce propriétaire
  • URL https://convert.freewebworld.fr en libre accès libre a vous de l’utiliser ou d’utilisé Convertx.org
  • Caractéristique : les fichier sont supprimer au bout d’une heure après la conversion

depuis que je gère ce portfolio souvent je converti mes fichiers images en .avif un format moderne et ultra compacte pratique pour être sure que le site charge rapidement sauf que ma problématique est la suivante : jusqu’à maintenant j’utilise des outils de conversion en ligne
il y a quelques problèmes a cela

  • la confidentialité ou les données vont sont t’elle supprimer correctement
  • limitation conversion a 10 fichiers par site en moyenne
  • la dépendance a un outil que l’on ne maitrise pas et qui pourrais disparaitre

en parcourant le web je suis tombé sur cette article de Korben https://korben.info/convertx-convertisseur-fichiers-self-hosted-docker.html qui parler de ce système
un outil open-source permettant la conversion de fichier facilement ConvertX, github_ConvertX fonctionnant en container docker

Voici quelques captures montrant le fonctionnement du logiciel.
Sur la première, on charge les fichiers et on choisit le format dans mon cas AVIF avec FFmpeg puis on clique sur Convertir.
Sur la deuxième image, après quelques secondes, le fichier est converti.

Ici, on voit la différence de poids entre le format PNG et AVIF : une division par deux pour une qualité identique.

Le déploiement en deux fois

Premier déploiement sur ma vm dédier au conteneur docker

Premier déploiement : mon conteneur est isolé en 127.0.0.1, en mode bridge sur un port spécifique, et c’est le reverse proxy Nginx dans la VM qui gère la communication vers l’extérieur, laquelle passe ensuite par un autre reverse proxy, lui, exposé à Internet.

les problèmes arrivent (oops pas d’encodeur hardware)

le conteneur est déployé : tout fonctionne. Mais à force d’utilisation, je me rends compte de quelques problèmes avec la conversion via FFmpeg. Comme je n’ai pas de GPU, tout se fait sur le CPU, qui, matériellement, n’a aucun GPU/APU non plus donc pas d’encodage / décodeur hardware tout est en software.
Naturellement, quand j’ai lancé la conversion de 10 fichiers d’un coup, la VM a vu l’ensemble des vCPU monter à 100 %, et ça a par effet de bord fait crash les autres conteneurs qui étaient sur cette même VM

Second déploiement sur une VM disposant d’un GPU en PCIe passthrough

j’ai donc fais le choix de déployer ce container ailleurs j’ai une VM ayant accès en PCIE passthrough à un GPU type gtx 1060 6GB

Présence GPU verifier

Ma VM a bien accès à un GPU, la commande nvidia-smi permet de le vérifier

on peut voir que deux images sont bloquées en conversion

indiqué a docker comment utiliser un GPU

un truc que je ne savais pas est que j’ai appris après tout sa c’est qu’un container docker on peu lui faire accèder au GPU dans mon cas sa c’est en quelques commandes 3 environs

sudo apt-get update
#Installe le support officiel NVIDIA pour Docker (CUDA, NVENC, NVDEC).
sudo apt-get install -y nvidia-container-toolkit 
#Activation runtime NVIDIA dans docker
sudo nvidia-ctk runtime configure --runtime=docker #Active nvidia sur docker 
      INFO[0000] Loading config from /etc/docker/daemon.json
      INFO[0000] Wrote updated config to /etc/docker/daemon.json
      INFO[0000] It is recommended that docker daemon be restarted.

sudo systemctl restart docker

#vérification de la bonne prise en charge de nvidia par docker 
docker info | grep -i runtimes 
      Runtimes: io.containerd.runc.v2 nvidia run #confirme que nvidia est bien charger sur docker 

Le fichier Docker-compose

maintenant il ya quelques ajout a faire coté docker-compose, moi mon docker-compose est fais de cette manière

services:
  convertx:
    image: ghcr.io/c4illin/convertx
    container_name: convertx
    user: 1006:1006
    restart: unless-stopped
    gpus: all
    ports:
      - "127.0.0.1:3001:3000"
    environment:
      ACCOUNT_REGISTRATION: "false"
      JWT_SECRET: "My_secret_key_hidden"
      HTTP_ALLOWED: "true"
      ALLOW_UNAUTHENTICATED: "true"
      AUTO_DELETE_EVERY_N_HOURS: "1"
      FFMPEG_ARGS: "-hwaccel cuda"
      NVIDIA_VISIBLE_DEVICES: "all"
      NVIDIA_DRIVER_CAPABILITIES: "all"
    volumes:
      - ./data:/app/data
    networks:
      - convertx

networks:
  convertx:
    driver: bridge

Conclusion

Après ce déploiement, j’ai un file converter auto-hébergé (ConvertX) qui utilise mon GPU NVIDIA pour accélérer les conversions et améliorer les performances. J’ai aussi appris qu’on peut exposer un GPU à Docker

Retour en haut