LOEMIND.md 11 KB

Open WebUI – Docker kasutusjuhend

Professionaalne LLM veebiliides. Vestlus, RAG (dokumentide põhine küsimine), veebiotsing.

Arhitektuur (2025-07-05 seisuga)

Komponent Asukoht Staatus
Open WebUI Docker konteiner (open-webui) port 3010
Ollama Native systemd teenus (ollama.service) port 11434
Ollama GPU ROCm 7.2.2, gfx1151 (Radeon 8060S) hostil
mcp-filesystem Docker konteiner (mcp-filesystem-sse) port 3100
mcp-terminal Docker konteiner (mcp-terminal) port 3110
tika Docker konteiner (tika) port 9998
Qdrant Docker konteiner (qdrant) port 6333-6334
SearXNG Docker konteiner (searxng) port 8888
PostgreSQL Docker konteiner (postgres_postgis) port 5432

NB! Ollama EI OLE enam Dockeris. See jookseb native systemd teenusena koos ROCm GPU toega. Vana Dockeri konteiner (ollama-rocm) on eemaldatud.

GPU / ROCm

Server: AZW GTR Pro mini-PC

  • CPU: AMD Ryzen AI Max+ 395 (16C/32T, Zen 5)
  • GPU: AMD Radeon 8060S (RDNA 3.5, gfx1151, 40 CU)
  • ROCm: 7.2.2 installeeritud hostil (/opt/rocm/)
  • NPU: AMD RyzenAI (aie2p) – hetkel kasutamata

ROCm teegid on registreeritud süsteemis:

# Kontrolli GPU olekut
rocm-smi
rocminfo
cat /sys/class/drm/card1/device/gpu_busy_percent

# ROCm teegid
ls /opt/rocm/lib/libamdhip64*
ldconfig -p | grep amdhip64

Ollama haldus (native, systemd)

Ollama teenus jookseb hostil ollama.service nimega:

# Ollama teenuse olek
sudo systemctl status ollama

# Taaskäivita
sudo systemctl restart ollama

# Logid
journalctl -u ollama -f
journalctl -u ollama --no-pager -n 50

# Kontrolli GPU tuvastust
journalctl -u ollama --no-pager | grep -iE 'gpu|rocm|gfx|inference'

# Kasuta ollama CLI-d
ollama list        # mudelite nimekiri
ollama ps          # hetkel laetud mudelid
ollama show <nimi> # mudeli detailid

Teenuse konfiguratsioon:

  • Service fail: /etc/systemd/system/ollama.service
  • Override: /etc/systemd/system/ollama.service.d/override.conf
  • Mudelite asukoht: /home/ardo/.ollama/models
  • Kasutaja: ollama (grupid: render, video, ardo)
  • GPU override: HSA_OVERRIDE_GFX_VERSION=11.5.1
  • ROCm teegid: LD_LIBRARY_PATH=/opt/rocm/lib

Paigaldatud mudelid

Mudel Suurus Kasutus
nomic-embed-text:latest 274 MB RAG embedding (GPU)
qwen3:30b-fast 18 GB LLM vestlus
deepseek-r1:14b 9.0 GB LLM vestlus (reasoning)
translategemma:12b 8.1 GB Tõlkimine
bge-m3:latest 1.2 GB Varu-embedding

Mudelite haldus

# Lae mudel
ollama pull qwen3:30b-fast

# Eemalda mudel
ollama rm nomic-embed-text-cpu

# Testi mudelit (verbose näitab tok/sek)
ollama run nomic-embed-text "test" --verbose

Embedding konfiguratsioon (RAG)

OpenWebUI embeddingud on seadistatud kasutama nomic-embed-text:latest mudelit koos GPU kiirendusega. Ära kasuta nomic-embed-text-cpu mudelit – see on ainult CPU jaoks (num_gpu=0) ja oluliselt aeglasem.

Compose failis: RAG_EMBEDDING_MODEL=nomic-embed-text

Jõudluse võrdlus

Mõõdik CPU mudel (-cpu) GPU mudel (latest) Kiirendus
901 embedit (batch) ~39 s ~9.5 s 4x
848 embedit (batch) ~39 s ~8.1 s 5x
Üksik API päring ~28 s ~0.3 s 100x

Embedding API test

# Testi embeddingut
curl http://localhost:11434/api/embeddings       -d '{
    "model": "nomic-embed-text",
    "prompt": "How to implement semantic search with Python"
  }'

Vektorbaasi puhastamine

