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

284 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 03b — Narzędzia bazowe (Ubuntu minimized)
> **Cel rozdziału:** doinstalować minimalny zestaw narzędzi systemowych na Ubuntu minimized — tylko to, co potrzebne na **hoście**. vLLM, ComfyUI i CUDA działają w Dockerze, nie na systemie.
**Szacowany czas:** 5 minut
**Wymagania:** ukończony rozdział [01 — Docker CE](01-system-update-and-docker.md)
**Kiedy wykonać:** przed rozdziałem [04 — dysk + vLLM](04-vllm-stack.md). Można zrobić teraz (kroki 0103 już ukończone).
---
## Spis treści
1. [Filozofia: host vs Docker](#1-filozofia-host-vs-docker)
2. [Co już masz po krokach 0103](#2-co-już-masz-po-krokach-0103)
3. [Instalacja pakietów bazowych](#3-instalacja-pakietów-bazowych)
4. [Python na hoście — co i czego nie](#4-python-na-hoście--co-i-czego-nie)
5. [Git i repozytorium konfiguracyjne](#5-git-i-repozytorium-konfiguracyjne)
6. [Weryfikacja](#6-weryfikacja)
7. [Opcjonalne narzędzia](#7-opcjonalne-narzędzia)
8. [Czego świadomie NIE instalujemy na hoście](#8-czego-świadomie-nie-instalujemy-na-hoście)
9. [Następny krok](#9-następny-krok)
---
## 1. Filozofia: host vs Docker
Ubuntu **minimized** to świadomie odchudzona instalacja — bez edytorów, bez wielu narzędzi deweloperskich, bez GUI. Na serwerze AI trzymamy się zasady:
| Warstwa | Co tam żyje | Przykłady |
|---------|-------------|-----------|
| **Host (128 GB `/`)** | System, Docker, sterowniki, konfiguracja | `git`, `python3`, `nano`, `rsync`, `parted` |
| **Docker (`/data/docker`)** | Obrazy i kontenery | vLLM, ComfyUI, CUDA runtime |
| **Dane (`/data/apps`)** | Modele, checkpointy, cache | Hugging Face, ComfyUI models |
```mermaid
flowchart TB
host["Host Ubuntu minimized"]
docker["Docker Engine"]
vllm["Kontener vLLM — Python + PyTorch + CUDA"]
comfy["Kontener ComfyUI — Python + torch"]
host --> docker
docker --> vllm
docker --> comfy
```
**Nie instalujemy PyTorch, CUDA Toolkit ani vLLM na hoście** — wszystko to jest w kontenerach. Host dostaje tylko narzędzia administracyjne.
---
## 2. Co już masz po krokach 0103
Sprawdź aktualny stan:
```bash
for cmd in git python3 curl wget docker nvidia-smi; do
printf "%-12s " "$cmd"
command -v $cmd 2>/dev/null || echo "BRAK"
done
python3 --version
git --version
```
Na typowym stanie po rozdziałach 0103:
| Narzędzie | Status | Skąd |
|-----------|--------|------|
| `git` | zazwyczaj jest | zależność systemowa / automatyczna |
| `python3` | jest (minimalny) | preinstalowany na Ubuntu |
| `curl`, `wget` | są | rozdział 01 |
| `docker` | jest | rozdział 01 |
| `nvidia-smi` | jest | rozdział 02 |
| `nano`, `vim` | **brak** | minimized |
| `rsync` | **brak** | potrzebny do migracji Docker → `/data` |
| `parted` | **brak** | potrzebny do partycjonowania dysku 1 TB |
| `jq` | **brak** | wygodne testy API vLLM |
| `pip3` | **brak** | celowo — patrz sekcja 4 |
---
## 3. Instalacja pakietów bazowych
Jedna komenda — zestaw dla administracji serwerem i kolejnych rozdziałów tutoriala:
```bash
sudo apt update
sudo apt install -y \
git \
python3 \
python3-venv \
nano \
vim \
jq \
rsync \
parted \
e2fsprogs \
util-linux \
htop \
tmux \
tree \
unzip \
zip \
pciutils \
usbutils \
net-tools \
smartmontools
```
### Po co który pakiet
| Pakiet | Po co na tym serwerze |
|--------|----------------------|
| `git` | Wersjonowanie `ubuntu-bare-metal`, klonowanie configów |
| `python3` | `python3 -m json.tool`, skrypty admin (stdlib) |
| `python3-venv` | Izolowane środowiska Python — jeśli kiedyś własny skrypt |
| `nano` / `vim` | Edycja `.env`, `fstab`, `daemon.json` |
| `jq` | Parsowanie JSON z API vLLM (`curl ... \| jq`) |
| `rsync` | Migracja `/var/lib/docker``/data/docker` (rozdział 04) |
| `parted` | Partycjonowanie dysku 1 TB (rozdział 04) |
| `e2fsprogs` | `mkfs.ext4`, `fsck` — formatowanie `/data` |
| `util-linux` | `lsblk`, `blkid`, `mount` — diagnostyka dysków |
| `htop` | Monitorowanie CPU/RAM |
| `tmux` | Sesje SSH — proces nie ginie po rozłączeniu |
| `tree` | Podgląd struktury `/data` |
| `pciutils` | `lspci` — diagnostyka GPU |
| `smartmontools` | `smartctl` — zdrowie dysków (opcjonalnie, ale przydatne) |
---
## 4. Python na hoście — co i czego nie
### Co mamy
Ubuntu 26.04 minimized dostarcza **Python 3.14** (minimalny) — wystarczy do:
```bash
# formatowanie JSON z API
curl -s http://localhost:8000/v1/models | python3 -m json.tool
# walidacja daemon.json
python3 -m json.tool /etc/docker/daemon.json
```
### Czego NIE robimy na hoście
```bash
# NIE instaluj tego na hoście:
# pip install torch vllm transformers
# apt install nvidia-cuda-toolkit
```
Ubuntu 26.04 blokuje też `pip install` do systemowego Pythona (PEP 668 — „externally managed environment”). To **dobre** — chroni system przed bałaganem.
Jeśli kiedyś potrzebujesz własnego skryptu Python na hoście:
```bash
python3 -m venv ~/venv
source ~/venv/bin/activate
pip install requests # tylko w venv, nie globalnie
deactivate
```
Dla vLLM i ComfyUI — **nie potrzebujesz** venv na hoście.
---
## 5. Git i repozytorium konfiguracyjne
### 5.1 Inicjalizacja repo (jeśli jeszcze nie zrobione)
Repozytorium konfiguracyjne trzymamy na dysku **systemowym** (lekki tekst), nie na `/data`:
```bash
cd /home/tomasz-syn-grzegorza/cursor/ubuntu-bare-metal
git init
git add README.md manual-tutorial/ stacks/
git status
```
**Nie commituj** plików `.env` z tokenami — tylko `.env.example`.
Opcjonalnie `.gitignore`:
```bash
cat > .gitignore <<'EOF'
.env
*.log
__pycache__/
.venv/
EOF
```
### 5.2 Podstawowa konfiguracja git (opcjonalnie)
```bash
git config --global user.name "Twoje Imię"
git config --global user.email "twoj@email.com"
```
Bez tego `git commit` zapyta o autora przy pierwszym commicie.
---
## 6. Weryfikacja
```bash
# pakiety kluczowe
for cmd in git python3 nano vim jq rsync parted lsblk blkid htop tmux; do
printf "%-12s " "$cmd"
command -v $cmd 2>/dev/null || echo "BRAK"
done
# wersje
python3 --version
git --version
jq --version
# test jq
echo '{"status":"ok"}' | jq .
# test rsync
rsync --version | head -1
# test parted
parted --version | head -1
```
### Checklist
- [ ] `nano` lub `vim` działa
- [ ] `jq` formatuje JSON
- [ ] `rsync` dostępny (rozdział 04 — migracja Docker)
- [ ] `parted` i `lsblk` dostępne (rozdział 04 — dysk 1 TB)
- [ ] `git status` w katalogu `ubuntu-bare-metal` działa
---
## 7. Opcjonalne narzędzia
Instaluj tylko jeśli potrzebujesz:
```bash
# kompilacja czegoś ze źródeł (zwykle niepotrzebne na tym serwerze)
# sudo apt install -y build-essential
# monitorowanie GPU w czasie rzeczywistym (wygodniejsze niż watch nvidia-smi)
# sudo apt install -y nvtop
# sieć — ss jest nowocześniejszy niż netstat
ss -tlnp
# synchronizacja czasu (zwykle już działa)
timedatectl status
```
---
## 8. Czego świadomie NIE instalujemy na hoście
| Pakiet / narzędzie | Dlaczego nie |
|--------------------|--------------|
| `nvidia-cuda-toolkit` | CUDA jest w kontenerach Docker |
| `python3-pip` (globalnie) | PEP 668; używaj `venv` lub `jq` |
| `torch`, `vllm`, `transformers` (pip) | Działają w kontenerze vLLM |
| `nodejs`, `npm` | ComfyUI w Dockerze |
| `docker.io` (Ubuntu) | Mamy `docker-ce` z rozdziału 01 |
| GUI / desktop | Serwer headless |
| `snap` pakiety | Niepotrzebna złożoność na serwerze |
---
## 9. Następny krok
→ [04 — Dysk danych 1 TB + vLLM stack](04-vllm-stack.md)
Kolejność:
1. Ten rozdział (03b) — narzędzia bazowe
2. Rozdział 04 część A — dysk 1 TB + migracja Docker
3. Rozdział 04 część B — uruchomienie vLLM