Pourquoi self-héberger ComfyUI sur un VPS
ComfyUI organise la génération d'images en graphes de nœuds : chaque étape (chargement du modèle, encodage du prompt, échantillonnage, VAE) est un bloc reliable et réutilisable, ce qui rend les workflows reproductibles et partageables au format JSON. Contrairement à un service de génération en ligne, l'auto-héberger vous donne la main sur les modèles checkpoints, les LoRA, les ControlNet et les extensions, sans censure ni quota. Sur un VPS GPU, vous obtenez un studio disponible 24/7 que toute une équipe créative peut utiliser à distance, et dont l'API permet d'industrialiser la génération depuis vos propres scripts ou pipelines.
Bénéfices concrets de l'auto-hébergement
- Workflows nodaux reproductibles, exportables en JSON et partageables dans l'équipe
- Bibliothèque libre de checkpoints, LoRA et ControlNet sans quota ni censure
- API HTTP pour automatiser la génération depuis vos scripts et pipelines
- GPU distant accessible 24/7 sans monopoliser un poste local
- Installation de custom nodes (extensions communautaires) sans restriction
- Maîtrise des coûts : un VPS GPU à l'heure ou au mois plutôt qu'un paiement par image
Prérequis matériels chiffrés selon le mode d'utilisation
Le dimensionnement dépend directement du mode d'exécution choisi et des modèles visés. En mode CPU (lent, réservé aux tests et au prototypage), un VPS 4 vCPU avec 8 Go de RAM suffit pour charger un checkpoint SDXL, mais comptez plusieurs minutes par image. En mode GPU, le goulot est la VRAM : 8 Go de VRAM NVIDIA permettent de faire tourner SDXL en fp16 avec le flag --lowvram qui décharge les encodeurs de texte en RAM système ; 12 à 16 Go de VRAM sont recommandés pour Flux.1 à pleine précision. Pour le stockage : un checkpoint SDXL pèse environ 6 à 7 Go, un modèle Flux.1 schnell (full precision) atteint 23,8 Go, sa version fp8 17,2 Go. Prévoyez au minimum 50 Go de disque SSD, idéalement 100 Go si vous comptez stocker plusieurs modèles et leurs LoRA associés. La RAM système doit être d'au moins 16 Go dès que vous activez l'offload GPU→RAM.
Configuration minimale par scénario
Faites défiler le tableau
| Scénario | vCPU | RAM | VRAM | Disque |
|---|---|---|---|---|
| Test CPU (SDXL, lent) | 4 | 8 Go | — (sans GPU) | 50 Go |
| GPU SDXL confortable | 4 | 16 Go | 8 Go NVIDIA | 80 Go |
| GPU Flux.1 (recommandé) | 8 | 32 Go | 16 Go NVIDIA | 100 Go |
| Production multi-utilisateurs | 8+ | 32 Go+ | 24 Go NVIDIA | 200 Go+ |
Deux méthodes d'installation : Docker vs Python venv
ComfyUI se déploie de deux façons : via Docker (isolation, reproductibilité, gestion simplifiée des dépendances GPU) ou via un environnement Python virtuel (plus proche du bare-metal, plus flexible pour les custom nodes expérimentaux). Sur un VPS de production, Docker est recommandé pour la facilité de maintenance et le cloisonnement des versions.
Méthode A — Installation via Python venv (accès direct au matériel)
Installer les dépendances système
Sur Ubuntu 22.04/24.04 :
apt update && apt install -y git python3.12 python3.12-venv python3-pip. ComfyUI supporte Python 3.12 et 3.13 ; la version 3.13 est très bien supportée, la 3.14 peut poser des problèmes de compatibilité avec certains custom nodes.Cloner le dépôt et créer le venv
git clone https://github.com/comfyanonymous/ComfyUI.git /opt/comfyui && cd /opt/comfyui && python3.12 -m venv venv && source venv/bin/activate && pip install -r requirements.txtInstaller PyTorch avec support CUDA ou CPU
Pour GPU NVIDIA (CUDA) :
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124. Pour mode CPU uniquement :pip install torch torchvision. PyTorch 2.7 est le minimum supporté ; une version plus récente est fortement recommandée.Lancer ComfyUI
Mode GPU :
python main.py --listen 0.0.0.0. Mode CPU :python main.py --cpu --listen 0.0.0.0. Le flag--listen 0.0.0.0expose ComfyUI sur toutes les interfaces réseau du VPS (nécessaire pour un accès via tunnel ou reverse proxy). L'interface est accessible sur le port 8188.
Méthode B — Déploiement Docker avec GPU
Préparer le VPS GPU
Sur un VPS avec GPU NVIDIA, installez les pilotes puis le NVIDIA Container Toolkit afin que Docker accède au GPU. Validez avec
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi.Lancer ComfyUI en conteneur
Démarrez une image ComfyUI avec accès GPU et volumes persistants :
docker run -d --gpus all -p 127.0.0.1:8188:8188 -v /opt/comfyui/models:/app/models -v /opt/comfyui/output:/app/output --name comfyui ghcr.io/ai-dock/comfyui:latest-cuda. Restreindre à 127.0.0.1 évite l'exposition directe. Adaptez le tag de l'image selon la version CUDA de votre VPS.Vérifier que le GPU est détecté
Après démarrage :
docker logs comfyui | grep -i 'cuda\|gpu\|device'. ComfyUI affiche au démarrage le device sélectionné. Si vous voyezUsing CPU, votre GPU n'est pas accessible depuis le conteneur — vérifiez le NVIDIA Container Toolkit.
Télécharger les modèles depuis HuggingFace
Les modèles se téléchargent depuis HuggingFace avec wget ou la CLI HuggingFace (pip install huggingface_hub). Chaque type de fichier a son dossier dédié dans l'arborescence de ComfyUI. Pour SDXL : déposez le fichier .safetensors du checkpoint dans models/checkpoints/. Pour Flux.1 : l'architecture est différente — le modèle de diffusion va dans models/diffusion_models/ (ou models/unet/ selon les versions), et Flux requiert deux encodeurs de texte dans models/text_encoders/ : clip_l.safetensors et t5xxl_fp16.safetensors (ou t5xxl_fp8_e4m3fn_scaled.safetensors pour économiser la VRAM). Le VAE (ae.safetensors) va dans models/vae/. Flux.1 schnell est disponible librement depuis black-forest-labs/FLUX.1-schnell sur HuggingFace (23,8 Go en full precision, 17,2 Go en fp8). Flux.1 dev est sous licence gated — il faut accepter les conditions d'utilisation sur HuggingFace avant de pouvoir le télécharger.
Reverse proxy Nginx avec authentification
Créer le fichier d'authentification basique
apt install -y apache2-utils && htpasswd -c /etc/nginx/.htpasswd votre_utilisateur. ComfyUI n'a pas d'authentification native : sans cette étape, votre instance est accessible à tous.Configurer le virtual host Nginx
Créez
/etc/nginx/sites-available/comfyuiavec :server { listen 443 ssl; server_name comfy.votredomaine.com; ssl_certificate /etc/letsencrypt/live/comfy.votredomaine.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/comfy.votredomaine.com/privkey.pem; auth_basic "ComfyUI"; auth_basic_user_file /etc/nginx/.htpasswd; location / { proxy_pass http://127.0.0.1:8188; proxy_read_timeout 300s; proxy_send_timeout 300s; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } }. L'upgrade WebSocket est obligatoire pour l'API temps réel de ComfyUI.Obtenir le certificat Let's Encrypt et activer
certbot --nginx -d comfy.votredomaine.com && ln -s /etc/nginx/sites-available/comfyui /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx. Fermez ensuite le port 8188 au pare-feu :ufw deny 8188.
Installer ComfyUI Manager et les custom nodes
ComfyUI Manager est l'extension incontournable pour gérer les custom nodes depuis l'interface graphique. En installation Python venv : cd /opt/comfyui/custom_nodes && git clone https://github.com/Comfy-Org/ComfyUI-Manager.git && cd ComfyUI-Manager && pip install -r requirements.txt. Relancez ensuite ComfyUI avec python main.py --enable-manager --listen 0.0.0.0. Une icône « Manager » apparaît alors dans l'interface : vous pouvez y installer, mettre à jour et désactiver les custom nodes populaires (WAS Node Suite, ControlNet Preprocessors, IP-Adapter, etc.) sans ligne de commande. En Docker, montez un volume sur custom_nodes/ pour que les installations survivent aux redémarrages du conteneur.
ComfyUI face à AUTOMATIC1111 (Stable Diffusion WebUI)
Faites défiler le tableau
| Critère | ComfyUI | AUTOMATIC1111 |
|---|---|---|
| Approche | Workflows nodaux visuels | Interface à onglets classique |
| Reproductibilité | Excellente (workflow exporté en JSON) | Limitée aux paramètres saisis |
| Consommation VRAM | Optimisée, gère mieux les petits GPU | Plus gourmande à configuration égale |
| Courbe d'apprentissage | Plus raide (logique de graphe) | Plus accessible pour débuter |
| Automatisation par API | Native et granulaire | API présente mais moins flexible |
| Modèles récents (Flux, SD3) | Support rapide et de référence | Support souvent plus tardif |
| Custom nodes / extensions | Écosystème nodal très riche | Large catalogue d'extensions |
| Cas d'usage idéal | Pipelines avancés et automatisation | Génération interactive rapide |
Dépannage : 4 erreurs courantes
Sur un VPS fraîchement configuré, plusieurs erreurs reviennent systématiquement. Voici les causes et corrections.
Erreurs fréquentes et solutions
- CUDA not available / Using CPU : ComfyUI n'a pas détecté de GPU. Causes : PyTorch installé sans support CUDA (
pip install torchsans l'index CUDA), ou pilotes NVIDIA absents. Vérifiez avecpython -c "import torch; print(torch.cuda.is_available())". SiFalse, réinstallez PyTorch avec--index-url https://download.pytorch.org/whl/cu124. En Docker, vérifiez que le NVIDIA Container Toolkit est bien installé et que vous lancez avec--gpus all. - CUDA out of memory (OOM) : le modèle ne tient pas en VRAM. Ajoutez
--lowvramau lancement de ComfyUI : ce flag force le déchargement des encodeurs de texte en RAM système. Pour Flux sur 8 Go de VRAM, utilisez aussi la variante fp8 du modèle. En dernier recours,--novramdécharge tout en RAM (très lent). Réduire la résolution de génération (512×512 plutôt que 1024×1024) est aussi immédiatement efficace. - ERROR: Could not find model / model not found : le fichier n'est pas au bon endroit. ComfyUI cherche les checkpoints dans
models/checkpoints/, les modèles de diffusion Flux dansmodels/diffusion_models/(oumodels/unet/), les encodeurs de texte dansmodels/text_encoders/. Un fichier.safetensorsdans le mauvais sous-dossier ne sera pas listé dans l'interface. Rafraîchissez la liste avec le bouton « Refresh » dans le nœud de chargement de modèle. - Port 8188 already in use : un processus ComfyUI ou une autre application utilise déjà le port.
lsof -i :8188identifie le PID. Lancez ComfyUI sur un autre port avec--port 8189, et adaptez votre configuration Nginx en conséquence. En Docker, le conflit peut venir d'un conteneur arrêté mais non supprimé :docker rm comfyuiavant de relancer.
Pour industrialiser la génération, exploitez l'API : soumettez vos workflows en POST sur /prompt et récupérez les résultats via le WebSocket /ws qui notifie la fin de chaque tâche. Le flag --lowvram au lancement permet de faire tourner des modèles SDXL sur 8 Go de VRAM : ComfyUI décharge intelligemment les encodeurs de texte en RAM système. Pour l'accès à distance sans certificat (développement), utilisez un tunnel SSH : ssh -L 8188:localhost:8188 user@votre-vps — ComfyUI reste alors accessible sur http://localhost:8188 depuis votre poste sans exposition publique.