Initial import: bare-metal stacks, Server UI, GPU fan, tutorials.
Infrastructure configs for GMKtec K11 (Docker, vLLM, LocalAI, ComfyUI, control-plane, gpu-fan agent, Server UI with CLI/file explorer/GPU fan curve). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,286 @@
|
||||
# 07 — ComfyUI stack
|
||||
|
||||
> **Cel rozdziału:** uruchomić [ComfyUI](https://github.com/comfyanonymous/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](01-system-update-and-docker.md)–[05](05-localai-stack.md), mount `/data` z [04](04-vllm-stack.md)
|
||||
|
||||
**Kontekst:** Zamiast [Stability Matrix](https://github.com/LykosAI/StabilityMatrix) (GUI desktop) używamy ComfyUI w kontenerze — zgodnie z [03b](03b-system-tools.md) i researchiem w [`coding-agent/STABILITYMATRIX-RESEARCH.md`](../coding-agent/STABILITYMATRIX-RESEARCH.md).
|
||||
|
||||
---
|
||||
|
||||
## Spis treści
|
||||
|
||||
1. [ComfyUI vs Stability Matrix](#1-comfyui-vs-stability-matrix)
|
||||
2. [Porty i architektura](#2-porty-i-architektura)
|
||||
3. [Polityka GPU (LocalAI ↔ ComfyUI)](#3-polityka-gpu-localai--comfyui)
|
||||
4. [Struktura plików stacku](#4-struktura-plików-stacku)
|
||||
5. [Przygotowanie `.env`](#5-przygotowanie-env)
|
||||
6. [Instalacja obrazu](#6-instalacja-obrazu)
|
||||
7. [Start stacku](#7-start-stacku)
|
||||
8. [Weryfikacja UI](#8-weryfikacja-ui)
|
||||
9. [Zarządzanie stackiem](#9-zarządzanie-stackiem)
|
||||
10. [Modele (później)](#10-modele-później)
|
||||
11. [Troubleshooting](#11-troubleshooting)
|
||||
12. [Następny krok](#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`](../coding-agent/SWARMUI-REMOVAL.md).
|
||||
|
||||
---
|
||||
|
||||
## 2. Porty i architektura
|
||||
|
||||
```mermaid
|
||||
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:
|
||||
|
||||
```bash
|
||||
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`
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
./scripts/pull.sh
|
||||
```
|
||||
|
||||
Oczekiwany wynik: pobranie warstw `yanwk/comfyui-boot:cu126-slim` (kilka GB).
|
||||
|
||||
---
|
||||
|
||||
## 7. Start stacku
|
||||
|
||||
```bash
|
||||
./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:
|
||||
|
||||
```bash
|
||||
docker compose --profile comfyui logs -f comfyui
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Weryfikacja UI
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
ssh -L 8188:127.0.0.1:8188 tomasz-syn-grzegorza@gmktec-k11
|
||||
# potem http://localhost:8188
|
||||
```
|
||||
|
||||
GPU:
|
||||
|
||||
```bash
|
||||
nvidia-smi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Zarządzanie stackiem
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
cd ../comfyui && docker compose --profile comfyui stop comfyui
|
||||
cd ../localai && docker compose --profile localai start localai
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10. Modele (później)
|
||||
|
||||
Compose **nie pobiera** modeli automatycznie.
|
||||
|
||||
Opcje:
|
||||
|
||||
1. **ComfyUI-Manager** w UI — instalacja węzłów i modeli
|
||||
2. Ręcznie — pliki `.safetensors` / `.ckpt` do `/data/apps/comfyui/models/checkpoints/`
|
||||
|
||||
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:
|
||||
|
||||
```bash
|
||||
docker compose --profile comfyui logs --tail 80 comfyui
|
||||
```
|
||||
|
||||
### `CUDA out of memory`
|
||||
|
||||
Zatrzymaj LocalAI i inne workloady GPU:
|
||||
|
||||
```bash
|
||||
docker ps --format '{{.Names}}'
|
||||
nvidia-smi
|
||||
```
|
||||
|
||||
### Brak `/data`
|
||||
|
||||
```bash
|
||||
mountpoint /data
|
||||
# jeśli nie — rozdział 04, część A
|
||||
```
|
||||
|
||||
### Kontener restartuje się w pętli
|
||||
|
||||
Sprawdź, czy NVIDIA Container Toolkit działa (rozdział 03):
|
||||
|
||||
```bash
|
||||
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/`
|
||||
Reference in New Issue
Block a user