Files
tomasz-syn-grzegorza 73e4fc005e Add stack Update, ComfyUI model manager, and slim ComfyUI stack.
Server UI gains Update on stack cards, ComfyUI Models tab with workflow
scan and downloads, and centralized comfyui_config. Model catalog and
download scripts move from stacks/comfyui to server-ui so ComfyUI stays a
minimal Docker wrapper for easier image updates.
2026-07-05 18:45:17 +00:00

7.6 KiB
Raw Permalink Blame History

07 — ComfyUI stack

Cel rozdziału: uruchomić ComfyUI w Dockerze z GPU, web UI na porcie 8188 i pustym katalogiem modeli. Modele dodasz później (checkpoint, LoRA, ComfyUI-Manager).

Szacowany czas:

  • Pobranie obrazu Docker: 1030 minut (pierwszy raz)
  • Pierwszy start (kopia ComfyUI do /data): 310 minut

Wymagania: ukończone rozdziały 0105, mount /data z 04

Kontekst: Zamiast Stability Matrix (GUI desktop) używamy ComfyUI w kontenerze — zgodnie z 03b i researchiem w coding-agent/STABILITYMATRIX-RESEARCH.md.


Spis treści

  1. ComfyUI vs Stability Matrix
  2. Porty i architektura
  3. Polityka GPU (LocalAI ↔ ComfyUI)
  4. Struktura plików stacku
  5. Przygotowanie .env
  6. Instalacja obrazu
  7. Start stacku
  8. Weryfikacja UI
  9. Zarządzanie stackiem
  10. Modele (później)
  11. Troubleshooting
  12. Następny krok

1. ComfyUI vs Stability Matrix

Stability Matrix ComfyUI (stacks/comfyui/)
Typ GUI desktop (AppImage) Docker, headless
Wymaga pulpitu Tak (X11/Wayland) Nie — tylko przeglądarka
ComfyUI Jeden z pakietów SM Bezpośrednio w kontenerze
Zgodność z repo Słaba na SSH-only Tak

SwarmUI (poprzedni UI obrazów) zostało usunięte — patrz SWARMUI-REMOVAL.md.


2. Porty i architektura

flowchart LR
    browser["Przeglądarka :8188"]
    comfyui["Kontener comfyui"]
    gpu["RTX 3090 Ti"]
    disk["/data/apps/comfyui/models"]

    browser --> comfyui
    comfyui --> gpu
    comfyui --> disk
Element Wartość
Obraz yanwk/comfyui-boot:cu126-slim
Web UI http://127.0.0.1:8188 lub http://192.168.100.90:8188 (LAN)
Modele /data/apps/comfyui/models
Docker data /data/docker

3. Polityka GPU (LocalAI ↔ ComfyUI)

RTX 3090 Ti 24 GB — nie uruchamiaj dużego modelu LLM (LocalAI) i dużego checkpointu SD/Flux równocześnie.

Przed startem ComfyUI z generowaniem obrazów:

cd /home/tomasz-syn-grzegorza/cursor/ubuntu-bare-metal/stacks/localai
docker compose --profile localai stop localai

W Server UI (port 8091): Stop/Start stack localai, Start stack comfyui.

Skrypt start.sh ostrzega, gdy localai jest uruchomiony.


4. Struktura plików stacku

stacks/comfyui/
├── README.md
├── docker-compose.yml
├── .env.example
├── .gitignore
└── scripts/
    ├── ensure-dirs.sh
    ├── pull.sh
    └── start.sh

Katalogi na dysku 1 TB:

/data/apps/comfyui/
├── storage/          # kopia ComfyUI (pierwszy start)
├── models/
├── cache/hf-hub/
├── cache/torch-hub/
├── input/
├── output/
├── custom_nodes/
└── workflows/

5. Przygotowanie .env

cd /home/tomasz-syn-grzegorza/cursor/ubuntu-bare-metal/stacks/comfyui
cp .env.example .env
cat .env

Domyślne wartości:

Zmienna Wartość
DATA_ROOT /data
COMFYUI_PORT 8188
COMFYUI_IMAGE yanwk/comfyui-boot:cu126-slim
CUDA_VISIBLE_DEVICES 0

6. Instalacja obrazu

./scripts/pull.sh

Oczekiwany wynik: pobranie warstw yanwk/comfyui-boot:cu126-slim (kilka GB).


