Originally created by @mdillondc on GitHub (Jun 2, 2024).
I don't see how a full bug report would be warranted here. This is simply lack of documentation.
Help structuring searxng query url
I cannot for the life of me figure out how the Searxng Query URL should be structured under "Document Settings - Web Params"
I have tried:
Enter a search url to an instance with JSON enabled, e.g. https://some.searxng.instance/search?q=%&format=json and https://some.searxng.instance/ and https://some.searxng.instance/search&format=json
I expect the % to be replaced with my actual search query. Instead, the search just searches for the actual percentage sign and comes up with e.g. https://en.wikipedia.org/wiki/Percent_sign as a source.
Open WebUI Version: 0.2.0
Originally created by @mdillondc on GitHub (Jun 2, 2024).
I don't see how a full bug report would be warranted here. This is simply lack of documentation.
**Help structuring searxng query url**
I cannot for the life of me figure out how the `Searxng Query URL` should be structured under "Document Settings - Web Params"
**I have tried:**
Enter a search url to an instance with JSON enabled, e.g. `https://some.searxng.instance/search?q=%&format=json` and `https://some.searxng.instance/` and `https://some.searxng.instance/search&format=json`
I expect the `%` to be replaced with my actual search query. Instead, the search just searches for the actual percentage sign and comes up with e.g. `https://en.wikipedia.org/wiki/Percent_sign` as a source.
- **Open WebUI Version:** 0.2.0
I have setup Searx-NG a long time ago with the standard "settings.yml"
For anyone who gets "403 Forbidden" like me, you need to enable JSON in the settings.yml
@Morethanevil commented on GitHub (Jun 2, 2024):
Additional info:
I have setup Searx-NG a long time ago with the standard "settings.yml"
For anyone who gets "403 Forbidden" like me, you need to enable JSON in the settings.yml

Not in the slightest! Very happy that you raised this issue. Could not have solved it time wise concisely. So thank you!
Furthermore:
Navigate to: Workspace -> Documents -> Document Settings -> Web Params
Toggle Enable Web Search
Select Web Search Engine from dropdown menu
Set Searxng Query URL to examples given: https://<search.domain.com>/search?q=<query> or http://<searxng.local>/search?q=<query>. Do note the <query> part is mandatory.
Furthermore, I had hoped to configure it directly within the docker compose file. For now, I was unable to do so with environment variables. Any suggestions?
@remkolems commented on GitHub (Jun 4, 2024):
@mdillondc
> I'm an idiot. Sorry.
Not in the slightest! Very happy that you raised this issue. Could not have solved it time wise concisely. So thank you!
---
Furthermore:
1. Navigate to: `Workspace` -> `Documents` -> `Document Settings` -> `Web Params`
2. Toggle `Enable Web Search`
3. `Select Web Search Engine` from dropdown menu
4. Set `Searxng Query URL` to examples given: `https://<search.domain.com>/search?q=<query>` or `http://<searxng.local>/search?q=<query>`. Do note the `<query>` part is mandatory.

