search
IALinux5 min lectura

Instalar ComfyUI en una RTX 5080 con CachyOS: setup, lecciones y por qué Fooocus ya no sirve

Pablo IB

TL;DR: Quise montar generación de imágenes local en mi RTX 5080. Fooocus estaba abandonado y me dio errores de dependencias. Investigué, diagnosticé el problema (Starlette 1.0 rompió la API de Gradio), y cambié a ComfyUI. Resultado: setup limpio con Python 3.12, PyTorch 2.12, CUDA 13, y SDXL base listo para generar.


El plan original: Fooocus + ComfyUI

La idea era simple: dos herramientas, un modelo SDXL compartido, outputs en carpetas separadas.

HerramientaRolEstado
FooocusPrompt simple, sin fricción❌ Abandonado (último commit: agosto 2024)
ComfyUIControl total, workflows con nodos✅ Activo (89k estrellas, releases semanales)

Fooocus parecía perfecto para empezar rápido. Escribes un prompt y ya. Pero la realidad fue otra.


Lección 1: Fooocus está muerto

El repo de lllyasviel/Fooocus lleva sin actividad significativa desde agosto 2024. El autor no responde issues, no mergea PRs (hay 92+ abiertos), y el estado oficial dice “LTS with bug fixes only” pero no hay fixes.

Síntoma: Las dependencias transivas se rompen porque el requirements_versions.txt pinnea gradio==3.41.2 (julio 2023) pero no pinnea starlette ni fastapi. Pip resuelve a las versiones más nuevas, y algo explota.

El error

TypeError: unhashable type: 'dict'
  File "jinja2/utils.py", line 515
    rv = self._mapping[key]

La causa raíz (20 minutos de diagnóstico)

No era Jinja2. Era Starlette 1.0.0 (publicada marzo 2026), que cambió la firma de TemplateResponse:

Starlette 0.x (vieja)Starlette 1.0.0 (nueva)
TemplateResponse(name, context)TemplateResponse(request, name, context)
2 args posicionales3 args posicionales

Gradio 3.41.2 llama a TemplateResponse(template, {"request": request, ...}) con 2 args. Starlette 1.0.0 interpreta el dict como el segundo parámetro (name), que llega a Jinja2 como cache key → boom.

El mismo problema está documentado en fastapi/fastapi#15198. La solución habría sido pinnear starlette<1.0.0, pero ¿para qué mantener un proyecto muerto?

Decisión: Eliminar Fooocus, ir solo con ComfyUI.


Lección 2: Python 3.12 no está en pacman, pero sí en pyenv

CachyOS tiene Python 3.14 como versión del sistema y 3.11 disponible. ComfyUI recomienda 3.12, que no está en los repositorios oficiales ni en AUR.

Pero tenía pyenv instalado con 3.12.13 listo:

pyenv versions
# * system
#   3.12.13

Solución: usar el binario de pyenv directamente para crear el venv:

~/.pyenv/versions/3.12.13/bin/python3.12 -m venv ~/.venv/comfyui

El setup final

Estructura de directorios

/home/pablo/dev/ai-image/
├── ComfyUI/              # repo clonado
├── models/
│   └── checkpoints/
│       └── sd_xl_base_1.0.safetensors  (6.5 GB)
├── outputs/
│   └── comfyui/
~/.venv/comfyui/          # virtualenv Python 3.12

Versiones instaladas

ComponenteVersión
Python3.12.13 (pyenv)
PyTorch2.12.0+cu130
CUDA runtime13.0
ComfyUI0.21.1
GPUNVIDIA RTX 5080 Laptop (16 GB VRAM)
ModeloSDXL Base 1.0

Flags de lanzamiento para RTX 5080

ComfyUI tiene varios flags de VRAM que cambian radicalmente el rendimiento. Para una RTX 5080 con 16 GB, la configuración óptima es:

~/.venv/comfyui/bin/python main.py --listen 0.0.0.0 --port 8188 --highvram
FlagQué haceCuándo usarlo
--highvramMantiene los modelos en VRAM entre generaciones (no los baja a RAM)RTX 5080/5090 con 16+ GB — mucho más rápido
--gpu-onlyFuerza todo el procesamiento en GPU✅ Cuando no quieres que nada pase por CPU
(sin flags)Modo normal: descarga modelos a RAM tras usarlosGPUs con 8-12 GB
--lowvramModo ahorro: carga modelos por partes en VRAMGPUs con 4-8 GB
--novramMínimo VRAM posibleEmergencias, GPUs muy pequeñas
--cpuTodo en CPU (muy lento)Sin GPU NVIDIA