7. Start stacku

./scripts/start.sh

Skrypt:

  1. Sprawdza mount /data
  2. Tworzy katalogi (ensure-dirs.sh)
  3. Ostrzega, jeśli localai działa
  4. docker compose --profile comfyui up -d

Pierwszy start kopiuje ComfyUI do /data/apps/comfyui/storage/ — obserwuj logi:

docker compose --profile comfyui logs -f comfyui

8. Weryfikacja UI

docker compose --profile comfyui ps
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8188/

Oczekiwane: kontener healthy lub running, HTTP 200 (może zająć ~3 min przy pierwszym starcie).

W przeglądarce (z sieci lokalnej):

http://192.168.100.90:8188

Tunel SSH z laptopa:

ssh -L 8188:127.0.0.1:8188 tomasz-syn-grzegorza@gmktec-k11
# potem http://localhost:8188

GPU:

nvidia-smi

9. Zarządzanie stackiem

docker compose --profile comfyui ps
docker compose --profile comfyui logs -f comfyui
docker compose --profile comfyui restart comfyui
docker compose --profile comfyui down

Powrót do LocalAI:

cd ../comfyui && docker compose --profile comfyui stop comfyui
cd ../localai && docker compose --profile localai start localai

10. Modele

Compose nie pobiera modeli automatycznie.

Server UI (zalecane)

  1. Panel Server UI (http://<IP>:8091) → zakładka ComfyUI Modele
  2. Wpisz API Key (rozdział 08) → wybierz model → Pobierz
  3. Pliki lądują w /data/apps/comfyui/models/ (bind mount — przetrwają restart kontenera)

Sekcja „Wymagane przez workflow” skanuje /data/apps/comfyui/workflows/*.json i pokazuje brakujące pliki (checkpoint, LoRA, VAE itd.). URL pobierania jest brany z ComfyUI-Manager, gdy model nie ma wpisu w stacks/server-ui/comfyui-models.catalog.yaml. Zapis workflow w ComfyUI (:8188) automatycznie aktualizuje listę po odświeżeniu Server UI.

Przykład testowy: cp manual-tutorial/examples/comfyui/example-sdxl-refiner.api.json /data/apps/comfyui/workflows/

Skrypty CLI

cd stacks/server-ui/scripts/comfyui
./list-models.sh
./download-model.sh <catalog-id>

Katalog: stacks/server-ui/comfyui-models.catalog.yaml

Inne opcje

  1. ComfyUI-Manager w UI ComfyUI (:8188) — modele spoza katalogu repo
  2. Ręcznie — pliki .safetensors / .ckpt do /data/apps/comfyui/models/checkpoints/

Opcjonalnie w .env: HF_TOKEN, CIVITAI_TOKEN (dla wybranych wpisów katalogu).

Szacunki VRAM (przy zatrzymanym LocalAI):

Model VRAM (orientacyjnie)
SD 1.5 ~46 GB
SDXL ~812 GB
Flux ~1220 GB

11. Troubleshooting

HTTP nie odpowiada / 000

Pierwszy start trwa dłużej — sprawdź logi:

docker compose --profile comfyui logs --tail 80 comfyui

CUDA out of memory

Zatrzymaj LocalAI i inne workloady GPU:

docker ps --format '{{.Names}}'
nvidia-smi

Brak /data

mountpoint /data
# jeśli nie — rozdział 04, część A

Kontener restartuje się w pętli

Sprawdź, czy NVIDIA Container Toolkit działa (rozdział 03):

docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi

12. Następny krok

Po przejściu weryfikacji:

  1. Zgłoś w rozmowie z Cursorem, że krok 07 jest gotowy.
  2. Pobierz pierwszy checkpoint (SD 1.5 lub SDXL) — osobny krok.
  3. Później: rozdział 08 — firewall i hardening.

Checklist

  • .env utworzony z .env.example
  • docker compose --profile comfyui pull — obraz pobrany
  • LocalAI zatrzymany przed pierwszym testem generowania (opcjonalnie przy samym starcie UI)
  • ./scripts/start.sh — kontener comfyui running
  • curl http://127.0.0.1:8188/ — HTTP 200
  • UI otwiera się w przeglądarce na :8188
  • Katalogi istnieją pod /data/apps/comfyui/