I want to enable seachxng
– meta search engine in my Open WebUI (formerly Ollama Web UI).
I have written the docker compose file as below but the problem is, when I open Open Web UI and selected the ‘searxng
‘ as my web search option, added ‘http://searxng:8080/search?q=<query>
‘ as a searxng Query URL. After that, in the Open Web UI Chat box, I enable the Web Search option and asked the question ‘who is a winner of Euro 2024?‘. It gets me this error:
403 Client Error: FORBIDDEN for url: http://searxng:8080/search?q=who+is+euro+2024+winner&format=json&pageno=1&safesearch=1&language=en-US&time_range=&categories=&theme=simple&image_proxy=0
Therefore, could not get the results via web searching and got error every time.
Could you please tell me how to successfull yenable the web search engine ‘searxng’ in my Open Web UI?
I have written the docker-compose.yml file as below:
services:
webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- 3000:8080
environment:
OLLAMA_BASE_URL: http://ollama:11434
SEARXNG_URL: http://searxng:8088
ENABLE_RAG_WEB_SEARCH: True
RAG_WEB_SEARCH_ENGINE: "searxng"
RAG_WEB_SEARCH_RESULT_COUNT: 4
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 12
SEARXNG_QUERY_URL: "http://searxng:8088/search?q=<query>"
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
- searxng
restart: always
ollama:
image: ollama/ollama:latest
ports:
- 11434:11434
healthcheck:
test: ollama --version || exit 1
command: serve
volumes:
- ollama:/root/.ollama
- ./start_ollama.sh:/start_ollama.sh
restart: always
entrypoint: [ "/usr/bin/bash", "/start_ollama.sh" ]
searxng:
image: searxng/searxng:latest
ports:
- "8888:8080"
environment:
- BASE_URL=http://searxng:8088/
restart: always
volumes:
open-webui:
ollama:
2
Answers
I ran into same issue. The problem is that by default the SearXNG seems to only support
format=html
. I don’t know what is the best way to resolve this but you can getformat=json
working by editing/etc/searxng/settings.yml
and adding json to the enabled search formats. Would be nice to have environment variable for this for the docker image.This is what I successfully use with my app:
Base url should be set properly,
http://0.0.0.0:8080
might be more approppriate for container but localhost seems to work.I have the modified
./searxng/settings.yml
given to searxng as a volume mount.To see if you can access the searxng, try with curl from your webui container.
The issue is that port 8080 is being used by OpenWebUI inside it’s docker container by default. Even though you see it on port 3000 outside of docker, inside it’s own docker it’s connecting to itself when it tries localhost:8080 or any equivalent.
From OpenWebUI’s perspective localhost:8080 is internal to the container. It needs to be remapped so that either SearxNG is on a different port relative to OpenWebUI or OpenWebUI is calling it as a named service. Honestly, named services are the best way to address this because it prevents conflicts from everything else that wants to use these ultra common ports.
There’s some directions on how to remap it located here: https://docs.openwebui.com/tutorials/integrations/web_search/