RTX 5080 con 16 GB: Usa --highvram. Carga SDXL (~6.5 GB) una vez y se queda en VRAM. Generaciones consecutivas en ~3 segundos en vez de ~8.

Comando de lanzamiento recomendado

# Lanzamiento interactivo (ves los logs)
cd ~/dev/ai-image/ComfyUI
~/.venv/comfyui/bin/python main.py --listen 0.0.0.0 --port 8188 --highvram

Acceso: http://127.0.0.1:8188

En background

nohup ~/.venv/comfyui/bin/python main.py \
  --listen 0.0.0.0 --port 8188 --highvram \
  > ~/dev/ai-image/outputs/comfyui.log 2>&1 &

Compartir modelos entre herramientas

Si en el futuro instalas InvokeAI u otra herramienta, no quieres duplicar 6.5 GB por modelo. ComfyUI soporta extra_model_paths.yaml:

# ~/dev/ai-image/ComfyUI/extra_model_paths.yaml

pablo_models:
  base_path: /home/pablo/dev/ai-image/models/
  checkpoints: checkpoints/
  controlnet: controlnet/
  loras: loras/
  vae: vae/
  upscale_models: upscale_models/
  embeddings: embeddings/

Esto le dice a ComfyUI que también busque modelos en tu stash compartido, además de su propia carpeta models/.


Problemas comunes y cómo solucionarlos

“CUDA out of memory”

La RTX 5080 tiene 16 GB. SDXL usa ~6.5 GB. Si añades ControlNet + LoRAs + batch, puedes llegar al límite.

Solución:

  1. Quita --highvram y usa el modo normal (sin flags)
  2. Reduce batch size a 1
  3. Usa modelos en FP8 en vez de FP16 (mitad de VRAM, pérdida de calidad mínima)
  4. Reinicia ComfyUI entre cambios grandes de workflow

Imágenes negras o sin color

El 99% de las veces es un problema de VAE. Algunos checkpoints tienen el VAE integrado (como SDXL Base), otros no.

Solución: Añade un nodo Load VAE y conecta un VAE externo al nodo VAE Decode. Para SDXL: sdxl_vae.safetensors. Para SD 1.5: vae-ft-mse-840000-ema-pruned.safetensors.

El modelo no aparece en el dropdown

ComfyUI detecta modelos al arrancar. Si añades uno nuevo:

  1. Pulsa R en el teclado para refrescar las definiciones
  2. Si no funciona, reinicia ComfyUI
  3. Verifica que el archivo .safetensors esté en models/checkpoints/

“Install Missing Custom Nodes”

Cuando cargas un workflow que necesita nodos que no tienes instalados, ComfyUI-Manager los detecta automáticamente. Haz clic en el botón ManagerInstall Missing Custom Nodes → reinicia.


¿Por qué ComfyUI y no otra cosa?

HerramientaEstadoEstrellasIdeal para
ComfyUI✅ Muy activo89.2kWorkflows, control total, futuro-proof
Fooocus❌ Muerto47.7kYa no
InvokeAI✅ Activo (v6.12)27.2kUI pulida, canvas profesional
Forge (A1111)⚠️ Semi-activo12.5kUsuarios A1111 legacy

ComfyUI tiene 3450+ extensiones, releases semanales, app de escritorio oficial, y recibió $30M de funding a $500M valoración. Es el estándar de la industria en 2026.


Qué viene después

Ahora tengo ComfyUI corriendo con SDXL. Los siguientes pasos:

  1. Aprender a usar la interfaz — los nodos abruman al principio, pero hay workflows predefinidos
  2. Instalar ComfyUI-Manager — para añadir custom nodes (ControlNet, upscalers, etc.)
  3. Valorar InvokeAI — como alternativa con UI más simple para uso casual

En el siguiente post te explico paso a paso cómo generar tu primera imagen con el workflow por defecto.


Serie: IA de imagen local en RTX 5080

  1. Instalar ComfyUI en RTX 5080: setup, lecciones y por qué Fooocus ya no sirve ← estás aquí
  2. ComfyUI para principiantes: tu primera imagen con SDXL paso a paso
  3. ComfyUI-Manager y custom nodes: ControlNet, upscalers y más
  4. InvokeAI: la alternativa con UI simple para generación casual