Files
tomasz-syn-grzegorza 359afb3a59 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>
2026-07-05 12:02:04 +00:00

153 lines
6.3 KiB
Markdown

# ubuntu-bare-metal
Repozytorium konfiguracji czystego Ubuntu na fizycznym serwerze (bare metal) pod hostowanie **vLLM**, **LocalAI**, **ComfyUI** i **Docker**.
Tutorial jest prowadzony krok po kroku — każdy rozdział to samodzielny etap z komendami, weryfikacją i sekcją troubleshooting.
## Sprzęt docelowy
| Parametr | Wartość |
|----------|---------|
| Urządzenie | GMKtec K11 |
| CPU | AMD Phoenix (Ryzen) |
| GPU (LLM / ComfyUI) | NVIDIA GeForce RTX 3090 Ti (24 GB VRAM) |
| iGPU | AMD HawkPoint1 (nieużywane do workloadów AI) |
| RAM | 29 GiB |
| Dysk systemowy | 128 GB NVMe (`/`) — tylko Ubuntu |
| Dysk danych | 1 TB (`/data`) — Docker, modele, aplikacje |
| System | Ubuntu 26.04 LTS (`resolute`) — instalacja minimized |
## Jak korzystać z tutoriala
1. Czytaj rozdziały w kolejności numeracji (`00`, `01`, `02`, …).
2. Wykonuj komendy na serwerze w podanej kolejności.
3. Po każdym rozdziale przejdź sekcję **Weryfikacja** — nie przechodź dalej, dopóki wszystkie punkty nie są zielone.
4. Zgłaszaj poprawki w rozmowie z Cursorem — tutorial będzie aktualizowany.
Instrukcje: **po polsku**. Komendy i nazwy pakietów: **po angielsku** (jak w systemie).
## Roadmapa rozdziałów
| # | Rozdział | Status |
|---|----------|--------|
| 00 | [Wymagania i konwencje](manual-tutorial/00-prerequisites.md) | Gotowy |
| 01 | [Aktualizacja systemu i Docker CE](manual-tutorial/01-system-update-and-docker.md) | Ukończony |
| 02 | [Sterowniki NVIDIA](manual-tutorial/02-nvidia-driver.md) | Ukończony |
| 03 | [NVIDIA Container Toolkit](manual-tutorial/03-nvidia-container-toolkit.md) | Ukończony |
| 03b | [Narzędzia bazowe — Ubuntu minimized](manual-tutorial/03b-system-tools.md) | **Wykonaj przed 04** |
| 04 | [Dysk 1 TB + vLLM stack](manual-tutorial/04-vllm-stack.md) | Ukończony / w toku |
| 05 | [LocalAI stack (UI + GGUF)](manual-tutorial/05-localai-stack.md) | Ukończony / w toku |
| 06 | [Sterowanie wentylatorami GPU](manual-tutorial/06-gpu-fan-control.md) | Gotowy |
| 07 | [ComfyUI stack (Docker)](manual-tutorial/07-comfyui-stack.md) | Gotowy (stack w repo) |
| 08 | [Server UI — panel sterowania](manual-tutorial/08-server-ui-install.md) | Gotowy |
| 09 | Firewall i hardening | Planowany |
```mermaid
flowchart LR
step01["01: apt + Docker CE"]
step02["02: NVIDIA driver"]
step03["03: NVIDIA Container Toolkit"]
step03b["03b: system tools"]
step04["04: disk + vLLM"]
step05["05: LocalAI stack"]
step06["06: ComfyUI stack"]
step07["07: firewall i hardening"]
step01 --> step02 --> step03 --> step03b --> step04
step04 --> step05
step03 --> step06
step05 --> step06
step06 --> step07
```
Kolejność jest krytyczna: **Docker → sterownik GPU → nvidia-container-toolkit → workloady GPU w kontenerach**.
## Architektura dysków
| Dysk | Mount | Zawartość |
|------|-------|-----------|
| 128 GB NVMe | `/` | Ubuntu, `/etc`, `/home`, repo konfiguracyjne |
| 1 TB | `/data` | `/data/docker` (Docker), `/data/apps/*` (modele, LocalAI, ComfyUI) |
Szczegóły konfiguracji dysku 1 TB: rozdział [04 — vLLM stack](manual-tutorial/04-vllm-stack.md) (część A).
## Uwagi
- Do workloadów AI używamy wyłącznie **NVIDIA RTX 3090 Ti** (`CUDA_VISIBLE_DEVICES=0`), nie iGPU AMD.
- vLLM: brak domyślnego modelu — katalog w [`stacks/vllm/models.catalog.yaml`](stacks/vllm/models.catalog.yaml). Szczegóły: [`stacks/vllm/README.md`](stacks/vllm/README.md).
- LocalAI: UI + API na porcie **8070**, start bez modelu — [`stacks/localai/README.md`](stacks/localai/README.md).
- GPU Fan Control: web UI na porcie **8090** (SSH tunnel) — [`stacks/gpu-fan/README.md`](stacks/gpu-fan/README.md).
- Server UI: własny panel stacków na porcie **8091** — [`stacks/server-ui/README.md`](stacks/server-ui/README.md).
- Architektura panelu (gpu-fan + Docker UI): [`coding-agent/SERVER-UI-ARCHITECTURE-RESEARCH.md`](coding-agent/SERVER-UI-ARCHITECTURE-RESEARCH.md)
## Struktura repozytorium
```
ubuntu-bare-metal/
├── README.md
├── scripts/
│ └── setup-data-disk.sh # migracja dysku 1 TB (rozdział 04A)
├── stacks/
│ ├── vllm/
│ │ ├── README.md
│ │ ├── models.catalog.yaml # GGUF + vLLM AWQ, bez auto-download
│ │ ├── docker-compose.yml
│ │ ├── .env.example
│ │ ├── profiles/
│ │ │ ├── _template.env
│ │ │ └── qwen3.6-27b-awq-128k.env
│ │ └── scripts/
│ │ ├── list-models.sh
│ │ ├── download-model.sh
│ │ ├── switch-model.sh
│ │ └── start.sh
│ ├── llamacpp/
│ │ └── README.md # placeholder pod GGUF (port 8001)
│ ├── localai/
│ │ ├── README.md
│ │ ├── docker-compose.yml
│ │ ├── .env.example
│ │ └── scripts/
│ │ ├── clone-upstream.sh
│ │ ├── pull.sh
│ │ └── start.sh
│ ├── comfyui/
│ │ ├── README.md
│ │ ├── docker-compose.yml
│ │ ├── .env.example
│ │ └── scripts/
│ │ ├── ensure-dirs.sh
│ │ ├── pull.sh
│ │ └── start.sh
│ ├── dockge/ # DEPRECATED → server-ui
│ │ └── README.md
│ ├── server-ui/
│ │ ├── README.md
│ │ ├── app.py
│ │ ├── stacks.yaml
│ │ ├── server-ui.service
│ │ ├── static/index.html
│ │ └── scripts/
│ │ ├── install.sh
│ │ └── start.sh
│ └── gpu-fan/
│ ├── README.md
│ ├── app.py
│ ├── fan_controller.py
│ ├── curve.default.json
│ └── scripts/
│ ├── install.sh
│ └── start.sh
└── manual-tutorial/
├── 00-prerequisites.md
├── 01-system-update-and-docker.md
├── 02-nvidia-driver.md
├── 03-nvidia-container-toolkit.md
├── 03b-system-tools.md
├── 04-vllm-stack.md
├── 05-localai-stack.md
├── 06-gpu-fan-control.md
├── 07-comfyui-stack.md
└── ... (kolejne rozdziały)
```