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>
4.1 KiB
Server UI — Docker stack manager
Własny panel do zarządzania znanymi stackami compose na gmktec-k11. Zastępuje Dockge i Portainer. Zawiera przeglądarkę plików, panel GPU Fan (proxy do agenta na hoście) i zarządzanie stackami.
Dlaczego nie ma Server UI w docker ps?
docker ps pokazuje tylko kontenery Docker. Domyślna instalacja Server UI to systemd na hoście (server-ui.service na porcie 8091) — nie pojawi się na liście kontenerów. To normalne.
| Usługa | Runtime | W docker ps |
|---|---|---|
| ComfyUI, LocalAI, vLLM, NPMPlus | Docker compose | tak |
| Server UI (native) | systemd → /opt/server-ui |
nie |
| gpu-fan agent | systemd → /opt/gpu-fan |
nie |
Sprawdzenie: systemctl status server-ui lub docker compose --profile server-ui ps (tryb Docker).
Port
| Serwis | Port | URL |
|---|---|---|
| Server UI | 8091 | http://HOST:8091 |
| CLI (zakładka) | — | ten sam URL, zakładka CLI lub #cli |
| Pliki (zakładka) | — | ten sam URL, zakładka Pliki lub #files |
| GPU Fan (zakładka) | — | ten sam URL, zakładka GPU Fan |
| gpu-fan agent API | 18090 | tylko localhost (proxy z Server UI) |
Instalacja (zalecana — jeden skrypt)
cd ~/cursor/ubuntu-bare-metal/stacks/server-ui
sudo ./scripts/install-control-plane.sh
Menu:
- gpu-fan — tylko native (NVML na hoście; Docker nieobsługiwany)
- Server UI — native (systemd) lub Docker (kontener)
Flagi nieinteraktywne:
sudo ./scripts/install-control-plane.sh -y
sudo ./scripts/install-control-plane.sh --gpu-fan=yes --server-ui=docker
Tylko Server UI
| Tryb | Komenda |
|---|---|
| Native (systemd) | sudo ./scripts/install.sh |
| Docker | sudo ./scripts/install-docker.sh |
Klucze API po instalacji:
bash stacks/server-ui/scripts/show-api-key.sh
Tutorial klucza: ../../manual-tutorial/04a-api-key.md
Dev: stacks/control-plane/.env (szablon: stacks/control-plane/.env.example)
Tutorial: ../../manual-tutorial/08-server-ui-install.md · CLI: 10-server-ui-cli.md · Pliki: 09-file-explorer.md
Stacki (whitelist)
| Stack | Profil | Port UI | GPU |
|---|---|---|---|
| LocalAI | localai |
8070 | tak |
| ComfyUI | comfyui |
8188 | tak |
| vLLM | vllm |
8000 | tak |
| NPMPlus | npmplus |
81 (HTTPS) | nie |
Porty edytowalne w UI (zapis do stacks/<name>/.env). Szczegóły: ../../coding-agent/SERVER-UI-PORT-CONFIG.md
Bezpieczeństwo
- Odczyt statusu stacków/logów/GPU — bez klucza (LAN).
- Start / Stop / Restart stacków, GPU Fan, Pliki (CRUD) i CLI — nagłówek
X-API-Key(CLI: klucz w query WebSocket?api_key=). - Przy
SERVER_UI_HOST=0.0.0.0klucz jest wymagany przy starcie usługi.
Tryb dev (z repo)
cp ../control-plane/.env.example ../control-plane/.env
./scripts/start.sh
Struktura
stacks/server-ui/
├── app.py
├── Dockerfile
├── docker-compose.yml
├── compose_runner.py
├── stacks.yaml
├── server-ui.service
├── static/index.html
├── static/vendor/xterm/ # xterm.js dla zakładki CLI
├── cli_pty.py
└── scripts/
├── install-control-plane.sh # gpu-fan + server-ui (menu)
├── install.sh # native only
├── install-docker.sh # docker only
└── start.sh