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.
This commit is contained in:
tomasz-syn-grzegorza
2026-07-05 18:45:17 +00:00
parent 359afb3a59
commit 73e4fc005e
33 changed files with 3604 additions and 307 deletions
+40 -90
View File
@@ -1,134 +1,84 @@
# ComfyUI stack
[ComfyUI](https://github.com/comfyanonymous/ComfyUI) — grafowy interfejs do generowania obrazów (Stable Diffusion, Flux, …). Stack oparty na obrazie [`yanwk/comfyui-boot`](https://github.com/YanWenKun/ComfyUI-Docker).
Zamiast [Stability Matrix](https://github.com/LykosAI/StabilityMatrix) (GUI desktop) używamy ComfyUI w Dockerze — zgodnie z filozofią headless serwera i tutoriala [03b](../../manual-tutorial/03b-system-tools.md).
[ComfyUI](https://github.com/comfyanonymous/ComfyUI) w Dockerze — obraz upstream [`yanwk/comfyui-boot:cu126-slim`](https://github.com/YanWenKun/ComfyUI-Docker). Stack **nie modyfikuje** ComfyUI; to tylko compose + lifecycle. Katalog modeli, pobieranie i skan workflow są w [**Server UI**](../server-ui/README.md) (`:8091` → zakładka **ComfyUI Modele**).
## Porty
| Serwis | Port | URL |
|--------|------|-----|
| ComfyUI web UI | **8188** | `http://HOST:8188` |
| LocalAI (osobny stack) | 8070 | LLM / chat — **nie równolegle z dużym modelem SD** |
| Server UI (modele, stacki) | **8091** | `http://HOST:8091` |
## Jak to działa
```mermaid
flowchart LR
browser["Przeglądarka :8188"]
comfyui["Kontener comfyui"]
gpu["RTX 3090 Ti"]
models["/data/apps/comfyui/models"]
browser --> comfyui
comfyui --> gpu
comfyui --> models
```
| Element | Opis |
|---------|------|
| Obraz | `yanwk/comfyui-boot:cu126-slim` |
| Konfiguracja | `.env` + `docker-compose.yml` |
| Modele | `/data/apps/comfyui/models` (puste na start — pobierz ręcznie lub przez ComfyUI-Manager) |
| Pierwszy start | Kopiuje ComfyUI do `/data/apps/comfyui/storage/` (~kilka minut) |
## Struktura
## Struktura (repo)
```
stacks/comfyui/
├── README.md
├── docker-compose.yml
├── .env.example
├── .gitignore
└── scripts/
├── ensure-dirs.sh
├── pull.sh
└── start.sh
```
Na dysku `/data`:
## Dane na hoście (`/data/apps/comfyui/`)
```
/data/apps/comfyui/
├── storage/ # kopia ComfyUI z obrazu (pierwszy start)
├── models/ # checkpoints, LoRA, VAE, …
├── cache/
│ ├── hf-hub/
│ └── torch-hub/
├── input/
├── output/
├── custom_nodes/
└── workflows/
```
| Katalog | Zawartość |
|---------|-----------|
| `storage/` | Kopia ComfyUI z obrazu (pierwszy start) |
| `models/` | Checkpointy, LoRA, VAE, … |
| `custom_nodes/` | ComfyUI-Manager i wtyczki |
| `workflows/` | JSON workflow (bind → `user/default/workflows`) |
| `input/`, `output/`, `cache/` | Wejścia, wyniki, cache HF/torch |
## Workflow (bez modelu)
Update kontenera (`docker compose pull` + recreate) **nie usuwa** tych danych — wszystko to bind-mounty.
## Szybki start
```bash
cd stacks/comfyui
cp .env.example .env
./scripts/pull.sh
./scripts/start.sh
```
Weryfikacja:
Weryfikacja: `curl -f http://127.0.0.1:8188/`
## Polityka GPU
RTX 3090 Ti — jeden duży workload GPU naraz (LocalAI **lub** ComfyUI z dużym modelem). `start.sh` ostrzega, gdy `localai` działa. W Server UI: Stop/Start stacków.
## Update ComfyUI
Zalecane: Server UI → karta **ComfyUI****Update** (pull + recreate gdy działa).
CLI:
```bash
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8188/
# UI: http://<IP-serwera>:8188
./scripts/pull.sh # tylko obraz
./scripts/start.sh # start z nowym obrazem
```
## Zmienne `.env`
### Checklist po update obrazu
| Zmienna | Opis | Domyślnie |
|---------|------|-----------|
| `DATA_ROOT` | Mount dysku danych | `/data` |
| `COMFYUI_PORT` | Port na hoście | `8188` |
| `COMFYUI_IMAGE` | Obraz Docker | `yanwk/comfyui-boot:cu126-slim` |
| `CUDA_VISIBLE_DEVICES` | GPU | `0` |
| `CLI_ARGS` | Dodatkowe flagi ComfyUI | puste |
1. `curl -f http://127.0.0.1:8188/` — UI ComfyUI działa
2. Server UI → **ComfyUI Modele** → odśwież — skan workflow OK
3. Test pobrania modelu (katalog lub Custom URL) — job `completed`
4. Healthcheck fail → sprawdź, czy obraz ma `curl` na porcie 8188
5. Pusty skan workflow → zweryfikuj mount `workflows``user/default/workflows` w [docs yanwk](https://github.com/YanWenKun/ComfyUI-Docker)
## Polityka GPU (LocalAI ↔ ComfyUI)
## Modele i workflow
RTX 3090 Ti 24 GB — **jeden** duży workload GPU naraz.
- **Server UI** (zalecane): katalog, workflow scan, pobieranie — [`../server-ui/README.md`](../server-ui/README.md)
- **ComfyUI-Manager** w UI `:8188`
- **CLI** (Server UI scripts): `../server-ui/scripts/comfyui/list-models.sh`, `download-model.sh`
Przed startem ComfyUI z dużym modelem (SDXL, Flux):
Przykładowy workflow: [`../../manual-tutorial/examples/comfyui/example-sdxl-refiner.api.json`](../../manual-tutorial/examples/comfyui/example-sdxl-refiner.api.json)
```bash
cd ../localai
docker compose --profile localai stop localai
```
Skrypt `start.sh` ostrzega, gdy `localai` jest uruchomiony.
W Server UI (port 8091) → Stop/Start stack `localai` lub `comfyui` według potrzeb.
## Modele (później)
- **ComfyUI-Manager** w UI (custom node w obrazie yanwk) — pobieranie modeli i węzłów
- Ręcznie: pliki do `/data/apps/comfyui/models/checkpoints/` (lub odpowiednie podkatalogi)
Szacunki VRAM (przy zatrzymanym LocalAI):
| Model | VRAM (orientacyjnie) |
|-------|----------------------|
| SD 1.5 | ~46 GB |
| SDXL | ~812 GB |
| Flux | ~1220 GB |
## Zarządzanie
```bash
docker compose --profile comfyui ps
docker compose --profile comfyui logs -f comfyui
docker compose --profile comfyui restart comfyui
docker compose --profile comfyui down
cp manual-tutorial/examples/comfyui/example-sdxl-refiner.api.json /data/apps/comfyui/workflows/
```
## Dokumentacja
- Tutorial: [manual-tutorial/07-comfyui-stack.md](../../manual-tutorial/07-comfyui-stack.md)
- Research Stability Matrix: [`coding-agent/STABILITYMATRIX-RESEARCH.md`](../../coding-agent/STABILITYMATRIX-RESEARCH.md)
- Wdrożenie: [`coding-agent/COMFYUI-DEPLOYMENT.md`](../../coding-agent/COMFYUI-DEPLOYMENT.md)
Upstream: [github.com/comfyanonymous/ComfyUI](https://github.com/comfyanonymous/ComfyUI)
- Wdrożenie: [coding-agent/COMFYUI-DEPLOYMENT.md](../../coding-agent/COMFYUI-DEPLOYMENT.md)