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

6.1 KiB
Raw Permalink Blame History

08 — Server UI i panel sterowania (Control Plane)

Cel rozdziału: zainstalować panel Server UI do zarządzania stackami Docker (LocalAI, ComfyUI, vLLM, NPMPlus) oraz zakładkę GPU Fan — i wiedzieć, gdzie są klucze API.

Szacowany czas: 1015 minut

Wymagania: rozdział 01 — Docker; opcjonalnie 06 — gpu-fan dla zakładki wentylatorów


Spis treści

  1. Co to jest Server UI
  2. Dlaczego nie ma go w docker ps
  3. Instalacja jednym skryptem
  4. Gdzie są klucze API
  5. Jak uruchomić i otworzyć panel
  6. Tryb Docker (opcjonalnie)
  7. Troubleshooting
  8. Następny krok

1. Co to jest Server UI

Server UI to jeden panel w przeglądarce (port 8091), w którym możesz:

  • włączać i wyłączać stacki Docker (Start / Stop / Restart),
  • przeglądać logi kontenerów,
  • otwierać linki do LocalAI, ComfyUI, vLLM, NPMPlus,
  • zmieniać porty usług (zapis do .env stacku),
  • sterować wentylatorami GPU (zakładka GPU Fan).

Zastępuje Portainer i Dockge.


2. Dlaczego nie ma go w docker ps

Komenda docker ps pokazuje tylko kontenery Docker.

Co widzisz w docker ps Co to jest
comfyui, npmplus, localai Stacki AI / proxy — Docker
Brak server-ui Panel działa jako usługa systemd na hoście (domyślnie)
Brak gpu-fan Agent wentylatorów — też systemd na hoście

To nie jest błąd. Panel nie musi być kontenerem.

Sprawdzenie:

systemctl status server-ui gpu-fan
ss -tln | grep -E '8091|18090'

Jeśli wybrałeś instalację Server UI w Dockerze (opcja 2 w instalatorze), wtedy zobaczysz kontener:

docker compose --profile server-ui ps

3. Instalacja jednym skryptem

Na serwerze:

cd ~/cursor/ubuntu-bare-metal/stacks/server-ui
sudo ./scripts/install-control-plane.sh

Menu instalatora

1) gpu-fan — agent sterowania wentylatorami GPU

  • Działa tylko na hoście (root + NVML).
  • Nie instalujemy go w Dockerze — karta wymaga bezpośredniego dostępu do sterownika NVIDIA.
  • Zalecane: Y (tak).

2) Server UI — panel w przeglądarce

Opcja Opis
1 — Native systemd, /opt/server-ui (zalecane)
2 — Docker kontener z dostępem do docker.sock
3 — Pomiń tylko gpu-fan

Instalacja bez pytań (domyślnie: gpu-fan + server-ui native)

sudo ./scripts/install-control-plane.sh -y

Tylko Server UI (bez gpu-fan)

sudo ./scripts/install-control-plane.sh --gpu-fan=no --server-ui=native

4. Klucz API — wpisz w panelu

Pełna instrukcja krok po kroku: 04a — Klucz API

Skrót po instalacji:

  1. Na serwerze: sudo grep ^API_KEY= /opt/control-plane/.env — skopiuj wartość po =
  2. W przeglądarce: http://<IP-serwera>:8091/ → pole API KeyZapiszSprawdź klucz
  3. Lub gotowy link: bash stacks/server-ui/scripts/show-api-key.sh (wypisze URL z kluczem)

Jeden plik, jeden klucz — /opt/control-plane/.env (Server UI + gpu-fan).

Nie używaj stacks/server-ui/.env ani GPU_FAN_AGENT_KEY — to przestarzałe.


5. Jak uruchomić i otworzyć panel

Native (systemd)

sudo systemctl status server-ui
sudo systemctl start server-ui    # jeśli zatrzymany
sudo systemctl restart server-ui  # po aktualizacji kodu

Adres (przykład):

http://192.168.100.90:8091/

gpu-fan (jeśli zainstalowany)

sudo systemctl status gpu-fan
journalctl -u gpu-fan -f

Weryfikacja API

curl -s http://127.0.0.1:8091/api/health
curl -s http://127.0.0.1:8091/api/stacks

Aktualizacja kodu po zmianach w repo

cd ~/cursor/ubuntu-bare-metal/stacks/server-ui
sudo ./scripts/install.sh && sudo systemctl restart server-ui

6. Tryb Docker (opcjonalnie)

Jeśli w instalatorze wybrałeś 2 — Docker:

cd ~/cursor/ubuntu-bare-metal/stacks/server-ui
docker compose --profile server-ui ps
docker compose --profile server-ui logs -f
docker compose --profile server-ui down    # stop
sudo ./scripts/install-docker.sh           # ponowna instalacja

gpu-fan nadal działa na hoście (systemd) — kontener Server UI łączy się z agentem przez host.docker.internal:18090.

Przełączenie z Docker na native:

docker compose --profile server-ui down
sudo ./scripts/install.sh

7. Troubleshooting

Port 8091 zajęty

ss -tlnp | grep 8091
systemctl status server-ui

Zobacz też: 06 — gpu-fan, sekcja portów (podobna sytuacja — nie zwiększaj portu bez diagnozy).

Zakładka GPU Fan nie działa

  1. Czy gpu-fan działa: systemctl status gpu-fan
  2. Czy agent odpowiada:
    API_KEY=$(grep ^API_KEY= /opt/control-plane/.env | cut -d= -f2)
    curl -s http://127.0.0.1:18090/api/status -H "X-API-Key: $API_KEY"
    
  3. Ten sam klucz w panelu Server UI (pole API Key lub ?api_key=)

Start stacku zwraca 401 / Invalid API key

Zobacz 04a — Klucz API, sekcja 7.

Start stacku zwraca 409

Tylko jeden duży workload GPU naraz (LocalAI lub ComfyUI lub vLLM). Zatrzymaj działający stack GPU przed startem drugiego.


8. Następny krok

  • Zarządzaj stackami z panelu :8091
  • Edytuj porty usług w kartach stacków (pole Zapisz port)
  • Przy zmianie portu LocalAI zaktualizuj upstream w NPMPlus ręcznie

Powrót do roadmapy: README.md


Podsumowanie

Pytanie Odpowiedź
Gdzie panel? http://<IP>:8091/
Dlaczego nie w docker ps? Domyślnie systemd, nie kontener
Klucz (Server UI + gpu-fan) 04a — Klucz API · /opt/control-plane/.env
Instalacja sudo ./scripts/install-control-plane.sh