ComfyUI — инструмент для построения воркфлоу, который запускает большинство наших клиентов, занимающихся генерацией изображений. В тикетах поддержки мы видим конфигурации с одними и теми же проблемами: процесс умирает при закрытии SSH-сессии, модели скачиваются заново после каждой переустановки, а интерфейс доступен любому, кто найдёт порт. Здесь описана конфигурация, которая решает все три проблемы, а также приведены наши замеры SDXL и FLUX на тарифах с RTX 4090 и RTX 5090.
Структура: модели на томе, приложение в юните
Всё, что дорого скачивать, держите на постоянном томе, а всё, что дёшево пересобрать, — в каталоге приложения. На наших GPU-тарифах том смонтирован в /data: при переустановке корневой диск стирается, а /data — нет.
/opt/comfy/ # the app, a git checkout, disposable
/data/models/checkpoints/ # SDXL, FLUX and friends: 6 to 24 GB each
/data/models/loras/
/data/models/vae/
/data/output/ # generated images
Установите из шаблона ComfyUI или вручную на базовом образе Ubuntu 24.04 с CUDA:
apt install -y git python3-venv
git clone https://github.com/comfyanonymous/ComfyUI /opt/comfy
python3 -m venv /opt/comfy/venv && /opt/comfy/venv/bin/pip install -U pip
/opt/comfy/venv/bin/pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
/opt/comfy/venv/bin/pip install -r /opt/comfy/requirements.txt
git clone https://github.com/ltdrdata/ComfyUI-Manager /opt/comfy/custom_nodes/ComfyUI-Manager
Укажите ComfyUI путь к тому через extra_model_paths.yaml, чтобы в каталоге приложения не было вообще никаких моделей:
cat > /opt/comfy/extra_model_paths.yaml <<'EOF'
data:
base_path: /data/models/
checkpoints: checkpoints/
loras: loras/
vae: vae/
clip: clip/
unet: unet/
EOF
Юнит systemd
useradd -r -m -d /opt/comfy -s /usr/sbin/nologin comfy && chown -R comfy /opt/comfy /data
cat > /etc/systemd/system/comfy.service <<'EOF'
[Unit]
Description=ComfyUI
After=network-online.target
[Service]
User=comfy
WorkingDirectory=/opt/comfy
ExecStart=/opt/comfy/venv/bin/python main.py --listen 127.0.0.1 --port 8188 --output-directory /data/output
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable --now comfy
Две вещи в юните сделаны намеренно: он слушает только localhost и запускается от непривилегированного пользователя. Кастомные ноды выполняют произвольный Python-код, а скомпрометированная нода в процессе от root — это потерянный сервер.
Доступ без публикации наружу
Выберите одну из двух дверей. Закрытая — Tailscale (дополнение в форме заказа): установите его, и http://server-name:8188 будет открываться с любого вашего устройства вообще без открытых портов; для этого укажите в --listen адрес Tailscale. Открытая — Caddy с паролем; заодно вы получаете HTTPS:
apt install -y caddy
HASH=$(caddy hash-password --plaintext 'a-long-password')
cat > /etc/caddy/Caddyfile <<EOF
comfy.example.com {
basicauth { me $HASH }
reverse_proxy 127.0.0.1:8188
}
EOF
systemctl reload caddy
Никогда не публикуйте порт 8188 напрямую. В ComfyUI нет аутентификации, через API можно читать и записывать файлы, а сканеры находят открытые экземпляры в течение нескольких часов.
На что способны карты
Замеры на стандартных воркфлоу: 20 шагов, Euler, размер батча 1, после прогрева, на наших тарифах:
| Модель | Разрешение | RTX 4090 (24 GB) | RTX 5090 (32 GB) |
|---|---|---|---|
| SDXL 1.0 | 1024 × 1024 | 3.9 s | 2.3 s |
| SDXL + рефайнер | 1024 × 1024 | 5.6 s | 3.3 s |
| FLUX.1 dev, FP8 | 1024 × 1024 | 14 s | 8 s |
| FLUX.1 schnell, 4 шага | 1024 × 1024 | 1.9 s | 1.1 s |
| SDXL, батч 8 | 1024 × 1024 | 25 s | 15 s |
RTX 5090 быстрее примерно в 1.7 раза по всем пунктам, а именно её 32 GB делают FLUX dev комфортным при одновременно загруженных LoRA и ControlNet; на 4090 он тоже запускается, но модели приходится постоянно выгружать и подгружать. По чистой производительности SDXL в пересчёте на доллар тариф с 4090 остаётся более выгодной покупкой.
Эксплуатация
- Обновления:
cd /opt/comfy && git pull && venv/bin/pip install -r requirements.txt && systemctl restart comfy. Сначала сделайте снапшот в панели управления: кастомные ноды ломаются при обновлениях чаще, чем сам ComfyUI. - Переустановка: выберите шаблон ещё раз, подключите том заново, восстановите
extra_model_paths.yamlи юнит; модели остаются на месте. - Диск:
/data/outputбыстро растёт при размере батча больше единицы. Еженедельный запускfind /data/output -mtime +30 -deleteпо таймеру не даёт каталогу разрастаться — разумеется, после того как вы скопируете всё, что хотите сохранить. - Следите за VRAM: запускайте
nvidia-smiво время генерации. Воркфлоу, который помещается с запасом всего в 1 GB, перестанет работать в тот день, когда вы добавите ещё одну ноду; дополнение netdata строит график использования во времени.
При такой настройке GPU-сервер переживает перезагрузки, переустановки и ваши собственные эксперименты, а единственное, чего вы касаетесь из месяца в месяц, — воркфлоу.