# Qdrant kollektsiooni kustutamine
curl -X DELETE http://qdrant:6333/collections/open-webui_files

# Läbi OpenWebUI skripti
docker exec -ti open-webui bash -c "python /scripts/clean_qdrant.py"

Seadistus

Kasutab:

  • Ollama (native, systemd) – LLM mudelid ja embeddingud
  • SearXNG – Veebiotsing
  • Qdrant – Vektorbaas (väljaspool seda compose'i)
  • PostgreSQL – Andmebaas

Olulised keskkonnamuutujad compose failis:

  • USE_OLLAMA_DOCKER=false – väldib OpenWebUI sisemist ollama käivitust
  • RAG_EMBEDDING_MODEL=nomic-embed-text – GPU embedding mudel
  • RAG_EMBEDDING_ENGINE=ollama – embedding API läbi ollama
  • OLLAMA_API_BASE_URL=http://100.87.1.24:11434 – ollama API
  • VECTOR_DB=qdrant – vektorbaasi tüüp

Docker käsud

# Ava kaust
cd /opt/docker-compose/third/server/openwebui/

# Käivita (ainult open-webui teenus)
docker-compose up -d open-webui

# Käivita kõik teenused
docker-compose up -d

# Peata
docker-compose down

# Taaskäivita
docker-compose restart open-webui

# Logid (ainult open-webui)
docker-compose logs -f open-webui

# Logid (kõik)
docker-compose logs -f

# Uuenda
docker-compose pull open-webui
docker-compose up -d open-webui

Docker otse

# Konteinerite seis
docker ps | grep -E "open-webui|tika|mcp"

# Logid nime järgi
docker logs open-webui
docker logs tika

# Sisene konteinerisse
docker exec -it open-webui /bin/bash
docker exec -it tika /bin/bash

Teenused

Teenus Port URL
Open WebUI 3010 http://100.87.1.24:3010
Ollama API 11434 http://100.87.1.24:11434 (native, mitte Docker)
MCP Filesystem 3100 http://127.0.0.1:3100/mcp (ainult localhost)
MCP Terminal 3110 http://127.0.0.1:3110/mcp (ainult localhost)
Apache Tika 9998 http://100.87.1.24:9998

Tervisekontroll

Open WebUI kontrollib iseenda tervist iga 30 sekundi järel:

# Testi käsitsi
curl http://100.87.1.24:3010/health

# Ollama tervisekontroll
curl http://100.87.1.24:11434/api/tags

Olulised kataloogid

Asukoht Sisu
/opt/docker-compose/third/server/openwebui/ Compose failid ja see dokument
/data/docker/open-webui/scripts Skriptid
/backups/docker/open-webui Varukoopiad
/home/ardo/.ollama/models Ollama mudelid (35 GB)
/opt/rocm/ ROCm installatsioon
/etc/systemd/system/ollama.service Ollama systemd teenus
/etc/systemd/system/ollama.service.d/override.conf Ollama teenuse override

Fallback: Dockeri ollama taastamine

Kui on vaja minna tagasi Dockeri ollama peale (nt probleemid native installiga):

# Peata native ollama
sudo systemctl stop ollama

# Käivita Docker ollama (vana startup.sh põhjal)
docker run -d       --name ollama-rocm       --restart unless-stopped       --device /dev/kfd       --device /dev/dri       --security-opt seccomp=unconfined       --security-opt label=disable       -p 11434:11434       -v /home/ardo/.ollama/:/root/.ollama/       -e OLLAMA_HOST=0.0.0.0:11434       -e HSA_OVERRIDE_GFX_VERSION=11.5.1       -e OLLAMA_NUM_PARALLEL=4       ollama/ollama:rocm

# Vajadusel muuda OpenWebUI compose failis:
#   USE_OLLAMA_DOCKER=true
# ja taaskäivita:
#   docker-compose up -d open-webui

MCP tööriistade kasutamine OpenWebUIs

Vestluses ava @ menüü või klõpsa + nuppu ja vali Filesystem või Terminal.

@Filesystem — failihaldus (AI tööriist)

Tööriist Näide
list_directory @Filesystem list directory path=/data
read_file @Filesystem read file path=/scripts/clean_qdrant.py
write_file @Filesystem write file path=/backups/märkmed.txt content="Tere!"
search_files @Filesystem search files path=/scripts pattern=*.py
get_file_info @Filesystem get file info path=/data
create_directory @Filesystem create directory path=/backups/test

Lubatud kataloogid: /data, /scripts, /backups

@Terminal — käsurida (AI tööriist)

Tööriist Näide
run_command @Terminal run_command: docker ps
@Terminal run_command: df -h /
@Terminal run_command: docker logs open-webui --tail 20
@Terminal run_command: curl -s http://open-webui:8080/health
@Terminal run_command: uname -a

Lubatud käsud: ls, cat, grep, df, du, ps, docker ps/logs/inspect, curl, ping, uname, echo, stat, which, whoami, env, tree, find, head, tail, sort, uniq, file, free, uptime, id, date, host Blokeeritud: rm, sudo, shutdown, | (torud), $(), >, &&, docker rm/stop/kill

Näidisvestlus AI-ga:

Sina: "Vaata, mis toimub – docker logs open-webui --tail 10" AI: (kasutab @Terminal run_command) "Siin on viimased logiread..."

Sina: "Leia /scripts kataloogist kõik Python skriptid" AI: (kasutab @Filesystem search_files) "Leidsin faili clean_qdrant.py"

Tailscale MCP serverite eksponeerimiseks

MCP serverid on seotud ainult 127.0.0.1-ga (turvalisuse mõttes). Kui vajad neile ligipääsu läbi Tailscale'i, kasuta:

# MCP Filesystem (Streamable HTTP)
sudo tailscale serve --bg --https 3100 http://127.0.0.1:3100

# MCP Terminal (Streamable HTTP)
sudo tailscale serve --bg --https 3110 http://127.0.0.1:3110

# Kontrolli staatust
sudo tailscale serve status

# Keela
sudo tailscale serve --https=3100 off
sudo tailscale serve --https=3110 off

Pärast seda on MCP serverid kättesaadavad:

  • https://100.87.1.24:3100/mcp
  • https://100.87.1.24:3110/mcp

NB! Brauseris /sse avamine ei tööta, sest SSE on püsiv ühendus (Streamable HTTP), mitte tavalise GET-päringuga laetav leht. MCP klient (OpenWebUI) haldab ühendust ise.

Võrguinfo

  • Kõik konteinerid on main_ai_network peal (compose'is ai_network)
  • Ligipääs Ollamale, SearXNG-le ja Qdrantile läbi host.docker.internal
  • extra_hosts on seadistatud compose failis

Vead ja tõrkeotsing

Embedimine aeglane

  • Kontrolli, et RAG_EMBEDDING_MODEL=nomic-embed-text (ilma -cpu-ta)
  • Kontrolli ollama ps – peaks näitama "100% GPU"
  • Kui mudel on nomic-embed-text-cpu, eemalda see: ollama rm nomic-embed-text-cpu
  • Kontrolli GPU olekut: cat /sys/class/drm/card1/device/gpu_busy_percent

Failide üleslaadimine ebaõnnestub – "Too many open files"

  • Põhjus: compose failis puudub ulimits: seadistus, Dockeri vaikimisi limiit on 1024
  • Lahendus: kontrolli, et compose failis on ulimits.nofile.soft=65536 ja hard=65536
  • Kontrolli konteineri limiiti: docker exec open-webui cat /proc/1/limits | grep "open files"
  • Peaks näitama: Max open files 65536 65536

Ollama ei leia GPU-d

# Kontrolli ROCm teeke
ldconfig -p | grep amdhip64

# Kontrolli HSA override
journalctl -u ollama --no-pager | grep HSA_OVERRIDE

# Taaskäivita ollama
sudo systemctl restart ollama

# Kontrolli logisid
journalctl -u ollama -f | grep -i gpu

OpenWebUI ei ühendu Ollamaga

# Testi ollama API-t
curl http://100.87.1.24:11434/api/tags

# Kontrolli compose faili
grep OLLAMA /opt/docker-compose/third/server/open-webui/docker-compose.yml

# Taaskäivita OpenWebUI
cd /opt/docker-compose/third/server/openwebui/
docker-compose restart open-webui

Ajalugu

Kuupäev Muudatus
2025-07-05 Ollama viidud Dockerist native systemd peale (ROCm GPU tugi)
2025-07-05 Embedding mudel muudetud nomic-embed-text-cpu -> nomic-embed-text:latest
2025-07-05 Lisatud USE_OLLAMA_DOCKER=false compose faili
2025-07-05 startup.sh OpenWebUI osa asendatud docker-compose haldusega
2025-07-05 Lisatud ulimits.nofile=65536 compose faili (parandab "Too many open files")