Furthermore, I had hoped to configure it directly within the docker compose file. For now, I was unable to do so with environment variables. Any suggestions?
@justinh-rahb commented on GitHub (Jun 4, 2024):
> Indeed, environment variables for enabling Web Search seems to be missing.
These ones? https://docs.openwebui.com/getting-started/env-configuration#web-search
Click "+" on text field and toggle "Web Search". Documentation is lacking here.
I would love to have that toggle not hidden behind "+".
@Expro commented on GitHub (Jun 4, 2024):
Click "+" on text field and toggle "Web Search". Documentation is lacking here.
I would love to have that toggle not hidden behind "+".
@DustyTurtleDip i don't think so but i'm not even sure you would want that as it's slower.
@Expro after some testing it'd be nice if it used the context to make the query and make one only if it determines that it is necessary.
for example if i ask what the weather is like where i live, it is unable to look up the personal information i gave in "memory" and make a search to look for that town.
it is also unable to use the context to make a subsequent query.
it seems like it's only searching and adding to rag what the user typed in the last message.
it's cool to have barebone search but something more advanced like hugging chat where it uses its context and even tries to crawl the replies would be cool!
as for the memory tab, an edit button would be nifty.
still cool though.
@alkeryn commented on GitHub (Jun 4, 2024):
@DustyTurtleDip i don't think so but i'm not even sure you would want that as it's slower.
@Expro after some testing it'd be nice if it used the context to make the query and make one only if it determines that it is necessary.
for example if i ask what the weather is like where i live, it is unable to look up the personal information i gave in "memory" and make a search to look for that town.
it is also unable to use the context to make a subsequent query.
it seems like it's only searching and adding to rag what the user typed in the last message.
it's cool to have barebone search but something more advanced like hugging chat where it uses its context and even tries to crawl the replies would be cool!
as for the memory tab, an edit button would be nifty.
still cool though.
@tjbck commented on GitHub (Jun 4, 2024):
PR to our docs would be greatly appreciated 🙌
https://github.com/open-webui/docs/blob/main/docs/tutorial/web_search.md
Thank you for the info here, especially @Morethanevil adding the info to the searxng config file fixed the issue I was having! Pretty cool that this works with no google API!
@samssausages commented on GitHub (Jun 4, 2024):
Thank you for the info here, especially @Morethanevil adding the info to the searxng config file fixed the issue I was having! Pretty cool that this works with no google API!
@justinh-rahb commented on GitHub (Jun 4, 2024):
> PR to our docs would be greatly appreciated 🙌
>
> https://github.com/open-webui/docs/blob/main/docs/tutorial/web_search.md
Ask and ye shall receive 👍 https://github.com/open-webui/docs/pull/94
Click "+" on text field and toggle "Web Search". Documentation is lacking here.
I would love to have that toggle not hidden behind "+".
It took me a while to find this as well.
It might add clutter, but I feel that the search button should not be hidden. How about placing it as a greyed-out icon next to the + icon? The user can then click it to toggle the search on or off with just one click. It is quite cumbersome to click + > move mouse > click the toggle > refocus the prompt input field and then perform the search. If you don't want to search in your next prompt, you have to repeat all the clicks to disable the search. The best solution would be a keybinding to toggle the search, or something like #search search query here.
Also, if one enables search and prompts "Help me find a good carrying harness I can use if my dog gets injured on a hike", the AI could try to rephrase the search query in a way it deems optimal and submit that as the search prompt instead of exactly what the user wrote.
Of course, if the program or AI could be smart enough to detect when a search is needed, that would be ideal. However, this is probably optimistic right now, depending on the model in use and several other factors.
@mdillondc commented on GitHub (Jun 4, 2024):
> Click "+" on text field and toggle "Web Search". Documentation is lacking here.
>
> I would love to have that toggle not hidden behind "+".
It took me a while to find this as well.
It might add clutter, but I feel that the search button should not be hidden. How about placing it as a greyed-out icon next to the `+` icon? The user can then click it to toggle the search on or off with just one click. It is quite cumbersome to click `+ > move mouse > click the toggle > refocus the prompt input field` and then perform the search. If you don't want to search in your next prompt, you have to repeat all the clicks to disable the search. The best solution would be a keybinding to toggle the search, or something like `#search search query here`.
Also, if one enables search and prompts `"Help me find a good carrying harness I can use if my dog gets injured on a hike"`, the AI could try to rephrase the search query in a way it deems optimal and submit that as the search prompt instead of exactly what the user wrote.
Of course, if the program or AI could be smart enough to detect when a search is needed, that would be ideal. However, this is probably optimistic right now, depending on the model in use and several other factors.
Web search toggle button will remain in the + button where the rest of the tools feature will also be added.
@tjbck commented on GitHub (Jun 4, 2024):
Web search toggle button will remain in the `+` button where the rest of the `tools` feature will also be added.
Also, if one enables search and prompts "Help me find a good carrying harness I can use if my dog gets injured on a hike", the AI could try to rephrase the search query in a way it deems optimal and submit that as the search prompt instead of exactly what the user wrote.
It already does so for prompts over 100 characters. It's been proposed to make this a configurable option (with 0 meaning always rewrite it).
@justinh-rahb commented on GitHub (Jun 4, 2024):
> Also, if one enables search and prompts `"Help me find a good carrying harness I can use if my dog gets injured on a hike"`, the AI could try to rephrase the search query in a way it deems optimal and submit that as the search prompt instead of exactly what the user wrote.
It already does so for prompts over 100 characters. It's been proposed to make this a configurable option (with `0` meaning always rewrite it).
Web search toggle button will remain in the + button where the rest of the tools feature will also be added.
Understood. But what about a keybinding to quickly toggle?
@mdillondc commented on GitHub (Jun 4, 2024):
> Web search toggle button will remain in the `+` button where the rest of the `tools` feature will also be added.
Understood. But what about a keybinding to quickly toggle?
FWIW I'm running a separate dedicated SearXNG docker compose behind a reverse proxy for offloading SSL (hence the use of https internally). SEARXNG_QUERY_URL would become SEARXNG_QUERY_URL: "https://search.domain.com/search?q=<query>", whereby search.domain.com is self-chosen.
A lot of activity for a closed issue ;-)
@remkolems commented on GitHub (Jun 5, 2024):
> > PR to our docs would be greatly appreciated 🙌
> > [open-webui/docs@`main`/docs/tutorial/web_search.md](https://github.com/open-webui/docs/blob/main/docs/tutorial/web_search.md?rgh-link-date=2024-06-04T18%3A32%3A53Z)
>
> Ask and ye shall receive 👍 [open-webui/docs#94](https://github.com/open-webui/docs/pull/94)
So in summary `docker compose` file:
```yaml
services:
open-webui:
environment:
ENABLE_RAG_WEB_SEARCH: True
RAG_WEB_SEARCH_ENGINE: "searxng"
RAG_WEB_SEARCH_RESULT_COUNT: 3
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
SEARXNG_QUERY_URL: "http://searxng:8080/search?q=<query>"
```
or (syntax also possible, but less preferable)
```yaml
services:
open-webui:
environment:
- ENABLE_RAG_WEB_SEARCH=true
- RAG_WEB_SEARCH_ENGINE="searxng"
- RAG_WEB_SEARCH_RESULT_COUNT=3
- RAG_WEB_SEARCH_CONCURRENT_REQUESTS=10
- SEARXNG_QUERY_URL="http://searxng:8080/search?q=<query>"
```
FWIW I'm running a separate dedicated SearXNG docker compose behind a reverse proxy for offloading SSL (hence the use of https internally). `SEARXNG_QUERY_URL` would become `SEARXNG_QUERY_URL: "https://search.domain.com/search?q=<query>"`, whereby search.domain.com is self-chosen.
A lot of activity for a closed issue ;-)
@justinh-rahb commented on GitHub (Jun 5, 2024):
> A lot of activity for a closed issue ;-)
Resolved: https://docs.openwebui.com/tutorial/web_search#1-searxng-configuration
4. Set Searxng Query URL to examples given: https://<search.domain.com>/search?q=<query> or http://<searxng.local>/search?q=<query>. Do note the <query> part is mandatory.
while I do agree that should be the standard, as defined by searx-ng
but my Open-WebUI was able to search the web with my Query URL like this: http://<searxng.domain.tld>/
@JOduMonT commented on GitHub (Jun 6, 2024):
> 4\. Set `Searxng Query URL` to examples given: `https://<search.domain.com>/search?q=<query>` or `http://<searxng.local>/search?q=<query>`. Do note the `<query>` part is mandatory.
while I do agree that should be the standard, as defined by searx-ng
but my Open-WebUI was able to search the web with my Query URL like this: `http://<searxng.domain.tld>/`
while I do agree that should be the standard, as defined by searx-ng but my Open-WebUI was able to search the web with my Query URL like this: http://<searxng.domain.tld>/
The search?q=<query> part was made optional in between docs being written and the eventual merge of the feature. Think I'll leave it in the docs anyway as it feels more proper to me to specify the full path.
@justinh-rahb commented on GitHub (Jun 6, 2024):
> while I do agree that should be the standard, as defined by searx-ng but my Open-WebUI was able to search the web with my Query URL like this: `http://<searxng.domain.tld>/`
The `search?q=<query>` part was made optional in between docs being written and the eventual merge of the feature. Think I'll leave it in the docs anyway as it feels more _proper_ to me to specify the full path.
I have tried all of the proposed changes on my side but still the web search not work, I am using searxng from a docker container and on all my test I receive an alert when I select web search and send the text, the alert indicates an error on line 1 col 1 , I have active the json response on yaml config, tested locally on searxng location and returned json but seems that the search from open webui is not returning json but html from that request and the parse fails, does anyone have the same issue?, thanks.
@janus78 commented on GitHub (Jun 11, 2024):
I have tried all of the proposed changes on my side but still the web search not work, I am using searxng from a docker container and on all my test I receive an alert when I select web search and send the text, the alert indicates an error on line 1 col 1 , I have active the json response on yaml config, tested locally on searxng location and returned json but seems that the search from open webui is not returning json but html from that request and the parse fails, does anyone have the same issue?, thanks.
Could you share the alert? Print screen and drop in the comment (ctrl-v on windows)
Does setting.yml of SearXNG resemble:
# removed all other partssearch:# ... removed other parts for this section for readability ...# remove format to deny access, use lower case.# formats: [html, csv, json, rss]formats:- html- json# to enable ollama/open-webui# rest of file also deleted
Did you check/enable Web Search?
A lot of functions I do not know how to enable or use. The # use is still a mystery. So learning on the go as well.
@remkolems commented on GitHub (Jun 12, 2024):
@janus78
1. Does SearXNG work on its own as expected?
2. Could you share your config?
3. Could you share the alert? Print screen and drop in the comment (ctrl-v on windows)
4. Does `setting.yml` of SearXNG resemble:
```yaml
# removed all other parts
search:
# ... removed other parts for this section for readability ...
# remove format to deny access, use lower case.
# formats: [html, csv, json, rss]
formats:
- html
- json # to enable ollama/open-webui
# rest of file also deleted
```
5. Did you check/enable `Web Search`?

