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.
7.6 KiB
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: 10–30 minut (pierwszy raz)
- Pierwszy start (kopia ComfyUI do
/data): 3–10 minut
Wymagania: ukończone rozdziały 01–05, 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
- ComfyUI vs Stability Matrix
- Porty i architektura
- Polityka GPU (LocalAI ↔ ComfyUI)
- Struktura plików stacku
- Przygotowanie
.env - Instalacja obrazu
- Start stacku
- Weryfikacja UI
- Zarządzanie stackiem
- Modele (później)
- Troubleshooting
- 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:
- Sprawdza mount
/data - Tworzy katalogi (
ensure-dirs.sh) - Ostrzega, jeśli
localaidziała 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)
- Panel Server UI (
http://<IP>:8091) → zakładka ComfyUI Modele - Wpisz API Key (rozdział 08) → wybierz model → Pobierz
- 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
- ComfyUI-Manager w UI ComfyUI (
:8188) — modele spoza katalogu repo - Ręcznie — pliki
.safetensors/.ckptdo/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 | ~4–6 GB |
| SDXL | ~8–12 GB |
| Flux | ~12–20 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:
- Zgłoś w rozmowie z Cursorem, że krok 07 jest gotowy.
- Pobierz pierwszy checkpoint (SD 1.5 lub SDXL) — osobny krok.
- Później: rozdział 08 — firewall i hardening.
Checklist
.envutworzony z.env.exampledocker compose --profile comfyui pull— obraz pobrany- LocalAI zatrzymany przed pierwszym testem generowania (opcjonalnie przy samym starcie UI)
./scripts/start.sh— kontenercomfyuirunningcurl http://127.0.0.1:8188/— HTTP 200- UI otwiera się w przeglądarce na
:8188 - Katalogi istnieją pod
/data/apps/comfyui/