# SearXNG + Open WebUI integratsioon (ohmu server)
See juhend kirjeldab, kuidas SearXNG töötab koos Open WebUI‑ga ja milliseid seadeid me muutsime.
## 1. Asukoht ja käivitamine
Projektikataloog:
bash cd /opt/docker-compose/main
Põhikäsklused:
bash
docker-compose up -d
docker-compose up -d searxng
docker-compose up -d open-webui
docker logs -f searxng docker logs -f open-webui
---
## 2. SearXNG seadistus
### 2.1 Docker Compose teenus
Fail: `docker-compose.yml`
yaml searxng: image: searxng/searxng:latest container_name: searxng restart: always ports:
- "8888:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://100.87.1.24:8888/
- SEARXNG_SECRET=searxng_secret_key_change_me_2026_random_string
- TZ=Europe/Tallinn
networks:
- ai_network
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8080/healthz"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
### 2.2 `settings.yml` olulisemad read
Fail: `./searxng/settings.yml` (mount’itud konteinerisse `/etc/searxng/settings.yml`)
yaml server: port: 8080 # sisemine port konteineris bind_address: "0.0.0.0" base_url: false limiter: false # rate limiting / botdetection välja public_instance: false method: "GET"
formats:
json # vajalik, et Open WebUI saaks JSON-tulemusi
DuckDuckGo CAPTCHAd vältimiseks on DDG mootorid soovi korral keelatud:
yaml
name: duckduckgo engine: duckduckgo shortcut: ddg disabled: true
(jne kõik ddg‑* mootorid `disabled: true`).
### 2.3 Limiter konfiguratsioon (valikuline)
Fail: `./searxng/limiter.toml`
toml
[botdetection.ip_limit] filter_link_local = false link_token = false
[botdetection.ip_lists] pass_ip = [ "172.16.0.0/12", "10.0.0.0/8", "192.168.0.0/16" ]
NB! Kuigi logides on hoiatus `X-Forwarded-For nor X-Real-IP header is set!`, tänu `limiter: false` ei blokita päringuid – seda hoiatust võib ignoreerida.
---
## 3. Open WebUI seadistus SearXNG jaoks
### 3.1 Docker Compose teenus
Fail: `docker-compose.yml` – `open-webui` teenuse `environment` ploki kõige olulisemad read.
yaml open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui restart: always ports:
- "3000:8080"
volumes:
- open-webui_data:/app/backend/data
- ./open-webui-uploads:/app/backend/data/uploads
- ./open-webui-docs:/app/backend/data/docs
environment:
# Põhiseaded
- WEBUI_SECRET_KEY=ai_webui_secret_2026_change_me_to_random_string
- TZ=Europe/Tallinn
- OLLAMA_BASE_URL=http://ollama:11434
# RAG & embeddingud
- ENABLE_RAG_WEB_SEARCH=true
- RAG_EMBEDDING_ENGINE=ollama
- RAG_EMBEDDING_MODEL=nomic-embed-text:latest
# Web search SearXNG kaudu (OLULINE!)
- RAG_WEB_SEARCH_ENGINE=searxng
- SEARXNG_QUERY_URL=http://searxng:8080/search?q=<query>&format=json&categories=general,science
- RAG_WEB_SEARCH_RESULT_COUNT=3
- RAG_WEB_SEARCH_CONCURRENT_REQUESTS=5
**Oluline viga, mille parandasime:**
alguses oli
yaml SEARXNG_QUERY_URL=http://searxng:8080/search?q=&categories=general,science
See ei sisestanud päringut ja SearXNG logisse ei tekkinud ühtegi `search` päringut.
Õige on **`q=<query>&format=json`**.
---
## 4. Web search kasutamine Open WebUI-s
### 4.1 Kuidas käivitada veebiotsing
Vestluses:
text #web Milline ilm on täna Hiiumaal?
või
text #web Millised on viimased uudised Eestist?
`#web` sümbol sunnib Open WebUI’d kasutama RAG web search’i SearXNG kaudu.
### 4.2 Kuidas kontrollida, kas SearXNG päriselt töötab
1. Ava terminal:
bash docker logs -f searxng
2. Teises aknas Open WebUI-s tee `#web ...` päring.
3. Kui integratsioon töötab, ilmuvad SearXNG logidesse uued read (vead / hoiatused / info) täpselt päringu ajal.
Lisaks saab käsitsi testida:
bash curl "http://100.87.1.24:8888/search?q=hiiumaa&format=json" | jq '.results[0:2]' docker exec open-webui curl -s "http://searxng:8080/search?q=test&format=json" | jq '.results.title'
---
## 5. Tüüpilised probleemid ja lahendused
1. **Open WebUI vastused on „vana info“, SearXNG logi ei muutu**
→ kontrolli, et `SEARXNG_QUERY_URL` sisaldab `<query>` ja `format=json`.
2. **SearXNG logis DuckDuckGo CAPTCHA vead**
→ keela DuckDuckGo mootorid `settings.yml`‑is (`disabled: true`).
3. **SearXNG logis pidevalt `X-Forwarded-For nor X-Real-IP`**
→ hoiatus; kuna `limiter: false`, võib seda ignoreerida.
4. **Tahad rohkem / vähem veebi tulemusi**
→ muuda Open WebUI env:
yaml
RAG_WEB_SEARCH_CONCURRENT_REQUESTS=5 # 5–8, olenevalt koormusest
---
## 6. Kiire „reset“ integratsioonile
Kui tulevikus miski läheb segamini:
bash
cd /opt/docker-compose/main
docker-compose stop open-webui searxng
docker-compose up -d searxng
docker-compose up -d open-webui
Seejärel testi:
bash docker exec open-webui curl -s "http://searxng:8080/search?q=test&format=json" | jq '.results.title'
Kui see töötab, on SearXNG ja Open WebUI integratsioon korras.
^1^10^11^12^13^14^15^16^17^18^19^2^20^21^3^4^5^6^7^8^9