A lot of functions I do not know how to enable or use. The `#` use is still a mystery. So learning on the go as well.
## https://hub.docker.com/r/ollama/ollama/tags# https://github.com/open-webui/open-webui/pkgs/container/open-webui/versions?filters%5Bversion_type%5D=tagged## Caveat: autorun run a default model seems not possible.# Solution:## container_id=$(docker ps | grep ollama | awk '{print $1}')# docker exec -it $container_id ollama run starcoder2:15b#services:# app:# build: .# ports:# - 8000:8000# - 5678:5678# volumes:# - "${OLLAMA_HOME}/code:/code"# command: uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload# restart: always# depends_on:# - ollama# - open-webui# networks:# - ollama## https://github.com/ollama/ollama#ollama:image:ollama:0.1.43@sha256:ccb6b019e213ef43e2919937b8e35f10688b4589f4d076a5d5d4dd50e170fd86tty:truecontainer_name:ollamarestart:unless-stoppedenv_file:- .envports:- ${OLLAMA_API_PORT:-11434}:11434volumes:- "${OLLAMA_HOME}/.ollama:/root/.ollama"environment:# OLLAMA_DEBUG: false# OLLAMA_FLASH_ATTENTION: falseOLLAMA_HOST:0.0.0.0OLLAMA_KEEP_ALIVE:24h# OLLAMA_LLM_LIBRARY:# OLLAMA_MAX_LOADED_MODELS: 1# OLLAMA_MAX_QUEUE: 512# OLLAMA_MAX_VRAM: 0# OLLAMA_MODELS:# OLLAMA_NOHISTORY: false# OLLAMA_NOPRUNE: false# OLLAMA_NUM_PARALLEL: 1# OLLAMA_ORIGINS: [http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:*]# OLLAMA_RUNNERS_DIR:# OLLAMA_TMPDIRdeploy:resources:reservations:devices:- driver:nvidiacount:all# count: 1capabilities:- gpunetworks:- ollamasecurity_opt:- no-new-privileges:true## https://github.com/open-webui/open-webui# https://github.com/open-webui/open-webui/blob/main/docker-compose.yaml# https://github.com/open-webui/open-webui/pkgs/container/open-webui# https://github.com/open-webui/open-webui/pkgs/container/open-webui/versions?filters%5Bversion_type%5D=tagged### Note: do not use the cuda and/or ollama version. It means CUDA and Ollama is integrated into the open-webui. Not neccessary in this docker compose. See above.#open-webui:image:ghcr.io/open-webui/open-webui:0.3.3-ollama@sha256:2d3578399b8e68dc1b6248c2c8f784c6a38b7229c56228533815904a553f7dc0container_name:open-webuirestart:unless-stoppedenv_file:- .envdepends_on:- ollamaports:- ${OLLAMA_UI_PORT:-8434}:8080environment:# https://docs.openwebui.com/getting-started/env-configuration/#default_modelsOLLAMA_BASE_URL:${OLLAMA_API_URL}WEBUI_SECRET_KEY:${OPEN_WEBUI_SECRET_KEY}ENV:prod# SearXNG integrationENABLE_RAG_WEB_SEARCH:trueRAG_WEB_SEARCH_ENGINE:searxngRAG_WEB_SEARCH_RESULT_COUNT:3RAG_WEB_SEARCH_CONCURRENT_REQUESTS:10SEARXNG_QUERY_URL:${SEARXNG_QUERY_FQDN}# Enable pipelines# https://docs.openwebui.com/getting-started/env-configuration/#openai# https://github.com/open-webui/pipelines#-quick-start-with-docker# https://docs.openwebui.com/getting-started/env-configuration/#openai_api_base_urlsOPENAI_API_KEYS:${OPENAI_API_KEY_PIPELINES}# separate by ; (no spaces)OPENAI_API_BASE_URLS:${OPENAI_API_BASE_URL_PIPELINES}# separate by ; (no spaces)volumes:- "${OLLAMA_HOME}/open-webui:/app/backend/data"extra_hosts:- host.docker.internal:host-gatewaynetworks:- ollamasecurity_opt:- no-new-privileges:true# Connect to Open WebUI:# Navigate to the Settings > Connections > OpenAI API section in Open WebUI.# Set the API URL to http://localhost:9099 and the API key to 0p3n-w3bu!. Your pipelines should now be active.# If your Open WebUI is running in a Docker container, replace localhost with host.docker.internal in the API URL.# OR set OPENAI_API_KEYpipelines:image:ghcr.io/open-webui/pipelines:maincontainer_name:pipelinesrestart:unless-stoppeddepends_on:- open-webui# environment:# # Alternatively, you can directly install pipelines from the admin settings by copying and pasting the pipeline URL, provided it doesn't have additional dependencies.# # Example given# PIPELINES_URLS: "https://github.com/open-webui/pipelines/blob/main/examples/filters/detoxify_filter_pipeline.py"volumes:- "${OLLAMA_HOME}/pipelines:/app/pipelines"extra_hosts:- host.docker.internal:host-gatewayports:- 9099:9099networks:- ollamasecurity_opt:- no-new-privileges:truenetworks:ollama:
Ollama.env file (adjust accordingly):
OLLAMA_HOME=/home/docker/ollama
OLLAMA_API_PORT=11434OLLAMA_UI_PORT=8434OLLAMA_API_URL=<full url> # e.g. -> https://ollama-api.domain.comOPEN_WEBUI_SECRET_KEY=<generateYourOwnKey>
OPENAI_API_BASE_URL_PIPELINES=http://host.docker.internal:9099
OPENAI_API_KEY_PIPELINES=0p3n-w3bu! # as per documentation# To enable SearXNG integration -> settings.yml must have 'json' added for 'formats'# Change url accordingly!# SEARXNG_QUERY_FQDN="https://search.domain.com/search?q=<query>"SEARXNG_QUERY_FQDN="https://search.domain.com/"# this should also work# AUTOMATIC1111_BASE_URL="http://localhost:7860"# DO NOT TRACKSCARF_NO_ANALYTICS=trueDO_NOT_TRACK=trueANONYMIZED_TELEMETRY=true
@remkolems commented on GitHub (Jun 12, 2024):
These are my full docker-compose files.
Do note:
- all on `AMD64` (hence via `digest` `@sha256:`)
- I use `Harbor` as my local on-premise registry. I removed that part from the `image:` lines. There could be mistakes made, so be aware.
- `settings.yml` file of `SearXNG` is important. Check and adjust that file accordingly.
- I'm always open to do things better or smarter. Comments and suggestions always more than welcome!
Two folders:
1. `searxng` with `.env` and `docker-compose.yml` files
2. `ollama` with `.env` and `docker-compose.yml` files
Foreach folder on the command-line I execute: `docker compose up -d`
SearXNG
---
`SearXNG` `docker-compose.yml` file:
```yaml
#
# https://github.com/searxng/searxng
# https://github.com/searxng/searxng/blob/master/searx/settings.yml
#
services:
# Temporary busybox container to set correct permissions to unix shared socket folder
# https://hub.docker.com/_/busybox/tags?page=1&name=latest
tmp:
image: busybox:latest@sha256:50aa4698fa6262977cff89181b2664b99d8a56dbca847bf62f2ef04854597cf8
#command: sh -c "chown -R 33:33 /tmp/docker/ && chmod -R 770 /tmp/docker/"
command: sh -c "chmod -R 777 /tmp/docker/"
env_file:
- .env
volumes:
- "${SEARXNG_HOME}/tmp/docker/"
security_opt:
- no-new-privileges:true
#
# redis
#
# https://hub.docker.com/_/redis/tags?page=1&name=alpine
searxng-redis:
image: redis:7.2.5-alpine3.19@sha256:892b41c092a599f76c30b48e9dcfb185ce8cea3560970b1c4f2745c89bb34344
container_name: searxng-redis
# hostname: searxng-redis
restart: unless-stopped
env_file:
- .env
# Download Redis at https://redis.io/download/ and unpack to extract redis.conf
# Redis.conf contains the available commands
# Removed from entrypoint
# --unixsocket /tmp/docker/redis.sock
# --unixsocketperm 755
entrypoint: >
redis-server --bind 127.0.0.1
--appendonly no
--save ""
--protected-mode yes
--maxmemory 50M
--maxmemory-policy allkeys-lru
networks:
- lan
ports:
- 9736:6379
tmpfs:
- /var/lib/redis
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
volumes:
- "${SEARXNG_HOME}/redis_data:/data:rw"
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
# Add shared volume from Temporary busybox container
volumes_from:
- tmp
depends_on:
- tmp
# Run as a member of the www-data GID 33 group but keep redis uid as 999
#user: "999:33"
security_opt:
- no-new-privileges:true
#
# searxng
#
# https://hub.docker.com/r/searxng/searxng/tags
searxng:
image: searxng/searxng:latest@sha256:2ceb4ddf2cb8a0227af416c3110dcefc188af3538a9c1a34937d2a30a837d942
container_name: searxng
restart: unless-stopped
env_file:
- .env
networks:
- lan
ports:
- 8080:8080
volumes:
- "${SEARXNG_HOME}/searxng_data:/etc/searxng:rw"
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
# Add shared volume from Temporary busybox container
volumes_from:
- tmp
environment:
- SEARXNG_BASE_URL=${SEARXNG_BASE_URL}
- INSTANCE_NAME=SearXNG
- SEARXNG_SECRET=${SEARXNG_SECRET_KEY}
# https://docs.searxng.org/admin/engines/settings.html#redis
- SEARXNG_REDIS_URL=unix:///tmp/docker/redis.sock?db=0 # Redis URL must specify one of the following schemes (redis://, rediss://, unix://)
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
# logging:
# driver: "json-file"
# options:
# max-size: "1m"
# max-file: "1"
depends_on:
- tmp
- searxng-redis
# UID should be 977. Does not work ...
#user: "977:33"
security_opt:
- no-new-privileges:true
networks:
lan:
ipam:
driver: default
```
`SearXNG` `.env` file (adjust accordingly)
```env
SEARXNG_HOME=/home/docker/searxng
SEARXNG_BASE_URL=<full url>
SEARXNG_SECRET_KEY=<generateYourOwnKey_See-https://github.com/CorentinTh/it-tools>
```
Ollama
---
and `Ollama` `docker-compose.yml`:
```yml
#
# https://hub.docker.com/r/ollama/ollama/tags
# https://github.com/open-webui/open-webui/pkgs/container/open-webui/versions?filters%5Bversion_type%5D=tagged
#
# Caveat: autorun run a default model seems not possible.
# Solution:
#
# container_id=$(docker ps | grep ollama | awk '{print $1}')
# docker exec -it $container_id ollama run starcoder2:15b
#
services:
# app:
# build: .
# ports:
# - 8000:8000
# - 5678:5678
# volumes:
# - "${OLLAMA_HOME}/code:/code"
# command: uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
# restart: always
# depends_on:
# - ollama
# - open-webui
# networks:
# - ollama
#
# https://github.com/ollama/ollama
#
ollama:
image: ollama:0.1.43@sha256:ccb6b019e213ef43e2919937b8e35f10688b4589f4d076a5d5d4dd50e170fd86
tty: true
container_name: ollama
restart: unless-stopped
env_file:
- .env
ports:
- ${OLLAMA_API_PORT:-11434}:11434
volumes:
- "${OLLAMA_HOME}/.ollama:/root/.ollama"
environment:
# OLLAMA_DEBUG: false
# OLLAMA_FLASH_ATTENTION: false
OLLAMA_HOST: 0.0.0.0
OLLAMA_KEEP_ALIVE: 24h
# OLLAMA_LLM_LIBRARY:
# OLLAMA_MAX_LOADED_MODELS: 1
# OLLAMA_MAX_QUEUE: 512
# OLLAMA_MAX_VRAM: 0
# OLLAMA_MODELS:
# OLLAMA_NOHISTORY: false
# OLLAMA_NOPRUNE: false
# OLLAMA_NUM_PARALLEL: 1
# OLLAMA_ORIGINS: [http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:*]
# OLLAMA_RUNNERS_DIR:
# OLLAMA_TMPDIR
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
# count: 1
capabilities:
- gpu
networks:
- ollama
security_opt:
- no-new-privileges:true
#
# https://github.com/open-webui/open-webui
# https://github.com/open-webui/open-webui/blob/main/docker-compose.yaml
# https://github.com/open-webui/open-webui/pkgs/container/open-webui
# https://github.com/open-webui/open-webui/pkgs/container/open-webui/versions?filters%5Bversion_type%5D=tagged
#
## Note: do not use the cuda and/or ollama version. It means CUDA and Ollama is integrated into the open-webui. Not neccessary in this docker compose. See above.
#
open-webui:
image: ghcr.io/open-webui/open-webui:0.3.3-ollama@sha256:2d3578399b8e68dc1b6248c2c8f784c6a38b7229c56228533815904a553f7dc0
container_name: open-webui
restart: unless-stopped
env_file:
- .env
depends_on:
- ollama
ports:
- ${OLLAMA_UI_PORT:-8434}:8080
environment:
# https://docs.openwebui.com/getting-started/env-configuration/#default_models
OLLAMA_BASE_URL: ${OLLAMA_API_URL}
WEBUI_SECRET_KEY: ${OPEN_WEBUI_SECRET_KEY}
ENV: prod
# SearXNG integration
ENABLE_RAG_WEB_SEARCH: true
RAG_WEB_SEARCH_ENGINE: searxng
RAG_WEB_SEARCH_RESULT_COUNT: 3
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
SEARXNG_QUERY_URL: ${SEARXNG_QUERY_FQDN}
# Enable pipelines
# https://docs.openwebui.com/getting-started/env-configuration/#openai
# https://github.com/open-webui/pipelines#-quick-start-with-docker
# https://docs.openwebui.com/getting-started/env-configuration/#openai_api_base_urls
OPENAI_API_KEYS: ${OPENAI_API_KEY_PIPELINES} # separate by ; (no spaces)
OPENAI_API_BASE_URLS: ${OPENAI_API_BASE_URL_PIPELINES} # separate by ; (no spaces)
volumes:
- "${OLLAMA_HOME}/open-webui:/app/backend/data"
extra_hosts:
- host.docker.internal:host-gateway
networks:
- ollama
security_opt:
- no-new-privileges:true
# Connect to Open WebUI:
# Navigate to the Settings > Connections > OpenAI API section in Open WebUI.
# Set the API URL to http://localhost:9099 and the API key to 0p3n-w3bu!. Your pipelines should now be active.
# If your Open WebUI is running in a Docker container, replace localhost with host.docker.internal in the API URL.
# OR set OPENAI_API_KEY
pipelines:
image: ghcr.io/open-webui/pipelines:main
container_name: pipelines
restart: unless-stopped
depends_on:
- open-webui
# environment:
# # Alternatively, you can directly install pipelines from the admin settings by copying and pasting the pipeline URL, provided it doesn't have additional dependencies.
# # Example given
# PIPELINES_URLS: "https://github.com/open-webui/pipelines/blob/main/examples/filters/detoxify_filter_pipeline.py"
volumes:
- "${OLLAMA_HOME}/pipelines:/app/pipelines"
extra_hosts:
- host.docker.internal:host-gateway
ports:
- 9099:9099
networks:
- ollama
security_opt:
- no-new-privileges:true
networks:
ollama:
```
`Ollama` `.env` file (adjust accordingly):
```env
OLLAMA_HOME=/home/docker/ollama
OLLAMA_API_PORT=11434
OLLAMA_UI_PORT=8434
OLLAMA_API_URL=<full url> # e.g. -> https://ollama-api.domain.com
OPEN_WEBUI_SECRET_KEY=<generateYourOwnKey>
OPENAI_API_BASE_URL_PIPELINES=http://host.docker.internal:9099
OPENAI_API_KEY_PIPELINES=0p3n-w3bu! # as per documentation
# To enable SearXNG integration -> settings.yml must have 'json' added for 'formats'
# Change url accordingly!
# SEARXNG_QUERY_FQDN="https://search.domain.com/search?q=<query>"
SEARXNG_QUERY_FQDN="https://search.domain.com/" # this should also work
# AUTOMATIC1111_BASE_URL="http://localhost:7860"
# DO NOT TRACK
SCARF_NO_ANALYTICS=true
DO_NOT_TRACK=true
ANONYMIZED_TELEMETRY=true
```
Note that searxng is working perfectly fine on localhost:8080
Setting up the web search tool available here gives me:
Error during search: 403 Client Error: FORBIDDEN for url: http://searxng:8080/search?q=%3Cquery%3E&q=what+happened+on+the+markets+today&format=json&number_of_results=3
I also tried using http://localhost:8080 instead of http://searxng:8080 didn't work either.
@adriangalilea commented on GitHub (Aug 5, 2024):
Following the docs word by word lead me to
`Expecting value: line 1 column 1 (char 0)`
Note that searxng is working perfectly fine on `localhost:8080`
<img width="1070" alt="image" src="https://github.com/user-attachments/assets/7b844749-f558-4cce-9f84-f14593a8dda2">
Setting up the web search tool available [here](https://openwebui.com/t/constliakos/web_search) gives me:
`Error during search: 403 Client Error: FORBIDDEN for url: http://searxng:8080/search?q=%3Cquery%3E&q=what+happened+on+the+markets+today&format=json&number_of_results=3
`
I also tried using `http://localhost:8080` instead of `http://searxng:8080` didn't work either.
i can access it via web browser and use it. But Webui gives me below error (in a red popup above screen) when i enable websearch and try to chat.
HTTPConnectionPool(host='searxng', port=8085): Max retries exceeded with url:
---/search?q=.... ---
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fc4d9b4f210>: Failed to establish a new connection: [Errno 111] Connection refused'))
Also on another note may be useful to not use same port numbers on the example (eg. 8080 on both Openwebui and SEARXNG_QUERY_URL)
as it can be confusing if the internal port or external port should be given to OpenWebUI.
I might be nitpicking tho :/
@melihozaydin commented on GitHub (Sep 2, 2024):
Hi,
writing on this as i still have issues with setting searxng up and can't find any docs related to my issue.
I have searxng running on the below config on port 8085 in a container.
Openwebui deployment command
```
....
-p 8080:8080 ^
--network ollama-docker ^
-e ENABLE_RAG_WEB_SEARCH=True ^
-e RAG_WEB_SEARCH_ENGINE="searxng" ^
-e RAG_WEB_SEARCH_RESULT_COUNT=3 ^
-e RAG_WEB_SEARCH_CONCURRENT_REQUESTS=10 ^
-e SEARXNG_QUERY_URL="http://searxng:8080/search?q=<query>" ^
```
searxng settings
```
same as:
https://docs.openwebui.com/tutorial/web_search/#1-searxng-configuration
```
searxng deployment
```
podman run -d ^
--name searxng ^
--network ollama-docker ^
-p 8085:8080 ^
-v %SEARXNG_VOLUME%:/etc/searxng ^
--restart always ^
searxng/searxng:latest
```
i can access it via web browser and use it. But Webui gives me below error (in a red popup above screen) when i enable websearch and try to chat.
```
HTTPConnectionPool(host='searxng', port=8085): Max retries exceeded with url:
---/search?q=.... ---
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fc4d9b4f210>: Failed to establish a new connection: [Errno 111] Connection refused'))
```
Also on another note may be useful to not use same port numbers on the example (eg. 8080 on both Openwebui and SEARXNG_QUERY_URL)
as it can be confusing if the internal port or external port should be given to OpenWebUI.
I might be nitpicking tho :/
i can access it via web browser and use it. But Webui gives me below error (in a red popup above screen) when i enable websearch and try to chat.
HTTPConnectionPool(host='searxng', port=8085): Max retries exceeded with url:
---/search?q=.... ---
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fc4d9b4f210>: Failed to establish a new connection: [Errno 111] Connection refused'))
Also on another note may be useful to not use same port numbers on the example (eg. 8080 on both Openwebui and SEARXNG_QUERY_URL) as it can be confusing if the internal port or external port should be given to OpenWebUI. I might be nitpicking tho :/
The documentation port is correct
Because you are accessing the searxng container from within the ollama-docker network it should be accessible on port 8080 as the example shows.
Outside of this network it'll be 8085.
@Peter-De-Ath commented on GitHub (Sep 2, 2024):
> Hi, writing on this as i still have issues with setting searxng up and can't find any docs related to my issue.
>
> I have searxng running on the below config on port 8085 in a container.
>
> Openwebui deployment command
>
> ```
> ....
> -p 8080:8080 ^
> --network ollama-docker ^
> -e ENABLE_RAG_WEB_SEARCH=True ^
> -e RAG_WEB_SEARCH_ENGINE="searxng" ^
> -e RAG_WEB_SEARCH_RESULT_COUNT=3 ^
> -e RAG_WEB_SEARCH_CONCURRENT_REQUESTS=10 ^
> -e SEARXNG_QUERY_URL="http://searxng:8080/search?q=<query>" ^
> ```
>
> searxng settings
>
> ```
> same as:
> https://docs.openwebui.com/tutorial/web_search/#1-searxng-configuration
> ```
>
> searxng deployment
>
> ```
> podman run -d ^
> --name searxng ^
> --network ollama-docker ^
> -p 8085:8080 ^
> -v %SEARXNG_VOLUME%:/etc/searxng ^
> --restart always ^
> searxng/searxng:latest
> ```
>
> i can access it via web browser and use it. But Webui gives me below error (in a red popup above screen) when i enable websearch and try to chat.
>
> ```
> HTTPConnectionPool(host='searxng', port=8085): Max retries exceeded with url:
> ---/search?q=.... ---
>
> (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fc4d9b4f210>: Failed to establish a new connection: [Errno 111] Connection refused'))
> ```
>
> Also on another note may be useful to not use same port numbers on the example (eg. 8080 on both Openwebui and SEARXNG_QUERY_URL) as it can be confusing if the internal port or external port should be given to OpenWebUI. I might be nitpicking tho :/
The documentation port is correct
Because you are accessing the searxng container from within the ollama-docker network it should be accessible on port 8080 as the example shows.
Outside of this network it'll be 8085.
Something went wrong :/ [Errno -2] Name or service not known
@melihozaydin commented on GitHub (Sep 4, 2024):
Thanks that makes sense. But i still get following error when i try to use searxng in webui on port 8080
**Searxng Query URL:** `http://searxng:8080/search?q=<query>`
```
Something went wrong :/ [Errno -2] Name or service not known
```
@miguelgargallo commented on GitHub (Sep 8, 2024):
I'm an idiot. Sorry.
No, you are not, this is no clearly explained well on dev repo .env file
@miguelgargallo commented on GitHub (Sep 8, 2024):
> I'm an idiot. Sorry.
No, you are not, this is no clearly explained well on dev repo .env file

Something went wrong :/ [Errno -2] Name or service not known
Hey! Did you find the solution? I still have this issue.
@anonymousmaharaj commented on GitHub (Sep 24, 2024):
> Thanks that makes sense. But i still get following error when i try to use searxng in webui on port 8080
>
> **Searxng Query URL:** `http://searxng:8080/search?q=<query>`
>
> ```
> Something went wrong :/ [Errno -2] Name or service not known
> ```
Hey! Did you find the solution? I still have this issue.
Thanks that makes sense. But i still get following error when i try to use searxng in webui on port 8080 Searxng Query URL:http://searxng:8080/search?q=<query>
Something went wrong :/ [Errno -2] Name or service not known
Hey! Did you find the solution? I still have this issue.
Yes, I dont know why but it works after reducing concurrent request limit to 2 from the default value.
@melihozaydin commented on GitHub (Sep 25, 2024):
> > Thanks that makes sense. But i still get following error when i try to use searxng in webui on port 8080
> > **Searxng Query URL:** `http://searxng:8080/search?q=<query>`
> > ```
> > Something went wrong :/ [Errno -2] Name or service not known
> > ```
>
> Hey! Did you find the solution? I still have this issue.
Yes, I dont know why but it works after reducing concurrent request limit to 2 from the default value.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @mdillondc on GitHub (Jun 2, 2024).
I don't see how a full bug report would be warranted here. This is simply lack of documentation.
Help structuring searxng query url
I cannot for the life of me figure out how the
Searxng Query URLshould be structured under "Document Settings - Web Params"I have tried:
Enter a search url to an instance with JSON enabled, e.g.
https://some.searxng.instance/search?q=%&format=jsonandhttps://some.searxng.instance/andhttps://some.searxng.instance/search&format=jsonI expect the
%to be replaced with my actual search query. Instead, the search just searches for the actual percentage sign and comes up with e.g.https://en.wikipedia.org/wiki/Percent_signas a source.@cheahjs commented on GitHub (Jun 2, 2024):
https://docs.openwebui.com/getting-started/env-configuration#searxng_query_url
@mdillondc commented on GitHub (Jun 2, 2024):
I'm an idiot. Sorry.
@Morethanevil commented on GitHub (Jun 2, 2024):
Additional info:
I have setup Searx-NG a long time ago with the standard "settings.yml"
For anyone who gets "403 Forbidden" like me, you need to enable JSON in the settings.yml
@bannert1337 commented on GitHub (Jun 2, 2024):
@Morethanevil this should be added to the documentation! ^^
@remkolems commented on GitHub (Jun 4, 2024):
@mdillondc
Not in the slightest! Very happy that you raised this issue. Could not have solved it time wise concisely. So thank you!
Furthermore:
Workspace->Documents->Document Settings->Web ParamsEnable Web SearchSelect Web Search Enginefrom dropdown menuSearxng Query URLto examples given:https://<search.domain.com>/search?q=<query>orhttp://<searxng.local>/search?q=<query>. Do note the<query>part is mandatory.Furthermore, I had hoped to configure it directly within the docker compose file. For now, I was unable to do so with environment variables. Any suggestions?
@Expro commented on GitHub (Jun 4, 2024):
Indeed, environment variables for enabling Web Search seems to be missing.
@justinh-rahb commented on GitHub (Jun 4, 2024):
These ones? https://docs.openwebui.com/getting-started/env-configuration#web-search
@Expro commented on GitHub (Jun 4, 2024):
Even setting those results in web search being disabled and requiring in-UI intervention.
@justinh-rahb commented on GitHub (Jun 4, 2024):
ENABLE_RAG_WEB_SEARCH=TrueRAG_WEB_SEARCH_ENGINE=searxngThese will be added to the docs shortly.
@alkeryn commented on GitHub (Jun 4, 2024):
I tried to set up but it doesn't seem to be doing anything, how should you trigger web searches ?
@Expro commented on GitHub (Jun 4, 2024):
Click "+" on text field and toggle "Web Search". Documentation is lacking here.
I would love to have that toggle not hidden behind "+".
@alkeryn commented on GitHub (Jun 4, 2024):
@Expro Oh, thank you hahaha
@DustyTurtleDip commented on GitHub (Jun 4, 2024):
Is there a way to enable "Web Search" by default in new conversation ?
@alkeryn commented on GitHub (Jun 4, 2024):
@DustyTurtleDip i don't think so but i'm not even sure you would want that as it's slower.
@Expro after some testing it'd be nice if it used the context to make the query and make one only if it determines that it is necessary.
for example if i ask what the weather is like where i live, it is unable to look up the personal information i gave in "memory" and make a search to look for that town.
it is also unable to use the context to make a subsequent query.
it seems like it's only searching and adding to rag what the user typed in the last message.
it's cool to have barebone search but something more advanced like hugging chat where it uses its context and even tries to crawl the replies would be cool!
as for the memory tab, an edit button would be nifty.
still cool though.
@tjbck commented on GitHub (Jun 4, 2024):
PR to our docs would be greatly appreciated 🙌
https://github.com/open-webui/docs/blob/main/docs/tutorial/web_search.md
@samssausages commented on GitHub (Jun 4, 2024):
Thank you for the info here, especially @Morethanevil adding the info to the searxng config file fixed the issue I was having! Pretty cool that this works with no google API!
@justinh-rahb commented on GitHub (Jun 4, 2024):
Ask and ye shall receive 👍 https://github.com/open-webui/docs/pull/94
@mdillondc commented on GitHub (Jun 4, 2024):
It took me a while to find this as well.
It might add clutter, but I feel that the search button should not be hidden. How about placing it as a greyed-out icon next to the
+icon? The user can then click it to toggle the search on or off with just one click. It is quite cumbersome to click+ > move mouse > click the toggle > refocus the prompt input fieldand then perform the search. If you don't want to search in your next prompt, you have to repeat all the clicks to disable the search. The best solution would be a keybinding to toggle the search, or something like#search search query here.Also, if one enables search and prompts
"Help me find a good carrying harness I can use if my dog gets injured on a hike", the AI could try to rephrase the search query in a way it deems optimal and submit that as the search prompt instead of exactly what the user wrote.Of course, if the program or AI could be smart enough to detect when a search is needed, that would be ideal. However, this is probably optimistic right now, depending on the model in use and several other factors.
@tjbck commented on GitHub (Jun 4, 2024):
Web search toggle button will remain in the
+button where the rest of thetoolsfeature will also be added.@justinh-rahb commented on GitHub (Jun 4, 2024):
It already does so for prompts over 100 characters. It's been proposed to make this a configurable option (with
0meaning always rewrite it).@mdillondc commented on GitHub (Jun 4, 2024):
Understood. But what about a keybinding to quickly toggle?
@alkeryn commented on GitHub (Jun 4, 2024):
@justinh-rahb but does it uses the whole conversation context to generate the search ?
@remkolems commented on GitHub (Jun 5, 2024):
So in summary
docker composefile:or (syntax also possible, but less preferable)
FWIW I'm running a separate dedicated SearXNG docker compose behind a reverse proxy for offloading SSL (hence the use of https internally).
SEARXNG_QUERY_URLwould becomeSEARXNG_QUERY_URL: "https://search.domain.com/search?q=<query>", whereby search.domain.com is self-chosen.A lot of activity for a closed issue ;-)
@justinh-rahb commented on GitHub (Jun 5, 2024):
Resolved: https://docs.openwebui.com/tutorial/web_search#1-searxng-configuration
@JOduMonT commented on GitHub (Jun 6, 2024):
while I do agree that should be the standard, as defined by searx-ng
but my Open-WebUI was able to search the web with my Query URL like this:
http://<searxng.domain.tld>/@justinh-rahb commented on GitHub (Jun 6, 2024):
The
search?q=<query>part was made optional in between docs being written and the eventual merge of the feature. Think I'll leave it in the docs anyway as it feels more proper to me to specify the full path.@janus78 commented on GitHub (Jun 11, 2024):
I have tried all of the proposed changes on my side but still the web search not work, I am using searxng from a docker container and on all my test I receive an alert when I select web search and send the text, the alert indicates an error on line 1 col 1 , I have active the json response on yaml config, tested locally on searxng location and returned json but seems that the search from open webui is not returning json but html from that request and the parse fails, does anyone have the same issue?, thanks.
@remkolems commented on GitHub (Jun 12, 2024):
@janus78
setting.ymlof SearXNG resemble:Web Search?A lot of functions I do not know how to enable or use. The
#use is still a mystery. So learning on the go as well.@remkolems commented on GitHub (Jun 12, 2024):
These are my full docker-compose files.
Do note:
AMD64(hence viadigest@sha256:)Harboras my local on-premise registry. I removed that part from theimage:lines. There could be mistakes made, so be aware.settings.ymlfile ofSearXNGis important. Check and adjust that file accordingly.Two folders:
searxngwith.envanddocker-compose.ymlfilesollamawith.envanddocker-compose.ymlfilesForeach folder on the command-line I execute:
docker compose up -dSearXNG
SearXNGdocker-compose.ymlfile:SearXNG.envfile (adjust accordingly)Ollama
and
Ollamadocker-compose.yml:Ollama.envfile (adjust accordingly):@adriangalilea commented on GitHub (Aug 5, 2024):
Following the docs word by word lead me to
Expecting value: line 1 column 1 (char 0)Note that searxng is working perfectly fine on
localhost:8080Setting up the web search tool available here gives me:
Error during search: 403 Client Error: FORBIDDEN for url: http://searxng:8080/search?q=%3Cquery%3E&q=what+happened+on+the+markets+today&format=json&number_of_results=3I also tried using
http://localhost:8080instead ofhttp://searxng:8080didn't work either.@melihozaydin commented on GitHub (Sep 2, 2024):
Hi,
writing on this as i still have issues with setting searxng up and can't find any docs related to my issue.
I have searxng running on the below config on port 8085 in a container.
Openwebui deployment command
searxng settings
searxng deployment
i can access it via web browser and use it. But Webui gives me below error (in a red popup above screen) when i enable websearch and try to chat.
Also on another note may be useful to not use same port numbers on the example (eg. 8080 on both Openwebui and SEARXNG_QUERY_URL)
as it can be confusing if the internal port or external port should be given to OpenWebUI.
I might be nitpicking tho :/
@Peter-De-Ath commented on GitHub (Sep 2, 2024):
The documentation port is correct
Because you are accessing the searxng container from within the ollama-docker network it should be accessible on port 8080 as the example shows.
Outside of this network it'll be 8085.
@melihozaydin commented on GitHub (Sep 4, 2024):
Thanks that makes sense. But i still get following error when i try to use searxng in webui on port 8080
Searxng Query URL:
http://searxng:8080/search?q=<query>@miguelgargallo commented on GitHub (Sep 8, 2024):
No, you are not, this is no clearly explained well on dev repo .env file

@anonymousmaharaj commented on GitHub (Sep 24, 2024):
Hey! Did you find the solution? I still have this issue.
@melihozaydin commented on GitHub (Sep 25, 2024):
Yes, I dont know why but it works after reducing concurrent request limit to 2 from the default value.