README_searxng.md 5.9 KB

SearXNG ja Open WebUI integratsioon

# 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

Kõik teenused taustal

docker-compose up -d

Ainult SearXNG

docker-compose up -d searxng

Ainult Open WebUI

docker-compose up -d open-webui

Logid

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:

  • html
  • 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_RESULT_COUNT=3 # 3–5 on mõistlik
  • 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

Stoppi ainult need kaks

docker-compose stop open-webui searxng

Käivita SearXNG

docker-compose up -d searxng

Kui SearXNG on terve:

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