From 8291a6bca8a89e85dfa8565213bede13d27ba9ce Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 13:56:34 -0500 Subject: [PATCH 01/13] Fixes to SearXNG tutorial Fixes to SearXNG tutorial --- docs/tutorials/integrations/web_search.md | 42 +++++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index a7e1a21..defd3b5 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -57,23 +57,23 @@ SEARXNG_HOSTNAME=example.locale 3. Remove the `localhost` restriction and define a less used port by modifying the `docker-compose.yaml` file: ```bash -sed -i "s/127.0.0.1:8080/1337/" docker-compose.yaml +sed -i "s/127.0.0.1:8080/0.0.0.0:1337/" searxng-docker/docker-compose.yaml ``` -4. Allow the container to create new config files: +4. Allow the container to create new config files by running the following command in the root directory: ```bash -sudo chmod a+rwx searxng-docker/ +sudo chmod a+rwx searxng-docker/searxng ``` -5. Create a non-restrictive `searxng-docker/limiter.toml` config file: +1. Create a non-restrictive `searxng-docker/searxng/limiter.toml` config file:
-searxng-docker/limiter.toml +searxng-docker/searxng/limiter.toml ```bash -cat > searxng-docker/limiter.toml << EOF +cat > searxng-docker/searxng/limiter.toml << EOF # This configuration file updates the default configuration file See https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml [botdetection.ip_limit] @@ -88,10 +88,10 @@ EOF
-6. Delete the default `searxng-docker/settings.yml` file, it will be regenerated on first launch: +6. Delete the default `searxng-docker/searxng/settings.yml` file if it exists, as it will be regenerated on the first launch of SearXNG: ```bash -rm searxng-docker/settings.yml +rm searxng-docker/searxng/settings.yml ``` 7. Bring up the container momentarily to generate a fresh settings.yml file: @@ -100,20 +100,32 @@ rm searxng-docker/settings.yml docker compose up searxng-docker -d ; sleep 10 ; docker compose down searxng-docker ``` -8. Add HTML and JSON formats to the `searxng-docker/settings.yml` file: +8. Add HTML and JSON formats to the `searxng-docker/searxng/settings.yml` file: ```bash -sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/settings.yml +sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/searxng/settings.yml +``` + +9. Update the port number in the `server` section to match the one you set earlier (in this case, `1337`): + +```bash +sed -i 's/port: 8080/port: 1337/' searxng-docker/searxng/settings.yml +``` + +Change the `bind_address` as desired: + +```bash +sed -i 's/bind_address: "0.0.0.0"/bind_address: "127.0.0.1"/' searxng-docker/searxng/settings.yml ``` #### Configuration Files -#### searxng/settings.yml (Extract) +#### searxng-docker/searxng/settings.yml (Extract) The default `settings.yml` file contains many engine settings. Below is an extract of what the default `settings.yml` file might look like:
-searxng-docker/settings.yml +searxng-docker/searxng/settings.yml ```yaml # see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings @@ -149,10 +161,10 @@ The port in the settings.yml file for SearXNG should match that of the port numb
-8. Your `searxng-docker/uwsgi.ini` file for SearXNG should look like: +10. Your `searxng-docker/searxng/uwsgi.ini` file for SearXNG should look like:
-searxng-docker/uwsgi.ini +searxng-docker/searxng/uwsgi.ini ```ini [uwsgi] @@ -209,7 +221,7 @@ offload-threads = 4
-Now, copy the modified `searxng-docker` folder to the same directory as your compose files. +Now, copy the modified `searxng` folder to the same directory as your compose file. Alternatively, if you don't want to modify the default configuration, you can simply create an empty `searxng-docker` folder and follow the rest of the setup instructions. From 2a9852710e3281dd7607035a10c31c92a88def03 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 14:11:47 -0500 Subject: [PATCH 02/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index defd3b5..d017d30 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -47,7 +47,7 @@ Add the following to the `.env` file: # By default listen on https://localhost # To change this: # * uncomment SEARXNG_HOSTNAME, and replace by the SearXNG hostname -# * uncomment LETSENCRYPT_EMAIL, and replace by your email (require to create a Let's Encrypt certificate) +# * uncomment LETSENCRYPT_EMAIL, and replace by your email (required to create a Let's Encrypt certificate) SEARXNG_HOSTNAME=example.locale @@ -74,7 +74,8 @@ sudo chmod a+rwx searxng-docker/searxng ```bash cat > searxng-docker/searxng/limiter.toml << EOF -# This configuration file updates the default configuration file See https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml +# This configuration file updates the default configuration file +# See https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml [botdetection.ip_limit] # activate link_token method in the ip_limit method @@ -118,6 +119,8 @@ Change the `bind_address` as desired: sed -i 's/bind_address: "0.0.0.0"/bind_address: "127.0.0.1"/' searxng-docker/searxng/settings.yml ``` +Now, copy the modified `searxng` folder to the same directory as your compose file. + #### Configuration Files #### searxng-docker/searxng/settings.yml (Extract) @@ -221,8 +224,6 @@ offload-threads = 4 -Now, copy the modified `searxng` folder to the same directory as your compose file. - Alternatively, if you don't want to modify the default configuration, you can simply create an empty `searxng-docker` folder and follow the rest of the setup instructions. ### 2. Docker Compose Setup From f6d0e57191672e4ab91fef9d975b098535635f38 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 14:14:07 -0500 Subject: [PATCH 03/13] Update scan-missing-env-vars.py update to work on Windows + some exception catches --- scripts/scan-missing-env-vars.py | 48 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/scripts/scan-missing-env-vars.py b/scripts/scan-missing-env-vars.py index b56bfb1..62d1e0b 100755 --- a/scripts/scan-missing-env-vars.py +++ b/scripts/scan-missing-env-vars.py @@ -66,12 +66,16 @@ def main(): all_env_vars = set() - for url, filename in zip(urls, filenames): - with urllib.request.urlopen(url) as response: - contents = response.read().decode("utf-8") + try: + for url, filename in zip(urls, filenames): + with urllib.request.urlopen(url) as response: + contents = response.read().decode("utf-8") - for env_var in find_env_vars(contents): - all_env_vars.add(env_var) + for env_var in find_env_vars(contents): + all_env_vars.add(env_var) + except urllib.error.URLError as e: + print(f"Failed to open URL: {e}") + sys.exit(1) ignored_env_vars = { "FROM_INIT_PY", @@ -86,29 +90,33 @@ def main(): documented_env_vars = set() script_dir = os.path.dirname(os.path.abspath(__file__)) docs_file = os.path.join( - script_dir, "..", "docs", "getting-started", "env-configuration.md" + script_dir, *[part for part in ["..", "docs", "getting-started", "advanced-topics", "env-configuration.md"]] ) - with open(docs_file, "r") as f: - for line in f: - if line.startswith("#### `"): - env_var = line.split("`")[1] - documented_env_vars.add(env_var) + + try: + with open(docs_file, "r", encoding="utf-8", errors="ignore") as f: + for line in f: + if line.startswith("#### `"): + env_var = line.split("`")[1] + documented_env_vars.add(env_var) + except FileNotFoundError as e: + print(f"Failed to open file: {e}") + sys.exit(1) print("\nEnvironment variables accessed but not documented:") - if all_env_vars - documented_env_vars: - for env_var in sorted(all_env_vars - documented_env_vars - ignored_env_vars): - print(env_var) - else: + not_documented_env_vars = all_env_vars - documented_env_vars - ignored_env_vars + for env_var in sorted(not_documented_env_vars): + print(env_var) + if not not_documented_env_vars: print("None") print("\nEnvironment variables documented but not accessed:") diff = documented_env_vars - all_env_vars - ignored_env_vars - if diff: - for env_var in sorted(diff): - print(env_var) - else: + for env_var in sorted(diff): + print(env_var) + if not diff: print("None") if __name__ == "__main__": - main() + main() \ No newline at end of file From 808072037479d62ce6329495e46761a5c79356c3 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 15:10:24 -0500 Subject: [PATCH 04/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 62 ++++++++++++++++------- 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index d017d30..ace3851 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -4,20 +4,20 @@ title: "🌐 Web Search" --- :::warning -This tutorial is a community contribution and is not supported by the OpenWebUI team. It serves only as a demonstration on how to customize OpenWebUI for your specific use case. Want to contribute? Check out the contributing tutorial. +This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial. ::: ## 🌐 Web Search This guide provides instructions on how to set up web search capabilities in Open WebUI using various search engines. -### SearXNG (Docker) +## SearXNG (Docker) > "**SearXNG is a free internet metasearch engine which aggregates results from various search services and databases. Users are neither tracked nor profiled.**" -### 1. SearXNG Configuration +## 1. SearXNG Configuration -If you want to modify the default configuration, follow these steps: +To configure SearXNG optimally for use with Open WebUI, follow these steps: #### Create a New Directory `searxng-docker` @@ -47,26 +47,38 @@ Add the following to the `.env` file: # By default listen on https://localhost # To change this: # * uncomment SEARXNG_HOSTNAME, and replace by the SearXNG hostname -# * uncomment LETSENCRYPT_EMAIL, and replace by your email (required to create a Let's Encrypt certificate) +# * uncomment LETSENCRYPT_EMAIL, and replace by your email (require to create a Let's Encrypt certificate) - -SEARXNG_HOSTNAME=example.locale +SEARXNG_HOSTNAME=localhost:1337/ # LETSENCRYPT_EMAIL= + +# Optional: +# If you run a very small or a very large instance, you might want to change the amount of used uwsgi workers and threads per worker +# More workers (= processes) means that more search requests can be handled at the same time, but it also causes more resource usage + +# SEARXNG_UWSGI_WORKERS=4 +# SEARXNG_UWSGI_THREADS=4 ``` +**Step 3: Modify the `docker-compose.yaml` file** + 3. Remove the `localhost` restriction and define a less used port by modifying the `docker-compose.yaml` file: ```bash -sed -i "s/127.0.0.1:8080/0.0.0.0:1337/" searxng-docker/docker-compose.yaml +sed -i "s/127.0.0.1:8080/0.0.0.0:1337/" ``` +**Step 4: Grant Necessary Permissions** + 4. Allow the container to create new config files by running the following command in the root directory: ```bash sudo chmod a+rwx searxng-docker/searxng ``` -1. Create a non-restrictive `searxng-docker/searxng/limiter.toml` config file: +**Step 5: Create a Less Restrictive `limiter.toml` File** + +5. Create a non-restrictive `searxng-docker/searxng/limiter.toml` config file:
searxng-docker/searxng/limiter.toml @@ -89,25 +101,31 @@ EOF
+**Step 6: Remove the Default `settings.yml` File** + 6. Delete the default `searxng-docker/searxng/settings.yml` file if it exists, as it will be regenerated on the first launch of SearXNG: ```bash rm searxng-docker/searxng/settings.yml ``` +**Step 7: Create a Fresh `settings.yml` File** + 7. Bring up the container momentarily to generate a fresh settings.yml file: ```bash -docker compose up searxng-docker -d ; sleep 10 ; docker compose down searxng-docker +docker compose up -d ; sleep 10 ; docker compose down ``` +**Step 8: Add Formats and Update Port Number** + 8. Add HTML and JSON formats to the `searxng-docker/searxng/settings.yml` file: ```bash sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/searxng/settings.yml ``` -9. Update the port number in the `server` section to match the one you set earlier (in this case, `1337`): +Update the port number in the `server` section to match the one you set earlier (in this case, `1337`): ```bash sed -i 's/port: 8080/port: 1337/' searxng-docker/searxng/settings.yml @@ -136,8 +154,8 @@ use_default_settings: true server: # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml - secret_key: "xxxxx" # change this! - limiter: false # can be disabled for a private instance + secret_key: "ultrasecretkey" # change this! + limiter: true # can be disabled for a private instance image_proxy: true port: 8080 bind_address: "0.0.0.0" @@ -157,14 +175,16 @@ search: redis: # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}. # https://docs.searxng.org/admin/settings/settings_redis.html#settings-redis - url: redis://redis:6379/2 + url: redis://redis:6379/0 ``` The port in the settings.yml file for SearXNG should match that of the port number in your docker-compose.yml file for SearXNG. So if you plan to use port `1337` for example, you'd set both to `1337`. If you want to use port `8080`, keep both on `8080`. Feel free to change the `bind_address` from `0.0.0.0` to `127.0.0.1` instead. Leaving it on `0.0.0.0` means that SearXNG can listen across all interfaces, while `127.0.0.1` just means that its listening on localhost. -10. Your `searxng-docker/searxng/uwsgi.ini` file for SearXNG should look like: +**Step 9: Update `uwsgi.ini` File** + +9. Ensure your `searxng-docker/searxng/uwsgi.ini` file matches the following:
searxng-docker/searxng/uwsgi.ini @@ -224,9 +244,11 @@ offload-threads = 4
+## 2. Alternative Configuration + Alternatively, if you don't want to modify the default configuration, you can simply create an empty `searxng-docker` folder and follow the rest of the setup instructions. -### 2. Docker Compose Setup +### Docker Compose Setup Add the following to your `docker-compose.yaml` file: @@ -276,13 +298,15 @@ Alternatively, you can run SearXNG directly using `docker run`: docker run --name searxng --env-file stack.env -v ./searxng:/etc/searxng:rw -p 1337:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest ``` +**Confirm Connectivity** + Confirm connectivity from Open-WebUI container instance: ```bash docker exec -it open-webui curl http://host.docker.internal:1337/search?q=this+is+a+test+query&format=json ``` -### 3. GUI Configuration +## 3. GUI Configuration 1. Navigate to: `Admin Panel` -> `Settings` -> `Web Search` 2. Toggle `Enable Web Search` @@ -293,7 +317,7 @@ docker exec -it open-webui curl http://host.docker.internal:1337/search?q=this+i ![SearXNG GUI Configuration](/img/tutorial_searxng_config.png) -### 4. Using Web Search in a Chat +## 4. Using Web Search in a Chat To access Web Search, Click on the + next to the message input field. @@ -301,6 +325,8 @@ Here you can toggle Web Search On/Off. ![Web Search UI Toggle](/img/web_search_toggle.png) +By following these steps, you will have successfully set up SearXNG with Open WebUI, enabling you to perform web searches using the SearXNG engine. + #### Note You will have to explicitly toggle this On/Off in a chat. From 91a98d1cd68d86873f56dec799cab3fe673df345 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 15:21:45 -0500 Subject: [PATCH 05/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index ace3851..5726291 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -298,26 +298,29 @@ Alternatively, you can run SearXNG directly using `docker run`: docker run --name searxng --env-file stack.env -v ./searxng:/etc/searxng:rw -p 1337:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest ``` -**Confirm Connectivity** +## 3. Confirm Connectivity -Confirm connectivity from Open-WebUI container instance: +Confirm connectivity to SearXNG from your Open WebUI container instance in your command line interface: ```bash docker exec -it open-webui curl http://host.docker.internal:1337/search?q=this+is+a+test+query&format=json ``` -## 3. GUI Configuration +## 4. GUI Configuration 1. Navigate to: `Admin Panel` -> `Settings` -> `Web Search` 2. Toggle `Enable Web Search` 3. Set `Web Search Engine` from dropdown menu to `searxng` -4. Set `Searxng Query URL` to examples given: `https:///search?q=` or `http:///search?q=`. **Do note the `/search?q=` part is mandatory.** +4. Set `Searxng Query URL` to either: + * `http://searxng:1337/search?q=` (using the container name and exposed port) + * `http://host.docker.internal:1337/search?q=` (using the `host.docker.internal` DNS name and the host port) + **Do note the `/search?q=` part is mandatory.** 5. Adjust the `Search Result Count` and `Concurrent Requests` values accordingly 6. Save changes ![SearXNG GUI Configuration](/img/tutorial_searxng_config.png) -## 4. Using Web Search in a Chat +## 5. Using Web Search in a Chat To access Web Search, Click on the + next to the message input field. From 8337dbc39d7b7f26bfaf9cbfa3823cb5085b1661 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:00:34 -0500 Subject: [PATCH 06/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 92 ++++++++++++++++------- 1 file changed, 64 insertions(+), 28 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index 5726291..2618687 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -19,7 +19,9 @@ This guide provides instructions on how to set up web search capabilities in Ope To configure SearXNG optimally for use with Open WebUI, follow these steps: -#### Create a New Directory `searxng-docker` +**Step 1: `git clone` SearXNG Docker and navigate to the folder:** + +1. Create a New Directory `searxng-docker` Clone the searxng-docker repository. This folder will contain your SearXNG configuration files. Refer to the [SearXNG documentation](https://docs.searxng.org/) for configuration instructions. @@ -27,21 +29,15 @@ To configure SearXNG optimally for use with Open WebUI, follow these steps: git clone https://github.com/searxng/searxng-docker.git ``` -#### Configure SearXNG - Navigate to the `searxng-docker` repository: ```bash cd searxng-docker ``` -Create a new `.env` file: +**Step 2: Locate and and modify the `.env` file:** -```bash -touch .env -``` - -Add the following to the `.env` file: +1. Uncomment `SEARXNG_HOSTNAME` from the `.env` file and set it accordingly: ```bash # By default listen on https://localhost @@ -76,7 +72,7 @@ sed -i "s/127.0.0.1:8080/0.0.0.0:1337/" sudo chmod a+rwx searxng-docker/searxng ``` -**Step 5: Create a Less Restrictive `limiter.toml` File** +**Step 5: Create a Non-Restrictive `limiter.toml` File** 5. Create a non-restrictive `searxng-docker/searxng/limiter.toml` config file: @@ -111,6 +107,10 @@ rm searxng-docker/searxng/settings.yml **Step 7: Create a Fresh `settings.yml` File** +:::note +On the first run, you must remove `cap_drop: - ALL` from the `docker-compose.yaml` file for the `searxng` service to successfully create `/etc/searxng/uwsgi`.ini. This is necessary because the `cap_drop: - ALL` directive removes all capabilities, including those required for the creation of the `uwsgi.ini` file. After the first run, you should re-add `cap_drop: - ALL` to the `docker-compose.yaml` file for security reasons. +::: + 7. Bring up the container momentarily to generate a fresh settings.yml file: ```bash @@ -125,6 +125,21 @@ docker compose up -d ; sleep 10 ; docker compose down sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/searxng/settings.yml ``` +Generate a secret key for your SearXNG instance: + +```bash +sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml +``` + +Windows users can use the following powershell script to generate the secret key: + +```powershell +$randomBytes = New-Object byte[] 32 +(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes) +$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ }) +(Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml +``` + Update the port number in the `server` section to match the one you set earlier (in this case, `1337`): ```bash @@ -137,8 +152,6 @@ Change the `bind_address` as desired: sed -i 's/bind_address: "0.0.0.0"/bind_address: "127.0.0.1"/' searxng-docker/searxng/settings.yml ``` -Now, copy the modified `searxng` folder to the same directory as your compose file. - #### Configuration Files #### searxng-docker/searxng/settings.yml (Extract) @@ -244,13 +257,13 @@ offload-threads = 4 -## 2. Alternative Configuration +## 2. Alternative Setup Alternatively, if you don't want to modify the default configuration, you can simply create an empty `searxng-docker` folder and follow the rest of the setup instructions. ### Docker Compose Setup -Add the following to your `docker-compose.yaml` file: +Add the following environment variables to your Open WebUI `docker-compose.yaml` file: ```yaml services: @@ -261,16 +274,27 @@ services: RAG_WEB_SEARCH_RESULT_COUNT: 3 RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10 SEARXNG_QUERY_URL: "http://searxng:1337/search?q=" +``` +Create a `.env` file for SearXNG: +``` +# SearXNG +SEARXNG_HOSTNAME=localhost:1337/ +``` + +Next, add the following to SearXNG's `docker-compose.yaml` file: + +```yaml +services: searxng: - image: searxng/searxng:latest container_name: searxng - env_file: - - stack.env - volumes: - - ./searxng:/etc/searxng:rw + image: searxng/searxng:latest ports: - "1337:8080" + volumes: + - ./searxng:/etc/searxng:rw + env_file: + - .env restart: unless-stopped cap_drop: - ALL @@ -286,16 +310,20 @@ services: max-file: "1" ``` -Launch your updated stack with: +Your stack is ready to be launched with: ```bash docker compose up -d ``` +:::note +On the first run, you must remove `cap_drop: - ALL` from the `docker-compose.yaml` file for the `searxng` service to successfully create `/etc/searxng/uwsgi`.ini. This is necessary because the `cap_drop: - ALL` directive removes all capabilities, including those required for the creation of the `uwsgi.ini` file. After the first run, you should re-add `cap_drop: - ALL` to the `docker-compose.yaml` file for security reasons. +::: + Alternatively, you can run SearXNG directly using `docker run`: ```bash -docker run --name searxng --env-file stack.env -v ./searxng:/etc/searxng:rw -p 1337:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest +docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 1337:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest ``` ## 3. Confirm Connectivity @@ -311,10 +339,14 @@ docker exec -it open-webui curl http://host.docker.internal:1337/search?q=this+i 1. Navigate to: `Admin Panel` -> `Settings` -> `Web Search` 2. Toggle `Enable Web Search` 3. Set `Web Search Engine` from dropdown menu to `searxng` -4. Set `Searxng Query URL` to either: - * `http://searxng:1337/search?q=` (using the container name and exposed port) - * `http://host.docker.internal:1337/search?q=` (using the `host.docker.internal` DNS name and the host port) - **Do note the `/search?q=` part is mandatory.** +4. Set `Searxng Query URL` to one of the following examples: + +* `http://searxng:1337/search?q=` (using the container name and exposed port, suitable for Docker-based setups) +* `http://host.docker.internal:1337/search?q=` (using the `host.docker.internal` DNS name and the host port, suitable for Docker-based setups) +* `http:///search?q=` (using a local domain name, suitable for local network access) +* `https:///search?q=` (using a custom domain name for a self-hosted SearXNG instance, suitable for public or private access) + +**Do note the `/search?q=` part is mandatory.** 5. Adjust the `Search Result Count` and `Concurrent Requests` values accordingly 6. Save changes @@ -362,7 +394,7 @@ Search the web ;-) ### Docker Compose Setup -Add the following to a file named `docker-compose.yaml`: +Add the following environment variables to your Open WebUI `docker-compose.yaml` file: ```yaml services: @@ -387,7 +419,7 @@ services: ### Docker Compose Setup -Add the following to a file named `docker-compose.yaml`: +Add the following environment variables to your Open WebUI `docker-compose.yaml` file: ```yaml services: @@ -450,7 +482,11 @@ Coming Soon ### Setup -No setup required! DuckDuckGo works out of the box in Open WebUI. Note that there is a possibility of your searches being rate limited. +No setup is required to use DuckDuckGo API for Open WebUI's built in web search! DuckDuckGo works out of the box in Open WebUI. + +:::note +There is a possibility of your web searches being rate limited. +::: ## Tavily API From 13c1fe2cf09ff587f39422a9d9ee7f4c241e6124 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:22:33 -0500 Subject: [PATCH 07/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index 2618687..6530043 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -80,8 +80,6 @@ sudo chmod a+rwx searxng-docker/searxng searxng-docker/searxng/limiter.toml ```bash - -cat > searxng-docker/searxng/limiter.toml << EOF # This configuration file updates the default configuration file # See https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml @@ -92,7 +90,6 @@ link_token = false [botdetection.ip_lists] block_ip = [] pass_ip = [] -EOF ``` From 1dcbba4bf6791cb8ce999f215835972211d74210 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Sun, 22 Dec 2024 17:29:04 -0500 Subject: [PATCH 08/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 27 ++++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index 6530043..fc281e0 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -45,7 +45,7 @@ cd searxng-docker # * uncomment SEARXNG_HOSTNAME, and replace by the SearXNG hostname # * uncomment LETSENCRYPT_EMAIL, and replace by your email (require to create a Let's Encrypt certificate) -SEARXNG_HOSTNAME=localhost:1337/ +SEARXNG_HOSTNAME=localhost:8080/ # LETSENCRYPT_EMAIL= # Optional: @@ -58,10 +58,10 @@ SEARXNG_HOSTNAME=localhost:1337/ **Step 3: Modify the `docker-compose.yaml` file** -3. Remove the `localhost` restriction and define a less used port by modifying the `docker-compose.yaml` file: +3. Remove the `localhost` restriction by modifying the `docker-compose.yaml` file: ```bash -sed -i "s/127.0.0.1:8080/0.0.0.0:1337/" +sed -i "s/127.0.0.1:8080/0.0.0.0:8080/" ``` **Step 4: Grant Necessary Permissions** @@ -137,10 +137,10 @@ $secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ }) (Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml ``` -Update the port number in the `server` section to match the one you set earlier (in this case, `1337`): +Update the port number in the `server` section to match the one you set earlier (in this case, `8080`): ```bash -sed -i 's/port: 8080/port: 1337/' searxng-docker/searxng/settings.yml +sed -i 's/port: 8080/port: 8080/' searxng-docker/searxng/settings.yml ``` Change the `bind_address` as desired: @@ -188,7 +188,7 @@ redis: url: redis://redis:6379/0 ``` -The port in the settings.yml file for SearXNG should match that of the port number in your docker-compose.yml file for SearXNG. So if you plan to use port `1337` for example, you'd set both to `1337`. If you want to use port `8080`, keep both on `8080`. Feel free to change the `bind_address` from `0.0.0.0` to `127.0.0.1` instead. Leaving it on `0.0.0.0` means that SearXNG can listen across all interfaces, while `127.0.0.1` just means that its listening on localhost. +The port in the settings.yml file for SearXNG should match that of the port number in your docker-compose.yml file for SearXNG. @@ -270,13 +270,14 @@ services: RAG_WEB_SEARCH_ENGINE: "searxng" RAG_WEB_SEARCH_RESULT_COUNT: 3 RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10 - SEARXNG_QUERY_URL: "http://searxng:1337/search?q=" + SEARXNG_QUERY_URL: "http://searxng:8080/search?q=" ``` Create a `.env` file for SearXNG: + ``` # SearXNG -SEARXNG_HOSTNAME=localhost:1337/ +SEARXNG_HOSTNAME=localhost:8080/ ``` Next, add the following to SearXNG's `docker-compose.yaml` file: @@ -287,7 +288,7 @@ services: container_name: searxng image: searxng/searxng:latest ports: - - "1337:8080" + - "8080:8080" volumes: - ./searxng:/etc/searxng:rw env_file: @@ -320,7 +321,7 @@ On the first run, you must remove `cap_drop: - ALL` from the `docker-compose.yam Alternatively, you can run SearXNG directly using `docker run`: ```bash -docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 1337:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest +docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 8080:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest ``` ## 3. Confirm Connectivity @@ -328,7 +329,7 @@ docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 1337:8 Confirm connectivity to SearXNG from your Open WebUI container instance in your command line interface: ```bash -docker exec -it open-webui curl http://host.docker.internal:1337/search?q=this+is+a+test+query&format=json +docker exec -it open-webui curl http://host.docker.internal:8080/search?q=this+is+a+test+query&format=json ``` ## 4. GUI Configuration @@ -338,8 +339,8 @@ docker exec -it open-webui curl http://host.docker.internal:1337/search?q=this+i 3. Set `Web Search Engine` from dropdown menu to `searxng` 4. Set `Searxng Query URL` to one of the following examples: -* `http://searxng:1337/search?q=` (using the container name and exposed port, suitable for Docker-based setups) -* `http://host.docker.internal:1337/search?q=` (using the `host.docker.internal` DNS name and the host port, suitable for Docker-based setups) +* `http://searxng:8080/search?q=` (using the container name and exposed port, suitable for Docker-based setups) +* `http://host.docker.internal:8080/search?q=` (using the `host.docker.internal` DNS name and the host port, suitable for Docker-based setups) * `http:///search?q=` (using a local domain name, suitable for local network access) * `https:///search?q=` (using a custom domain name for a self-hosted SearXNG instance, suitable for public or private access) From fc6f0d0a637145e0ed8857ec2d9bed5468fa3f48 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Tue, 24 Dec 2024 11:23:28 -0500 Subject: [PATCH 09/13] Update web_search.md --- docs/tutorials/integrations/web_search.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index fc281e0..18c3761 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -125,7 +125,7 @@ sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/ Generate a secret key for your SearXNG instance: ```bash -sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml +sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng-docker/searxng/settings.yml ``` Windows users can use the following powershell script to generate the secret key: @@ -134,7 +134,7 @@ Windows users can use the following powershell script to generate the secret key $randomBytes = New-Object byte[] 32 (New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes) $secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ }) -(Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml +(Get-Content searxng-docker/searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng-docker/searxng/settings.yml ``` Update the port number in the `server` section to match the one you set earlier (in this case, `8080`): @@ -286,7 +286,7 @@ Next, add the following to SearXNG's `docker-compose.yaml` file: services: searxng: container_name: searxng - image: searxng/searxng:latest + image: docker.io/searxng/searxng:latest ports: - "8080:8080" volumes: @@ -321,7 +321,7 @@ On the first run, you must remove `cap_drop: - ALL` from the `docker-compose.yam Alternatively, you can run SearXNG directly using `docker run`: ```bash -docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 8080:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest +docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 8080:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 docker.io/searxng/searxng:latest ``` ## 3. Confirm Connectivity From 1bc52311765303d61787b714e83c41f734b27571 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Thu, 26 Dec 2024 13:52:17 -0500 Subject: [PATCH 10/13] Update web_search.md remove docker.io/ --- docs/tutorials/integrations/web_search.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index 18c3761..69bcb8f 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -286,7 +286,7 @@ Next, add the following to SearXNG's `docker-compose.yaml` file: services: searxng: container_name: searxng - image: docker.io/searxng/searxng:latest + image: searxng/searxng:latest ports: - "8080:8080" volumes: @@ -321,7 +321,7 @@ On the first run, you must remove `cap_drop: - ALL` from the `docker-compose.yam Alternatively, you can run SearXNG directly using `docker run`: ```bash -docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 8080:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 docker.io/searxng/searxng:latest +docker run --name searxng --env-file .env -v ./searxng:/etc/searxng:rw -p 8080:8080 --restart unless-stopped --cap-drop ALL --cap-add CHOWN --cap-add SETGID --cap-add SETUID --cap-add DAC_OVERRIDE --log-driver json-file --log-opt max-size=1m,max-file=1 searxng/searxng:latest ``` ## 3. Confirm Connectivity From a389008e7cf7922d96624a9ec913fa8ee9dc328d Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Thu, 26 Dec 2024 13:54:20 -0500 Subject: [PATCH 11/13] Update scan-missing-env-vars.py added a missing URL for the only other .env file in the backend: - `https://raw.githubusercontent.com/open-webui/open-webui/{git_ref}/backend/open_webui/migrations/env.py` - `migrations/env.py` --- scripts/scan-missing-env-vars.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/scan-missing-env-vars.py b/scripts/scan-missing-env-vars.py index 62d1e0b..af9f88b 100755 --- a/scripts/scan-missing-env-vars.py +++ b/scripts/scan-missing-env-vars.py @@ -61,8 +61,9 @@ def main(): urls = [ f"https://raw.githubusercontent.com/open-webui/open-webui/{git_ref}/backend/open_webui/config.py", f"https://raw.githubusercontent.com/open-webui/open-webui/{git_ref}/backend/open_webui/env.py", + f"https://raw.githubusercontent.com/open-webui/open-webui/{git_ref}/backend/open_webui/migrations/env.py", ] - filenames = ["config.py", "env.py"] + filenames = ["config.py", "env.py", "migrations/env.py"] all_env_vars = set() From 1bf3f137ecd41504a92f696d564564a6bb409fe6 Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:57:54 -0500 Subject: [PATCH 12/13] Squashed commit of the following: commit af900c88030922e779b45c808f83e7618c4465ac Author: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Thu Dec 26 14:56:03 2024 -0500 Update env-configuration.md update for v0.4.8 list of env vars commit 622cd3d6cb8fd7a366521ba40cc8ffe492cf8c52 Merge: ce3429a 41f918c Author: Timothy Jaeryang Baek Date: Wed Dec 25 13:31:27 2024 -0800 Merge pull request #339 from jtslear/main Details model default for ComfyUI commit ce3429a9073991508177c6321a2f3248f78e8392 Author: Timothy Jaeryang Baek Date: Tue Dec 24 20:37:54 2024 -0700 refac commit 7c221579ad5da37fa812808e14d2ef5366e87723 Author: Timothy Jaeryang Baek Date: Mon Dec 23 13:06:36 2024 -0700 refac commit 41f918c4081158f57c3325750a7e6e8b2004356c Author: John T Skarbek Date: Mon Dec 23 08:45:24 2024 -0500 Details model default for ComfyUI Adds concise detail for the Set Default Model option in the Image configuration pane for ComfyUI commit 6b2523cf35d5d82e0a115a342b590f57304a8f41 Author: Timothy Jaeryang Baek Date: Mon Dec 23 01:59:26 2024 -0700 Update roadmap.mdx commit 15df6c51c1ebb58ee350fe5258c3fb6143b23c65 Author: Timothy Jaeryang Baek Date: Sun Dec 22 16:58:14 2024 -0700 refac commit dbe6a7261dc42c6ce52aa2573b1f641f2ebe40b6 Merge: 13aec58 142e75b Author: silentoplayz <50341825+silentoplayz@users.noreply.github.com> Date: Sat Dec 21 20:43:20 2024 -0500 Merge pull request #337 from silentoplayz/main Updated DockerUpdating.md page commit 13aec580d316823497f0b6edf7b3e7b41d0465a1 Author: Timothy Jaeryang Baek Date: Sat Dec 21 18:21:30 2024 -0700 Update roadmap.mdx commit b286d6cb42ad99e55e94da47fc8cdc6e9e5bb2f1 Merge: 6d8b6d9 0bdca8c Author: silentoplayz <50341825+silentoplayz@users.noreply.github.com> Date: Sat Dec 21 12:53:14 2024 -0500 Merge pull request #336 from silentoplayz/main New Apache Tika & Artifacts Docs Pages commit 6d8b6d97ca2aade1c373a7baaa8fab98b60fb078 Merge: a2bc93d 1c83f95 Author: silentoplayz <50341825+silentoplayz@users.noreply.github.com> Date: Sat Dec 21 10:45:40 2024 -0500 Merge pull request #335 from silentoplayz/main New "Redis Websockets" Docs Page commit a2bc93d074b0a6bc86faae31d7add15b5c0e66fd Merge: 283df1a 62c4ca3 Author: silentoplayz <50341825+silentoplayz@users.noreply.github.com> Date: Fri Dec 20 17:49:40 2024 -0500 Merge pull request #330 from xiaowuap/patch-1 Add BingAPI in web_search.md commit 62c4ca375f6d772cf98aac3d7a1115b2eea6f701 Author: Enzo Wu Date: Sat Dec 21 01:09:45 2024 +0800 Add BingAPI in web_search.md First time to contribute~ --- .../{playgroundbeta => playground}/chat.md | 0 .../completions.md | 0 .../{playgroundbeta => playground}/index.mdx | 0 .../assign-user.md | 0 .../default-perms.md | 0 .../{usergroups => user-groups}/index.mdx | 0 .../providing-access.md | 0 .../usergroup-perms.md | 0 docs/features/whitelist.md | 25 - .../advanced-topics/env-configuration.md | 1215 ++++++++++------- .../getting-started/advanced-topics/index.mdx | 3 +- docs/getting-started/index.md | 6 - docs/getting-started/quick-start/index.mdx | 2 +- .../quick-start/tab-docker/DockerUpdating.md | 104 +- docs/getting-started/updating.mdx | 111 ++ .../getting-started/using-openwebui/index.mdx | 23 - .../using-openwebui/resources.mdx | 39 - docs/roadmap.mdx | 6 +- docs/tutorials/integrations/images.md | 1 + docs/tutorials/integrations/web_search.md | 10 +- 20 files changed, 892 insertions(+), 653 deletions(-) rename docs/features/{playgroundbeta => playground}/chat.md (100%) rename docs/features/{playgroundbeta => playground}/completions.md (100%) rename docs/features/{playgroundbeta => playground}/index.mdx (100%) rename docs/features/{usergroups => user-groups}/assign-user.md (100%) rename docs/features/{usergroups => user-groups}/default-perms.md (100%) rename docs/features/{usergroups => user-groups}/index.mdx (100%) rename docs/features/{usergroups => user-groups}/providing-access.md (100%) rename docs/features/{usergroups => user-groups}/usergroup-perms.md (100%) delete mode 100644 docs/features/whitelist.md create mode 100644 docs/getting-started/updating.mdx delete mode 100644 docs/getting-started/using-openwebui/index.mdx delete mode 100644 docs/getting-started/using-openwebui/resources.mdx diff --git a/docs/features/playgroundbeta/chat.md b/docs/features/playground/chat.md similarity index 100% rename from docs/features/playgroundbeta/chat.md rename to docs/features/playground/chat.md diff --git a/docs/features/playgroundbeta/completions.md b/docs/features/playground/completions.md similarity index 100% rename from docs/features/playgroundbeta/completions.md rename to docs/features/playground/completions.md diff --git a/docs/features/playgroundbeta/index.mdx b/docs/features/playground/index.mdx similarity index 100% rename from docs/features/playgroundbeta/index.mdx rename to docs/features/playground/index.mdx diff --git a/docs/features/usergroups/assign-user.md b/docs/features/user-groups/assign-user.md similarity index 100% rename from docs/features/usergroups/assign-user.md rename to docs/features/user-groups/assign-user.md diff --git a/docs/features/usergroups/default-perms.md b/docs/features/user-groups/default-perms.md similarity index 100% rename from docs/features/usergroups/default-perms.md rename to docs/features/user-groups/default-perms.md diff --git a/docs/features/usergroups/index.mdx b/docs/features/user-groups/index.mdx similarity index 100% rename from docs/features/usergroups/index.mdx rename to docs/features/user-groups/index.mdx diff --git a/docs/features/usergroups/providing-access.md b/docs/features/user-groups/providing-access.md similarity index 100% rename from docs/features/usergroups/providing-access.md rename to docs/features/user-groups/providing-access.md diff --git a/docs/features/usergroups/usergroup-perms.md b/docs/features/user-groups/usergroup-perms.md similarity index 100% rename from docs/features/usergroups/usergroup-perms.md rename to docs/features/user-groups/usergroup-perms.md diff --git a/docs/features/whitelist.md b/docs/features/whitelist.md deleted file mode 100644 index 343f2b1..0000000 --- a/docs/features/whitelist.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -sidebar_position: 12 -title: "📝 Model Whitelisting" ---- - -Open WebUI allows you to filter specific models for use in your instance. This feature is especially useful for administrators who want to control which models are available to users. Filtering can be done through the WebUI or by adding environment variables to the backend. - -## Filtering via WebUI - -![Model Filter Configuration](/img/tutorial_model_filter.png) - -1. Go to **Admin Panel > Settings > Users**. -2. In the **Manage Models** section, you can enable or disable the model whitelisting feature, and add or remove models from the whitelist. -3. Click **Save** to apply your changes. - -## Filtering via Environment Variables - -You can also whitelist models by adding environment variables to the backend. This method is useful for automated deployments and can be done by adding the following environment variables to your `docker run` command: - -```bash --e ENABLE_MODEL_FILTER=True \ --e MODEL_FILTER_LIST="llama2:13b;mistral:latest;gpt-3.5-turbo" \ -``` - -In this example, the `ENABLE_MODEL_FILTER` variable is set to `True` to enable the feature, and the `MODEL_FILTER_LIST` variable lists the models to be whitelisted. The format for the `MODEL_FILTER_LIST` variable is `model_name:version;model_name:version;...`. diff --git a/docs/getting-started/advanced-topics/env-configuration.md b/docs/getting-started/advanced-topics/env-configuration.md index e4c3550..b3729ef 100644 --- a/docs/getting-started/advanced-topics/env-configuration.md +++ b/docs/getting-started/advanced-topics/env-configuration.md @@ -6,12 +6,13 @@ title: "🌍 Environment Variable Configuration" ## Overview -Open WebUI provides a range of environment variables that allow you to customize and configure +Open WebUI provides a large range of environment variables that allow you to customize and configure various aspects of the application. This page serves as a comprehensive reference for all available -environment variables, including their types, default values, and descriptions. +environment variables, providing their types, default values, and descriptions. +As new variables are introduced, this page will be updated to reflect the growing configuration options. :::info -Last updated: v0.3.20 +This page is up to date with Open Web UI release version [v0.4.8](https://github.com/open-webui/open-webui/releases/tag/v0.4.8), but is still a work in progress to later include more accurate descriptions, listing out options available for environment variables, defaults, and improving descriptions. ::: ## App/Backend @@ -37,7 +38,7 @@ environment variables, see our [logging documentation](https://docs.openwebui.co #### `WEBUI_AUTH` - Type: `bool` -- Default Setting: `True` +- Default: `True` - Description: This setting enables or disables authentication. :::danger @@ -63,7 +64,8 @@ directly. Ensure that no users are present in the database, if you intend to tur - Type: `int` - Default: `300` -- Description: Specifies the timeout duration in seconds for the aiohttp client. +- Description: Specifies the timeout duration in seconds for the aiohttp client. This impacts things +such as connections to Ollama and OpenAI endpoints. :::info This is the maximum amount of time the client will wait for a response before timing out. @@ -71,24 +73,6 @@ If set to an empty string (' '), the timeout will be set to `None`, effectively allowing the client to wait indefinitely. ::: -#### `DATA_DIR` - -- Type: `str` -- Default: `./data` -- Description: Specifies the base directory for data storage, including uploads, cache, vector database, etc. - -#### `FRONTEND_BUILD_DIR` - -- Type: `str` -- Default: `../build` -- Description: Specifies the location of the built frontend files. - -#### `STATIC_DIR` - -- Type: `str` -- Default: `./static` -- Description: Specifies the directory for static files, such as the favicon. - #### `CUSTOM_NAME` - Type: `str` @@ -111,62 +95,6 @@ This should **only** ever be set to `False` when [ENABLE_OAUTH_SIGNUP](https://d is also being used and set to `True`. Failure to do so will result in the inability to login. ::: -#### `ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION` - -- Type: `bool` -- Default: `True` -- Description: Bypass SSL Verification for RAG on Websites. - -#### `DEFAULT_MODELS` - -- Type: `str` -- Description: Sets a default Language Model. - -#### `DEFAULT_USER_ROLE` - -- Type: `str` (enum: `pending`, `user`, `admin`) -- Options: - - `pending` - New users are pending until their accounts are manually activated by an admin. - - `user` - New users are automatically activated with regular user permissions. - - `admin` - New users are automatically activated with administrator permissions. -- Default: `pending` -- Description: Sets the default role assigned to new users. - -#### `USER_PERMISSIONS_CHAT_DELETION` - -- Type: `bool` -- Default: `True` -- Description: Toggles user permission to delete chats. - -#### `USER_PERMISSIONS_CHAT_EDITING` - -- Type: `bool` -- Default: `True` -- Description: Toggles user permission to edit chats. - -#### `USER_PERMISSIONS_CHAT_TEMPORARY` - -- Type: `bool` -- Default: `True` -- Description: Toggles user permission to create temporary chats. - -#### `ENABLE_MODEL_FILTER` - -- Type: `bool` -- Default: `False` -- Description: Toggles Language Model filtering. - -#### `MODEL_FILTER_LIST` - -- Type: `str` -- Description: Sets the Language Model filter list, semicolon-separated -- Example: `llama3.1:instruct;gemma2:latest` - -#### `WEBHOOK_URL` - -- Type: `str` -- Description: Sets a webhook for integration with Slack/Microsoft Teams. - #### `ENABLE_ADMIN_EXPORT` - Type: `bool` @@ -191,6 +119,36 @@ is also being used and set to `True`. Failure to do so will result in the inabil - Default: `True` - Description: Enables message rating feature. +#### `OFFLINE_MODE` + +- Type: `bool` +- Description: Enables or disables offline mode. + +#### `DEFAULT_MODELS` + +- Type: `str` +- Description: Sets a default Language Model. + +#### `BYPASS_MODEL_ACCESS_CONTROL` + +- Type: `bool` +- Description: Bypasses model access control. + +#### `DEFAULT_USER_ROLE` + +- Type: `str` (enum: `pending`, `user`, `admin`) +- Options: + - `pending` - New users are pending until their accounts are manually activated by an admin. + - `user` - New users are automatically activated with regular user permissions. + - `admin` - New users are automatically activated with administrator permissions. +- Default: `pending` +- Description: Sets the default role assigned to new users. + +#### `WEBHOOK_URL` + +- Type: `str` +- Description: Sets a webhook for integration with Slack/Microsoft Teams. + #### `WEBUI_BUILD_HASH` - Type: `str` @@ -238,53 +196,6 @@ is also being used and set to `True`. Failure to do so will result in the inabil - Description: Builds the Docker image with NVIDIA CUDA support. Enables GPU acceleration for local Whisper and embeddings. -#### `DATABASE_URL` - -- Type: `str` -- Default: `sqlite:///${DATA_DIR}/webui.db` -- Description: Specifies the database URL to connect to. - -:::info -Supports SQLite and Postgres. Changing the URL does not migrate data between databases. -Documentation on URL scheme available [here](https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls). -::: - -#### `DATABASE_POOL_SIZE` - -- Type: `int` -- Default: `0` -- Description: Specifies the size of the database pool. A value of `0` disables pooling. - -#### `DATABASE_POOL_MAX_OVERFLOW` - -- Type: `int` -- Default: `0` -- Description: Specifies the database pool max overflow. - -:::info -More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.max_overflow). -::: - -#### `DATABASE_POOL_TIMEOUT` - -- Type: `int` -- Default: `30` -- Description: Specifies the database pool timeout in seconds to get a connection. - -:::info -More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.timeout). -::: - -#### `DATABASE_POOL_RECYCLE` - -- Type: `int` -- Default: `3600` -- Description: Specifies the database pool recycle time in seconds. - -:::info -More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#setting-pool-recycle). -::: - #### `PORT` - Type: `int` @@ -295,24 +206,12 @@ More information about this setting can be found [here](https://docs.sqlalchemy. If installed via Python, you must instead pass `--port` as a command line argument. ::: -#### `RESET_CONFIG_ON_START` - -- Type: `bool` -- Default: `False` -- Description: Resets the `config.json` file on startup. - #### `DEFAULT_LOCALE` - Type: `str` - Default: `en` - Description: Sets the default locale for the application. -#### `FUNCTIONS_DIR` - -- Type: `str` -- Default: `./functions` -- Description: Specifies the directory for custom functions. - #### `SHOW_ADMIN_DETAILS` - Type: `bool` @@ -324,64 +223,36 @@ If installed via Python, you must instead pass `--port` as a command line argume - Type: `str` - Description: Sets the admin email shown by `SHOW_ADMIN_DETAILS` -#### `SAFE_MODE` - -- Type: `bool` -- Default: `False` -- Description: Enables safe mode, which disables potentially unsafe features, deactivating all functions. - -#### `ENABLE_FORWARD_USER_INFO_HEADERS` - -- type: `bool` -- Default: `False` -- Description: Forwards user information (name, id, email, and role) as X-headers to OpenAI API. -If enabled, the following headers are forwarded: - - `X-OpenWebUI-User-Name` - - `X-OpenWebUI-User-Id` - - `X-OpenWebUI-User-Email` - - `X-OpenWebUI-User-Role` - -#### `WEBUI_SESSION_COOKIE_SAME_SITE` - -- Type: `str` (enum: `lax`, `strict`, `none`) -- Options: - - `lax` - Sets the `SameSite` attribute to lax, allowing session cookies to be sent with -requests initiated by third-party websites. - - `strict` - Sets the `SameSite` attribute to strict, blocking session cookies from being sent -with requests initiated by third-party websites. - - `none` - Sets the `SameSite` attribute to none, allowing session cookies to be sent with -requests initiated by third-party websites, but only over HTTPS. -- Default: `lax` -- Description: Sets the `SameSite` attribute for session cookies. - -#### `WEBUI_SESSION_COOKIE_SECURE` - -- Type: `bool` -- Default: `False` -- Description: Sets the `Secure` attribute for session cookies if set to `True`. - -#### `CONTENT_SECURITY_POLICY` - -- Type: `str` -- Description: Sets the `content-security-policy` HTTP header -- Example: `default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' https://* data:; child-src 'none'; font-src 'self' data:; worker-src 'self';` - -#### `AIOHTTP_CLIENT_TIMEOUT` - -- Type: `int` -- Description: Sets the timeout in seconds for internal aiohttp connections. This impacts things -such as connections to Ollama and OpenAI endpoints. - #### `AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST` - Type: `int` - Description: Sets the timeout in seconds for fetching the OpenAI model list. This can be useful in cases where network latency requires a longer timeout duration to successfully retrieve the model list. +### Directories + +#### `DATA_DIR` + +- Type: `str` +- Default: `./data` +- Description: Specifies the base directory for data storage, including uploads, cache, vector database, etc. + #### `FONTS_DIR` - Type: `str` - Description: Specifies the directory for fonts. +#### `FRONTEND_BUILD_DIR` + +- Type: `str` +- Default: `../build` +- Description: Specifies the location of the built frontend files. + +#### `STATIC_DIR` + +- Type: `str` +- Default: `./static` +- Description: Specifies the directory for static files, such as the favicon. + ### Ollama #### `ENABLE_OLLAMA_API` @@ -482,22 +353,6 @@ Artificial Intelligence in Healthcare Prompt: {{prompt:middletruncate:8000}} ``` -#### `SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE` - -- Type: `str` -- Description: Prompt to use when generating search queries. -- Default: - -``` -Assess the need for a web search based on the current question and prior interactions, but lean towards suggesting a Google search query if uncertain. Generate a Google search query even when the answer might be straightforward, as additional information may enhance comprehension or provide updated data. If absolutely certain that no further information is required, return an empty string. Default to a search query if unsure or in doubt. Today's date is {{CURRENT_DATE}}. - -Current Question: -{{prompt:end:4000}} - -Interaction History: -{{MESSAGES:END:6}} -``` - #### `TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE` - Type: `str` @@ -508,13 +363,137 @@ Interaction History: Available Tools: {{TOOLS}}\nReturn an empty string if no tools match the query. If a function tool matches, construct and return a JSON object in the format {\"name\": \"functionName\", \"parameters\": {\"requiredFunctionParamKey\": \"requiredFunctionParamValue\"}} using the appropriate tool and its parameters. Only return the object and limit the response to the JSON object without additional text. ``` +### Autocomplete + +#### `ENABLE_AUTOCOMPLETE_GENERATION` + +- Type: `bool` +- Description: Enables or disables autocomplete generation. + +#### `AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH` + +- Type: `int` +- Description: Sets the maximum input length for autocomplete generation. + +#### `AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE` + +- Type: `str` +- Description: Sets the prompt template for autocomplete generation. + +### Evaluation Arena Model + +#### `ENABLE_EVALUATION_ARENA_MODELS` + +- Type: `bool` +- Description: Enables or disables evaluation arena models. + +### Tags Generation + +#### `ENABLE_TAGS_GENERATION` + +- Type: `bool` +- Description: Enables or disables tags generation. + +#### `TAGS_GENERATION_PROMPT_TEMPLATE` + +- Type: `str` +- Description: Sets the prompt template for tags generation. + +## Security Variables + +#### `ENABLE_FORWARD_USER_INFO_HEADERS` + +- type: `bool` +- Default: `False` +- Description: Forwards user information (name, id, email, and role) as X-headers to OpenAI API. +If enabled, the following headers are forwarded: + - `X-OpenWebUI-User-Name` + - `X-OpenWebUI-User-Id` + - `X-OpenWebUI-User-Email` + - `X-OpenWebUI-User-Role` + +#### `ENABLE_RAG_LOCAL_WEB_FETCH` + +- Type: `bool` +- Default: `False` +- Description: Enables local web fetching for RAG. Enabling this allows Server Side Request +Forgery attacks against local network resources. + +#### `ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION` + +- Type: `bool` +- Default: `True` +- Description: Bypass SSL Verification for RAG on Websites. + +#### `WEBUI_SESSION_COOKIE_SAME_SITE` + +- Type: `str` (enum: `lax`, `strict`, `none`) +- Options: + - `lax` - Sets the `SameSite` attribute to lax, allowing session cookies to be sent with +requests initiated by third-party websites. + - `strict` - Sets the `SameSite` attribute to strict, blocking session cookies from being sent +with requests initiated by third-party websites. + - `none` - Sets the `SameSite` attribute to none, allowing session cookies to be sent with +requests initiated by third-party websites, but only over HTTPS. +- Default: `lax` +- Description: Sets the `SameSite` attribute for session cookies. + +#### `WEBUI_SESSION_COOKIE_SECURE` + +- Type: `bool` +- Default: `False` +- Description: Sets the `Secure` attribute for session cookies if set to `True`. + +#### `RESET_CONFIG_ON_START` + +- Type: `bool` +- Default: `False` +- Description: Resets the `config.json` file on startup. + +#### `SAFE_MODE` + +- Type: `bool` +- Default: `False` +- Description: Enables safe mode, which disables potentially unsafe features, deactivating all functions. + #### `CORS_ALLOW_ORIGIN` - Type: `str` - Default: `*` - Description: Sets the allowed origins for Cross-Origin Resource Sharing (CORS). -### RAG +#### `RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE` + +- Type: `bool` +- Default: `False` +- Description: Determines whether or not to allow custom models defined on the Hub in their own modeling files. + +#### `RAG_RERANKING_MODEL_TRUST_REMOTE_CODE` + +- Type: `bool` +- Default: `False` +- Description: Determines whether or not to allow custom models defined on the Hub in their own +modeling files for reranking. + +#### `RAG_EMBEDDING_MODEL_AUTO_UPDATE` + +- Type: `bool` +- Default: `False` +- Description: Toggles automatic update of the Sentence-Transformer model. + +#### `RAG_RERANKING_MODEL_AUTO_UPDATE` + +- Type: `bool` +- Default: `False` +- Description: Toggles automatic update of the reranking model. + +#### `WHISPER_MODEL_AUTO_UPDATE` + +- Type: `bool` +- Default: `False` +- Description: Toggles automatic update of the Whisper model. + +## Retrieval Augmented Generation (RAG) #### `VECTOR_DB` @@ -522,6 +501,177 @@ Available Tools: {{TOOLS}}\nReturn an empty string if no tools match the query. - Default: `chroma` - Description: Specifies which vector database system to use, either 'chroma' for ChromaDB or 'milvus' for Milvus. This setting determines which vector storage system will be used for managing embeddings. +#### `RAG_EMBEDDING_ENGINE` + +- Type: `str` (enum: `ollama`, `openai`) +- Options: + - Leave empty for `Default (SentenceTransformers)` - Uses SentenceTransformers for embeddings. + - `ollama` - Uses the Ollama API for embeddings. + - `openai` - Uses the OpenAI API for embeddings. +- Description: Selects an embedding engine to use for RAG. + +#### `RAG_EMBEDDING_MODEL` + +- Type: `str` +- Default: `sentence-transformers/all-MiniLM-L6-v2` +- Description: Sets a model for embeddings. Locally, a Sentence-Transformer model is used. + +#### `ENABLE_RAG_HYBRID_SEARCH` + +- Type: `bool` +- Default: `False` +- Description: Enables the use of ensemble search with `BM25` + `ChromaDB`, with reranking using +`sentence_transformers` models. + +#### `CONTENT_EXTRACTION_ENGINE` + +- Type: `str` (`tika`) +- Options: + - Leave empty to use default + - `tika` - Use a local Apache Tika server +- Description: Sets the content extraction engine to use for document ingestion. + +#### `TIKA_SERVER_URL` + +- Type: `str` +- Default: `http://localhost:9998` +- Description: Sets the URL for the Apache Tika server. + +#### `RAG_TOP_K` + +- Type: `int` +- Default: `5` +- Description: Sets the default number of results to consider when using RAG. + +#### `RAG_RELEVANCE_THRESHOLD` + +- Type: `float` +- Default: `0.0` +- Description: Sets the relevance threshold to consider for documents when used with reranking. + +#### `RAG_TEMPLATE` + +- Type: `str` +- Default: + +``` +You are given a user query, some textual context and rules, all inside xml tags. You have to answer the query based on the context while respecting the rules. + + +[context] + + + +- If you don't know, just say so. +- If you are not sure, ask for clarification. +- Answer in the same language as the user query. +- If the context appears unreadable or of poor quality, tell the user then answer as best as you can. +- If the answer is not in the context but you think you know the answer, explain that to the user then answer with your own knowledge. +- Answer directly and without using xml tags. + + + +[query] + +``` + +- Description: Template to use when injecting RAG documents into chat completion + +#### `RAG_TEXT_SPLITTER` + +- Type: `str` +- Description: Sets the text splitter for RAG models. + +#### `TIKTOKEN_CACHE_DIR` + +- Type: `str` +- Description: Sets the directory for TikiToken cache. + +#### `TIKTOKEN_ENCODING_NAME` + +- Type: `str` +- Description: Sets the encoding name for TikiToken. + +#### `CHUNK_SIZE` + +- Type: `int` +- Default: `1500` +- Description: Sets the document chunk size for embeddings. + +#### `CHUNK_OVERLAP` + +- Type: `int` +- Default: `100` +- Description: Specifies how much overlap there should be between chunks. + +#### `PDF_EXTRACT_IMAGES` + +- Type: `bool` +- Default: `False` +- Description: Extracts images from PDFs using OCR when loading documents. + +#### `RAG_FILE_MAX_SIZE` + +- Type: `int` +- Default: `100` (100MB) +- Description: Sets the maximum size of a file that can be uploaded for document ingestion. + +#### `RAG_FILE_MAX_COUNT` + +- Type: `int` +- Default: `10` +- Description: Sets the maximum number of files that can be uploaded at once for document ingestion. + +#### `RAG_RERANKING_MODEL` + +- Type: `str` +- Description: Sets a model for reranking results. Locally, a Sentence-Transformer model is used. + +#### `RAG_OPENAI_API_BASE_URL` + +- Type: `str` +- Default: `${OPENAI_API_BASE_URL}` +- Description: Sets the OpenAI base API URL to use for RAG embeddings. + +#### `RAG_OPENAI_API_KEY` + +- Type: `str` +- Default: `${OPENAI_API_KEY}` +- Description: Sets the OpenAI API key to use for RAG embeddings. + +#### `RAG_EMBEDDING_OPENAI_BATCH_SIZE` + +- Type: `int` +- Default: `1` +- Description: Sets the batch size for OpenAI embeddings. + +#### `RAG_EMBEDDING_BATCH_SIZE` + +- Type: `int` +- Description: Sets the batch size for embedding in RAG (Retrieval-Augmented Generator) models. + +#### `RAG_OLLAMA_API_KEY` + +- Type: `str` +- Description: Sets the API key for Ollama API used in RAG models. + +#### `RAG_OLLAMA_BASE_URL` + +- Type: `str` +- Description: Sets the base URL for Ollama API used in RAG models. + +#### `ENABLE_RETRIEVAL_QUERY_GENERATION` + +- Type: `bool` +- Description: Enables or disables retrieval query generation. + +#### `QUERY_GENERATION_PROMPT_TEMPLATE` + +- Type: `str` +- Description: Sets the prompt template for query generation. + +### ChromaDB + #### `CHROMA_TENANT` - Type: `str` @@ -569,186 +719,62 @@ Available Tools: {{TOOLS}}\nReturn an empty string if no tools match the query. - Description: Specifies auth credentials for remote ChromaDB Server. - Example: `username:password` +### Milvus + #### `MILVUS_URI` - Type: `str` - Default: `${DATA_DIR}/vector_db/milvus.db` - Description: Specifies the URI for connecting to the Milvus vector database. This can point to a local or remote Milvus server based on the deployment configuration. -#### `RAG_TOP_K` +### OpenSearch -- Type: `int` -- Default: `5` -- Description: Sets the default number of results to consider when using RAG. - -#### `RAG_RELEVANCE_THRESHOLD` - -- Type: `float` -- Default: `0.0` -- Description: Sets the relevance threshold to consider for documents when used with reranking. - -#### `ENABLE_RAG_HYBRID_SEARCH` +#### `OPENSEARCH_CERT_VERIFY` - Type: `bool` - Default: `False` -- Description: Enables the use of ensemble search with `BM25` + `ChromaDB`, with reranking using -`sentence_transformers` models. +- Description: Enables or disables OpenSearch certificate verification. -#### `ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION` - -- Type: `bool` -- Default: `True` -- Description: Enables TLS certification verification when browsing web pages for RAG. - -#### `RAG_EMBEDDING_ENGINE` - -- Type: `str` (enum: `ollama`, `openai`) -- Options: - - Leave empty for `Default (SentenceTransformers)` - Uses SentenceTransformers for embeddings. - - `ollama` - Uses the Ollama API for embeddings. - - `openai` - Uses the OpenAI API for embeddings. -- Description: Selects an embedding engine to use for RAG. - -#### `PDF_EXTRACT_IMAGES` - -- Type: `bool` -- Default: `False` -- Description: Extracts images from PDFs using OCR when loading documents. - -#### `RAG_EMBEDDING_MODEL` +#### `OPENSEARCH_PASSWORD` - Type: `str` -- Default: `sentence-transformers/all-MiniLM-L6-v2` -- Description: Sets a model for embeddings. Locally, a Sentence-Transformer model is used. +- Description: Sets the password for OpenSearch. -#### `RAG_EMBEDDING_MODEL_AUTO_UPDATE` +#### `OPENSEARCH_SSL` - Type: `bool` -- Default: `False` -- Description: Toggles automatic update of the Sentence-Transformer model. +- Description: Enables or disables SSL for OpenSearch. -#### `RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE` - -- Type: `bool` -- Default: `False` -- Description: Determines whether or not to allow custom models defined on the Hub in their own modeling files. - -#### `RAG_TEMPLATE` +#### `OPENSEARCH_URI` - Type: `str` -- Default: +- Description: Sets the URI for OpenSearch. -``` -You are given a user query, some textual context and rules, all inside xml tags. You have to answer the query based on the context while respecting the rules. - - -[context] - - - -- If you don't know, just say so. -- If you are not sure, ask for clarification. -- Answer in the same language as the user query. -- If the context appears unreadable or of poor quality, tell the user then answer as best as you can. -- If the answer is not in the context but you think you know the answer, explain that to the user then answer with your own knowledge. -- Answer directly and without using xml tags. - - - -[query] - -``` - -- Description: Template to use when injecting RAG documents into chat completion - -#### `RAG_RERANKING_MODEL` +#### `OPENSEARCH_USERNAME` - Type: `str` -- Description: Sets a model for reranking results. Locally, a Sentence-Transformer model is used. +- Description: Sets the username for OpenSearch. -#### `RAG_RERANKING_MODEL_AUTO_UPDATE` +### PGVector -- Type: `bool` -- Default: `False` -- Description: Toggles automatic update of the reranking model. - -#### `RAG_RERANKING_MODEL_TRUST_REMOTE_CODE` - -- Type: `bool` -- Default: `False` -- Description: Determines whether or not to allow custom models defined on the Hub in their own -modeling files for reranking. - -#### `RAG_OPENAI_API_BASE_URL` +#### `PGVECTOR_DB_URL` - Type: `str` -- Default: `${OPENAI_API_BASE_URL}` -- Description: Sets the OpenAI base API URL to use for RAG embeddings. +- Description: Sets the database URL for model storage. -#### `RAG_OPENAI_API_KEY` +### Qdrant + +#### `QDRANT_API_KEY` - Type: `str` -- Default: `${OPENAI_API_KEY}` -- Description: Sets the OpenAI API key to use for RAG embeddings. +- Description: Sets the API key for Qdrant. -#### `RAG_EMBEDDING_OPENAI_BATCH_SIZE` - -- Type: `int` -- Default: `1` -- Description: Sets the batch size for OpenAI embeddings. - -#### `ENABLE_RAG_LOCAL_WEB_FETCH` - -- Type: `bool` -- Default: `False` -- Description: Enables local web fetching for RAG. Enabling this allows Server Side Request -Forgery attacks against local network resources. - -#### `YOUTUBE_LOADER_LANGUAGE` +#### `QDRANT_URI` - Type: `str` -- Default: `en` -- Description: Sets the language to use for YouTube video loading. +- Description: Sets the URI for Qdrant. -#### `CHUNK_SIZE` - -- Type: `int` -- Default: `1500` -- Description: Sets the document chunk size for embeddings. - -#### `CHUNK_OVERLAP` - -- Type: `int` -- Default: `100` -- Description: Specifies how much overlap there should be between chunks. - -#### `CONTENT_EXTRACTION_ENGINE` - -- Type: `str` (`tika`) -- Options: - - Leave empty to use default - - `tika` - Use a local Apache Tika server -- Description: Sets the content extraction engine to use for document ingestion. - -#### `TIKA_SERVER_URL` - -- Type: `str` -- Default: `http://localhost:9998` -- Description: Sets the URL for the Apache Tika server. - -#### `RAG_FILE_MAX_COUNT` - -- Type: `int` -- Default: `10` -- Description: Sets the maximum number of files that can be uploaded at once for document ingestion. - -#### `RAG_FILE_MAX_SIZE` - -- Type: `int` -- Default: `100` (100MB) -- Description: Sets the maximum size of a file that can be uploaded for document ingestion. - -### Web Search +## Web Search #### `ENABLE_RAG_WEB_SEARCH` @@ -756,27 +782,28 @@ Forgery attacks against local network resources. - Default: `False` - Description: Enable web search toggle -#### `ENABLE_SEARCH_QUERY` +#### `ENABLE_SEARCH_QUERY_GENERATION` - Type: `bool` -- Default: `False` -- Description: Enables the generation of search queries from prompts +- Description: Enables or disables search query generation. #### `RAG_WEB_SEARCH_ENGINE` -- Type: `str` (enum: `searxng`, `google_pse`, `brave`, `serpstack`, `serper`, `serply`, `searchapi`, `duckduckgo`, `tavily`, `jina`) +- Type: `str` (enum: `searxng`, `google_pse`, `brave`, `kagi`, `mojeek`, `serpstack`, `serper`, `serply`, `searchapi`, `duckduckgo`, `tavily`, `jina`, `bing`) - Options: - `searxng` - Uses the [SearXNG](https://github.com/searxng/searxng) search engine. - `google_pse` - Uses the [Google Programmable Search Engine](https://programmablesearchengine.google.com/about/). - `brave` - Uses the [Brave search engine](https://brave.com/search/api/). - - `serpstack` - Uses the [Serpstack search engine](https://serpstack.com/). - - `serper` - Uses the [Serper search engine](https://serper.dev/). - - `serply` - Uses the [Serply search engine](https://serply.io/). - - `searchapi` - Uses the [SearchAPI search engine](https://www.searchapi.io/). - - `duckduckgo` - Uses the [DuckDuckGo search engine](https://duckduckgo.com/). - - `tavily` - Uses the [Tavily search engine](https://tavily.com/). - - `jina` - Uses the [Jina search engine](https://jina.ai/). -- Description: Select engine for performing searches + - `kagi` - Uses the [Kagi](https://www.kagi.com/) search engine. + - `mojeek` - Uses the [Mojeek](https://www.mojeek.com/) search engine. + - `serpstack` - Uses the [Serpstack](https://serpstack.com/) search engine. + - `serper` - Uses the [Serper](https://serper.dev/) search engine. + - `serply` - Uses the [Serply](https://serply.io/) search engine. + - `searchapi` - Uses the [SearchAPI](https://www.searchapi.io/) search engine. + - `duckduckgo` - Uses the [DuckDuckGo](https://duckduckgo.com/) search engine. + - `tavily` - Uses the [Tavily](https://tavily.com/) search engine. + - `jina` - Uses the [Jina](https://jina.ai/) search engine. + - `bing` - Uses the [Bing](https://www.bing.com/) search engine. #### `SEARXNG_QUERY_URL` @@ -799,6 +826,11 @@ the search query. Example: `http://searxng.local/search?q=` - Type: `str` - Description: The API key for the Brave Search API. +#### `MOJEEK_SEARCH_API_KEY` + +- Type: `str` +- Description: Sets the API key for Mojiek Search API. + #### `SERPSTACK_API_KEY` - Type: `str` @@ -820,11 +852,36 @@ the search query. Example: `http://searxng.local/search?q=` - Type: `str` - Description: The API key for the Serply search API. +#### `SEARCHAPI_API_KEY` + +- Type: `str` +- Description: Sets the SearchAPI API key. + +#### `SEARCHAPI_ENGINE` + +- Type: `str` +- Description: Sets the SearchAPI engine. + #### `TAVILY_API_KEY` - Type: `str` - Description: The API key for the Tavily search API. +#### `JINA_API_KEY` + +- Type: `str` +- Description: Sets the API key for Jina. + +#### `BING_SEARCH_V7_ENDPOINT` + +- Type: `str` +- Description: Sets the endpoint for Bing Search API. + +#### `BING_SEARCH_V7_SUBSCRIPTION_KEY` + +- Type: `str` +- Description: Sets the subscription key for Bing Search API. + #### `RAG_WEB_SEARCH_RESULT_COUNT` - Type: `int` @@ -837,43 +894,22 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `10` - Description: Number of concurrent requests to crawl web pages returned from search results. -#### `SEARCHAPI_API_KEY` +### YouTube Loader + +#### `YOUTUBE_LOADER_PROXY_URL` - Type: `str` -- Description: Sets the SearchAPI API key. +- Description: Sets the proxy URL for YouTube loader. -#### `SEARCHAPI_ENGINE` +#### `YOUTUBE_LOADER_LANGUAGE` - Type: `str` -- Description: Sets the SearchAPI engine. +- Default: `en` +- Description: Sets the language to use for YouTube video loading. -### Speech to Text +## Audio -#### `AUDIO_STT_ENGINE` - -- Type: `str` (enum: `openai`) -- Options: - - Leave empty to use local Whisper engine for Speech-to-Text. - - `openai` - Uses OpenAI engine for Speech-to-Text. -- Description: Specifies the Speech-to-Text engine to use. - -#### `AUDIO_STT_OPENAI_API_BASE_URL` - -- Type: `str` -- Default: `${OPENAI_API_BASE_URL}` -- Description: Sets the OpenAI-compatible base URL to use for Speech-to-Text. - -#### `AUDIO_STT_OPENAI_API_KEY` - -- Type: `str` -- Default: `${OPENAI_API_KEY}` -- Description: Sets the OpenAI API key to use for Speech-to-Text. - -#### `AUDIO_STT_MODEL` - -- Type: `str` -- Default: `whisper-1` -- Description: Specifies the Speech-to-Text model to use for OpenAI-compatible endpoints. +### Whisper Speech-to-Text (Local) #### `WHISPER_MODEL` @@ -887,13 +923,40 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `${DATA_DIR}/cache/whisper/models` - Description: Specifies the directory to store Whisper model files. -#### `WHISPER_MODEL_AUTO_UPDATE` +### Speech-to-Text (OpenAI) -- Type: `bool` -- Default: `False` -- Description: Toggles automatic update of the Whisper model. +#### `AUDIO_STT_ENGINE` -### Text to Speech +- Type: `str` (enum: `openai`) +- Options: + - Leave empty to use local Whisper engine for Speech-to-Text. + - `openai` - Uses OpenAI engine for Speech-to-Text. +- Description: Specifies the Speech-to-Text engine to use. + +#### `AUDIO_STT_MODEL` + +- Type: `str` +- Default: `whisper-1` +- Description: Specifies the Speech-to-Text model to use for OpenAI-compatible endpoints. + +#### `AUDIO_STT_OPENAI_API_BASE_URL` + +- Type: `str` +- Default: `${OPENAI_API_BASE_URL}` +- Description: Sets the OpenAI-compatible base URL to use for Speech-to-Text. + +#### `AUDIO_STT_OPENAI_API_KEY` + +- Type: `str` +- Default: `${OPENAI_API_KEY}` +- Description: Sets the OpenAI API key to use for Speech-to-Text. + +### Text-to-Speech + +#### `AUDIO_TTS_API_KEY` + +- Type: `str` +- Description: Sets the API key for Text-to-Speech. #### `AUDIO_TTS_ENGINE` @@ -904,10 +967,25 @@ the search query. Example: `http://searxng.local/search?q=` - `openai` - Uses OpenAI engine for Text-to-Speech. - Description: Specifies the Text-to-Speech engine to use. -#### `AUDIO_TTS_API_KEY` +#### `AUDIO_TTS_MODEL` - Type: `str` -- Description: Sets the API key for Text-to-Speech. +- Default: `tts-1` +- Description: Specifies the OpenAI text-to-speech model to use. + +### Azure Text-to-Speech + +#### `AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT` + +- Type: `str` +- Description: Sets the output format for Azure Text to Speech. + +#### `AUDIO_TTS_AZURE_SPEECH_REGION` + +- Type: `str` +- Description: Sets the region for Azure Text to Speech. + +### OpenAI Text-to-Speech #### `AUDIO_TTS_OPENAI_API_BASE_URL` @@ -921,11 +999,11 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `${OPENAI_API_KEY}` - Description: Sets the API key to use for text-to-speech. -#### `AUDIO_TTS_MODEL` +#### `AUDIO_TTS_SPLIT_ON` - Type: `str` -- Default: `tts-1` -- Description: Specifies the OpenAI text-to-speech model to use. +- Default: `punctuation` +- Description: Sets the OpenAI text-to-speech split on to use. #### `AUDIO_TTS_VOICE` @@ -933,13 +1011,7 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `alloy` - Description: Sets the OpenAI text-to-speech voice to use. -#### `AUDIO_TTS_SPLIT_ON` - -- Type: `str` -- Default: `punctuation` -- Description: Sets the OpenAI text-to-speech split on to use. - -### Image Generation +## Image Generation #### `ENABLE_IMAGE_GENERATION` @@ -957,38 +1029,6 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `automatic1111` - Description: Specifies the engine to use for image generation. -#### `AUTOMATIC1111_BASE_URL` - -- Type: `str` -- Description: Specifies the URL to Automatic1111's Stable Diffusion API. - -#### `AUTOMATIC1111_API_AUTH` - -- Type: `str` -- Description: Sets the Automatic1111 API authentication. - -#### `COMFYUI_BASE_URL` - -- Type: `str` -- Description: Specifies the URL to the ComfyUI image generation API. - -#### `COMFYUI_WORKFLOW` - -- Type: `str` -- Description: Sets the ComfyUI workflow. - -#### `IMAGES_OPENAI_API_BASE_URL` - -- Type: `str` -- Default: `${OPENAI_API_BASE_URL}` -- Description: Sets the OpenAI-compatible base URL to use for DALL-E image generation. - -#### `IMAGES_OPENAI_API_KEY` - -- Type: `str` -- Default: `${OPENAI_API_KEY}` -- Description: Sets the API key to use for DALL-E image generation. - #### `IMAGE_GENERATION_MODEL` - Type: `str` @@ -1006,21 +1046,135 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `50` - Description: Sets the default iteration steps for image generation. Used for ComfyUI and AUTOMATIC1111. -### OAuth +### AUTOMATIC1111 + +#### `AUTOMATIC1111_API_AUTH` + +- Type: `str` +- Description: Sets the Automatic1111 API authentication. + +#### `AUTOMATIC1111_BASE_URL` + +- Type: `str` +- Description: Specifies the URL to Automatic1111's Stable Diffusion API. + +#### `AUTOMATIC1111_CFG_SCALE` + +- Type: `float` +- Description: Sets the scale for Automatic1111 inference. + +#### `AUTOMATIC1111_SAMPLER` + +- Type: `str` +- Description: Sets the sampler for Automatic1111 inference. + +#### `AUTOMATIC1111_SCHEDULER` + +- Type: `str` +- Description: Sets the scheduler for Automatic1111 inference. + +### ComfyUI + +#### `COMFYUI_BASE_URL` + +- Type: `str` +- Description: Specifies the URL to the ComfyUI image generation API. + +#### `COMFYUI_WORKFLOW` + +- Type: `str` +- Description: Sets the ComfyUI workflow. + +### OpenAI DALL-E + +#### `IMAGES_OPENAI_API_BASE_URL` + +- Type: `str` +- Default: `${OPENAI_API_BASE_URL}` +- Description: Sets the OpenAI-compatible base URL to use for DALL-E image generation. + +#### `IMAGES_OPENAI_API_KEY` + +- Type: `str` +- Default: `${OPENAI_API_KEY}` +- Description: Sets the API key to use for DALL-E image generation. + +## Database Pool + +#### `DATABASE_URL` + +- Type: `str` +- Default: `sqlite:///${DATA_DIR}/webui.db` +- Description: Specifies the database URL to connect to. + +:::info +Supports SQLite and Postgres. Changing the URL does not migrate data between databases. +Documentation on URL scheme available [here](https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls). +::: + +#### `DATABASE_POOL_SIZE` + +- Type: `int` +- Default: `0` +- Description: Specifies the size of the database pool. A value of `0` disables pooling. + +#### `DATABASE_POOL_MAX_OVERFLOW` + +- Type: `int` +- Default: `0` +- Description: Specifies the database pool max overflow. + +:::info +More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.max_overflow). +::: + +#### `DATABASE_POOL_TIMEOUT` + +- Type: `int` +- Default: `30` +- Description: Specifies the database pool timeout in seconds to get a connection. + +:::info +More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.timeout). +::: + +#### `DATABASE_POOL_RECYCLE` + +- Type: `int` +- Default: `3600` +- Description: Specifies the database pool recycle time in seconds. + +:::info +More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#setting-pool-recycle). +::: + +## OAuth #### `ENABLE_OAUTH_SIGNUP` - Type: `bool` - Default: `False` -- Description: Enables user account creation via OAuth. +- Description: Enables user account creation via OAuth. Distinct from `ENABLE_SIGNUP`. + +#### `ENABLE_API_KEY` + +- Type: `bool` +- Default: `False` +- Description: Enables API key authentication. + +#### `ENABLE_OAUTH_ROLE_MANAGEMENT` + +- Type: `bool` +- Default: `False` +- Description: Enables role management to oauth delegation. #### `OAUTH_MERGE_ACCOUNTS_BY_EMAIL` - Type: `bool` - Default: `False` - Description: If enabled, merges OAuth accounts with existing accounts using the same email -address. This is considered unsafe as providers may not verify email addresses and can lead to -account takeovers. +address. This is considered unsafe as not all OAuth providers will verify email addresses and can lead to +potential account takeovers. #### `OAUTH_USERNAME_CLAIM` @@ -1062,12 +1216,6 @@ account takeovers. - Default: `SSO` - Description: Sets the name for the OIDC provider. -#### `ENABLE_OAUTH_ROLE_MANAGEMENT` - -- Type: `bool` -- Default: `False` -- Description: Enables role management to oauth delegation. - #### `OAUTH_ROLES_CLAIM` - Type: `str` @@ -1143,33 +1291,110 @@ account takeovers. - Type: `str` - Description: Sets the redirect URI for OIDC -### Tools +## LDAP -#### `TOOLS_DIR` - -- Type: `str` -- Default: `${DATA_DIR}/tools` -- Description: Specifies the directory for custom tools. - -### Redis - -#### `ENABLE_WEBSOCKET_SUPPORT` +#### `ENABLE_LDAP` - Type: `bool` -- Default: `False` -- Description: Enables websocket support in Open WebUI (used with Redis). +- Description: Enables or disables LDAP authentication. -#### `WEBSOCKET_MANAGER` +#### `LDAP_APP_DN` - Type: `str` -- Default: `redis` -- Description: Specifies the websocket manager to use (in this case, Redis). +- Description: Sets the distinguished name for LDAP application. -#### `WEBSOCKET_REDIS_URL` +#### `LDAP_APP_PASSWORD` - Type: `str` -- Default: `redis://localhost:6379/0` -- Description: Specifies the URL of the Redis instance for websocket communication. +- Description: Sets the password for LDAP application. + +#### `LDAP_ATTRIBUTE_FOR_USERNAME` + +- Type: `str` +- Description: Sets the attribute to use as username for LDAP authentication. + +#### `LDAP_CA_CERT_FILE` + +- Type: `str` +- Description: Sets the path to LDAP CA certificate file. + +#### `LDAP_CIPHERS` + +- Type: `str` +- Description: Sets the ciphers to use for LDAP connection. + +#### `LDAP_SEARCH_BASE` + +- Type: `str` +- Description: Sets the base to search for LDAP authentication. + +#### `LDAP_SEARCH_FILTER` + +- Type: `str` +- Description: Sets the filter to use for LDAP search. + +#### `LDAP_SERVER_HOST` + +- Type: `str` +- Description: Sets the hostname of LDAP server. + +#### `LDAP_SERVER_LABEL` + +- Type: `str` +- Description: Sets the label of LDAP server. + +#### `LDAP_SERVER_PORT` + +- Type: `int` +- Description: Sets the port number of LDAP server. + +#### `LDAP_USE_TLS` + +- Type: `bool` +- Description: Enables or disables TLS for LDAP connection. + +## User Permissions + +#### `USER_PERMISSIONS_CHAT_TEMPORARY` + +- Type: `bool` +- Default: `True` +- Description: Enables or disables user permission to create temporary chats. + +#### `USER_PERMISSIONS_CHAT_DELETE` + +- Type: `bool` +- Description: Enables or disables user permission to delete chats. + +#### `USER_PERMISSIONS_CHAT_EDIT` + +- Type: `bool` +- Description: Enables or disables user permission to edit chats. + +#### `USER_PERMISSIONS_CHAT_FILE_UPLOAD` + +- Type: `bool` +- Description: Enables or disables user permission to upload files to chats. + +#### `USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS` + +- Type: `bool` +- Description: Enables or disables user permission to access workspace knowledge. + +#### `USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS` + +- Type: `bool` +- Description: Enables or disables user permission to access workspace models. + +#### `USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS` + +- Type: `bool` +- Description: Enables or disables user permission to access workspace prompts. + +#### `USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS` + +- Type: `bool` +- Description: Enables or disables user permission to access workspace tools. ## Misc Environment Variables @@ -1196,3 +1421,55 @@ Open WebUI uses the following environment variables: - Description: Lists domain extensions (or IP addresses) for which the proxy should not be used, separated by commas. For example, setting no_proxy to '.mit.edu' ensures that the proxy is bypassed when accessing documents from MIT. + +### Redis + +#### `ENABLE_WEBSOCKET_SUPPORT` + +- Type: `bool` +- Default: `False` +- Description: Enables websocket support in Open WebUI (used with Redis). + +#### `WEBSOCKET_MANAGER` + +- Type: `str` +- Default: `redis` +- Description: Specifies the websocket manager to use (in this case, Redis). + +#### `WEBSOCKET_REDIS_URL` + +- Type: `str` +- Default: `redis://localhost:6379/0` +- Description: Specifies the URL of the Redis instance for websocket communication. + +### S3 Storage Provider + +#### `STORAGE_PROVIDER` + +- Type: `str` +- Description: Sets the storage provider. + +#### `S3_ACCESS_KEY_ID` + +- Type: `str` +- Description: Sets the access key ID for S3 storage. + +#### `S3_BUCKET_NAME` + +- Type: `str` +- Description: Sets the bucket name for S3 storage. + +#### `S3_ENDPOINT_URL` + +- Type: `str` +- Description: Sets the endpoint URL for S3 storage. + +#### `S3_REGION_NAME` + +- Type: `str` +- Description: Sets the region name for S3 storage. + +#### `S3_SECRET_ACCESS_KEY` + +- Type: `str` +- Description: Sets the secret access key for S3 storage. diff --git a/docs/getting-started/advanced-topics/index.mdx b/docs/getting-started/advanced-topics/index.mdx index 08fda03..0a93b25 100644 --- a/docs/getting-started/advanced-topics/index.mdx +++ b/docs/getting-started/advanced-topics/index.mdx @@ -39,5 +39,4 @@ Get essential information for API integration and automation using our models. --- -Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start). -Need to explore core features? Check out [Using OpenWebUI](/getting-started/using-openwebui). +Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start). \ No newline at end of file diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 45aa01e..32b06ad 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -15,12 +15,6 @@ Get up and running quickly with our [Quick Start Guide](./quick-start). --- -## 📚 Using OpenWebUI - -Learn the basics and explore key concepts in our [Using OpenWebUI Guide](./using-openwebui). - ---- - ## 🛠️ Advanced Topics Take a deeper dive into configurations and development tips in our [Advanced Topics Guide](./advanced-topics). diff --git a/docs/getting-started/quick-start/index.mdx b/docs/getting-started/quick-start/index.mdx index bc37704..3454497 100644 --- a/docs/getting-started/quick-start/index.mdx +++ b/docs/getting-started/quick-start/index.mdx @@ -140,7 +140,7 @@ After installing, visit: - [http://localhost:3000](http://localhost:3000) to access OpenWebUI. - or [http://localhost:8080/](http://localhost:8080/) when using a Python deployment. -You are now ready to start **[Using OpenWebUI](../using-openwebui/index.mdx)**! +You are now ready to start using OpenWebUI! ## Join the Community diff --git a/docs/getting-started/quick-start/tab-docker/DockerUpdating.md b/docs/getting-started/quick-start/tab-docker/DockerUpdating.md index 459540d..4abc595 100644 --- a/docs/getting-started/quick-start/tab-docker/DockerUpdating.md +++ b/docs/getting-started/quick-start/tab-docker/DockerUpdating.md @@ -1,101 +1,35 @@ -## Why isn't my Open WebUI updating? +## Updating -To update your local Docker installation of Open WebUI to the latest version available, you can either use **Watchtower** or manually update the container. Follow either of the steps provided below to be guided through updating your existing Open WebUI image. +To update your local Docker installation to the latest version, you can either use **Watchtower** or manually update the container. -### Manual Update +### Option 1: Using Watchtower -1. **Stop and remove the current container**: - - This will stop the running container and remove it, but it won't delete the data stored in the Docker volume. (Replace `open-webui` with your container's name throughout the updating process if it's different for you.) - -```bash -docker rm -f open-webui -``` - -2. **Pull the latest Docker image**: - - This will update the Docker image, but it won't update the running container or its data. - -```bash -docker pull ghcr.io/open-webui/open-webui:main -``` - -3. **Remove any existing data in the Docker volume (NOT RECOMMENDED UNLESS ABSOLUTELY NECCESSARY!)**. Skip this step entirely if not needed and move on to the last step: - - If you want to start with a clean slate, you can remove the existing data in the Docker volume. Be careful, as this will delete all your chat histories and other data. - - The data is stored in a Docker volume named `open-webui`. You can remove it with the following command: - -```bash -docker volume rm open-webui -``` - -4. **Start the container again with the updated image and existing volume attached**: - - If you didn't remove the existing data, this will start the container with the updated image and the existing data. If you removed the existing data, this will start the container with the updated image and a new, empty volume. **For Nvidia GPU support, add `--gpus all` to the docker run command** - -```bash -docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main -``` - -## Automatically Updating Open WebUI with Watchtower - -You can use [Watchtower](https://containrrr.dev/watchtower/) to automate the update process for Open WebUI. Here are three options: - -### Option 1: One-time Update - -You can run Watchtower as a one-time update to stop the current container, pull the latest image, and start a new container with the updated image and existing volume attached (**For Nvidia GPU support, add `--gpus all` to the docker run command**): +With [Watchtower](https://containrrr.dev/watchtower/), you can automate the update process: ```bash docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui ``` -### Option 2: Running Watchtower as a Separate Container +_(Replace `open-webui` with your container's name if it's different.)_ -You can run Watchtower as a separate container that watches and updates your Open WebUI container: +### Option 2: Manual Update -```bash -docker run -d --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower -i 300 open-webui -``` +1. Stop and remove the current container: -This will start Watchtower in detached mode, watching your Open WebUI container for updates every 5 minutes. + ```bash + docker rm -f open-webui + ``` -### Option 3: Integrating Watchtower with a `docker-compose.yml` File +2. Pull the latest version: -You can also integrate Watchtower with your `docker-compose.yml` file to automate updates for Open WebUI (**For Nvidia GPU support, add `--gpus all` to the docker run command**): + ```bash + docker pull ghcr.io/open-webui/open-webui:main + ``` -```yml -version: '3' -services: - open-webui: - image: ghcr.io/open-webui/open-webui:main - ports: - - "3000:8080" - volumes: - - open-webui:/app/backend/data +3. Start the container again: - watchtower: - image: containrrr/watchtower - volumes: - - /var/run/docker.sock:/var/run/docker.sock - command: --interval 300 open-webui - depends_on: - - open-webui + ```bash + docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main + ``` -volumes: - open-webui: -``` - -In this example, Watchtower is integrated with the `docker-compose.yml` file and watches the Open WebUI container for updates every 5 minutes. - -## Persistent Data in Docker Volumes - -The data is stored in a Docker volume named `open-webui`. The path to the volume is not directly accessible, but you can inspect the volume with the following command: - -```bash -docker volume inspect open-webui -``` - -This will show you the details of the volume, including the mountpoint, which is usually located in `/var/lib/docker/volumes/open-webui/_data`. +Both methods will get your Docker instance updated and running with the latest build. diff --git a/docs/getting-started/updating.mdx b/docs/getting-started/updating.mdx new file mode 100644 index 0000000..07c92a7 --- /dev/null +++ b/docs/getting-started/updating.mdx @@ -0,0 +1,111 @@ +--- +sidebar_position: 300 +title: "🔄 Updating Open WebUI" +--- + + + +## Why isn't my Open WebUI updating? + +To update your local Docker installation of Open WebUI to the latest version available, you can either use **Watchtower** or manually update the container. Follow either of the steps provided below to be guided through updating your existing Open WebUI image. + +### Manual Update + +1. **Stop and remove the current container**: + + This will stop the running container and remove it, but it won't delete the data stored in the Docker volume. (Replace `open-webui` with your container's name throughout the updating process if it's different for you.) + +```bash +docker rm -f open-webui +``` + +2. **Pull the latest Docker image**: + + This will update the Docker image, but it won't update the running container or its data. + +```bash +docker pull ghcr.io/open-webui/open-webui:main +``` + + +:::info +**Remove any existing data in the Docker volume (NOT RECOMMENDED UNLESS ABSOLUTELY NECCESSARY!)**. Skip this step entirely if not needed and move on to the last step: + + If you want to start with a clean slate, you can remove the existing data in the Docker volume. Be careful, as this will delete all your chat histories and other data. + + The data is stored in a Docker volume named `open-webui`. You can remove it with the following command: + +```bash +docker volume rm open-webui +``` +::: + +3. **Start the container again with the updated image and existing volume attached**: + + If you didn't remove the existing data, this will start the container with the updated image and the existing data. If you removed the existing data, this will start the container with the updated image and a new, empty volume. **For Nvidia GPU support, add `--gpus all` to the docker run command** + +```bash +docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main +``` + +## Automatically Updating Open WebUI with Watchtower + +You can use [Watchtower](https://containrrr.dev/watchtower/) to automate the update process for Open WebUI. Here are three options: + +### Option 1: One-time Update + +You can run Watchtower as a one-time update to stop the current container, pull the latest image, and start a new container with the updated image and existing volume attached (**For Nvidia GPU support, add `--gpus all` to the docker run command**): + +```bash +docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui +``` + +### Option 2: Running Watchtower as a Separate Container + +You can run Watchtower as a separate container that watches and updates your Open WebUI container: + +```bash +docker run -d --name watchtower \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower -i 300 open-webui +``` + +This will start Watchtower in detached mode, watching your Open WebUI container for updates every 5 minutes. + +### Option 3: Integrating Watchtower with a `docker-compose.yml` File + +You can also integrate Watchtower with your `docker-compose.yml` file to automate updates for Open WebUI (**For Nvidia GPU support, add `--gpus all` to the docker run command**): + +```yml +version: '3' +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + ports: + - "3000:8080" + volumes: + - open-webui:/app/backend/data + + watchtower: + image: containrrr/watchtower + volumes: + - /var/run/docker.sock:/var/run/docker.sock + command: --interval 300 open-webui + depends_on: + - open-webui + +volumes: + open-webui: +``` + +In this example, Watchtower is integrated with the `docker-compose.yml` file and watches the Open WebUI container for updates every 5 minutes. + +## Persistent Data in Docker Volumes + +The data is stored in a Docker volume named `open-webui`. The path to the volume is not directly accessible, but you can inspect the volume with the following command: + +```bash +docker volume inspect open-webui +``` + +This will show you the details of the volume, including the mountpoint, which is usually located in `/var/lib/docker/volumes/open-webui/_data`. diff --git a/docs/getting-started/using-openwebui/index.mdx b/docs/getting-started/using-openwebui/index.mdx deleted file mode 100644 index 5ce08f6..0000000 --- a/docs/getting-started/using-openwebui/index.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 3 -title: "🧑‍💻 Using OpenWebUI" ---- - -# Using OpenWebUI - -Explore the essential concepts and features of Open WebUI, including models, knowledge, prompts, pipes, actions, and more. - ---- - -## 🌐 Additional Resources and Integrations -Find community tools, integrations, and official resources. -[Additional Resources Guide](./resources) - -## 📖 Community Tutorials -If you like the documentation you are reading right now, then check out this tutorial on [Configuring RAG with OpenWebUI Documentation](../../tutorials/tips/rag-tutorial.md). -Then go on to explore other community-submitted tutorials to enhance your OpenWebUI experience. -[Explore Community Tutorials](/category/-tutorials) - ---- - -Stay tuned for more updates as we continue to expand these sections! \ No newline at end of file diff --git a/docs/getting-started/using-openwebui/resources.mdx b/docs/getting-started/using-openwebui/resources.mdx deleted file mode 100644 index 2bf1a3f..0000000 --- a/docs/getting-started/using-openwebui/resources.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -sidebar_position: 4 -title: "🌐 Additional Resources" ---- - -# 🌐 Additional Resources - -Explore more resources, community tools, and integration options to make the most out of Open WebUI. - ---- - -## 🔥 Open WebUI Website -Visit [Open WebUI](https://openwebui.com/) for official documentation, tools, and resources: -- **Leaderboard**: Check out the latest high-ranking models, tools, and integrations. -- **Featured Models and Tools**: Discover models and tools created by community members. -- **New Integrations**: Find newly released integrations, plugins, and models to expand your setup. - ---- - -## 🌍 Community Platforms -Connect with the Open WebUI community for support, tips, and discussions. - -- **Discord**: Join our community on Discord to chat with other users, ask questions, and stay updated. - [Join the Discord Server](https://discord.com/invite/5rJgQTnV4s) -- **Reddit**: Follow the Open WebUI subreddit for announcements, discussions, and user-submitted content. - [Visit Reddit Community](https://www.reddit.com/r/OpenWebUI/) -- **GitHub Community**: Participate in discussions, propose feature requests, and report issues specific to the Open WebUI Community Platform website. - [Explore the GitHub Community](https://github.com/open-webui/community) - ---- - -## 📖 Tutorials and User Guides -Explore community-created tutorials to enhance your Open WebUI experience: -- [Explore Community Tutorials](/category/-tutorials) -- Learn how to configure RAG and advanced integrations with the [RAG Configuration Guide](../../tutorials/tips/rag-tutorial.md). - ---- - -Stay connected and make the most out of Open WebUI through these community resources and integrations! diff --git a/docs/roadmap.mdx b/docs/roadmap.mdx index a2a0b97..f1236b2 100644 --- a/docs/roadmap.mdx +++ b/docs/roadmap.mdx @@ -20,7 +20,11 @@ Our roadmap for interface innovations aims to create a highly intuitive and acce - 📈 **Advanced User Tracking and Cost Management Tools**: Users will gain access to comprehensive tools designed for tracking application performance and user activities, as well as managing costs effectively. These tools will empower users with the data they need to make informed decisions, improve user experiences, and maintain budget control, optimizing the use of resources across their AI applications. -- 💬 **"Channels" Feature**: Integrating a built-in chat solution for Open WebUI users that includes AI moderation and assistance capabilities can significantly enhance user engagement and provide timely assistance, improving overall user satisfaction and retention. +- 💬 **"Channels" Feature**: Channels will function like Discord/Slack chat rooms, facilitating real-time collaboration among users and AIs. These dedicated communication spaces can host human-to-human interactions or AI-assisted discussions, fostering dynamic and context-driven collaboration. As we transition towards multi-agent and proactive agent workflows, true asynchronous communication will be essential, and Open WebUI will provide a Bot SDK tutorial to empower users in building proactive AI agents that can initiate conversations and integrate seamlessly into the platform. + +- 👤 **User Page**: A personal User Page feature where users can create posts. The functionality will also include features like followers, likes, and comments. This allows users to effectively share their model configurations, prompts, and files with a broader community, creating a richer, more connected ecosystem around the platform. + +- 📝 **AI Powered Notes**: Inspired by tools like Notion and Obsidian, we plan to introduce a robust note-taking feature that includes AI integration. From simple note-taking to full-fledged document creation, this tool will offer a seamless experience, all locally integrated within the platform. - 🧠 **AI Workflow Tool**: A node-based tool to orchestrate and compose multiple aspects of AI systems. This tool will allow users to visually connect different AI modules and services, creating complex workflows with ease. It's designed to empower users to harness the full potential of AI without needing deep technical knowledge in AI programming. diff --git a/docs/tutorials/integrations/images.md b/docs/tutorials/integrations/images.md index 15f44e3..b9721e3 100644 --- a/docs/tutorials/integrations/images.md +++ b/docs/tutorials/integrations/images.md @@ -114,6 +114,7 @@ To integrate ComfyUI into Open WebUI, follow these steps: 3. Return to Open WebUI and click the **Click here to upload a workflow.json file** button. 4. Select the `workflow_api.json` file to import the exported workflow from ComfyUI into Open WebUI. 5. After importing the workflow, you must map the `ComfyUI Workflow Nodes` according to the imported workflow node IDs. +6. Set `Set Default Model` to the name of the model file being used, such as `flux1-dev.safetensors` :::info You may need to adjust an `Input Key` or two within Open WebUI's `ComfyUI Workflow Nodes` section to match a node within your workflow. diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index 69bcb8f..37592cb 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -500,6 +500,12 @@ Coming Soon ## Bing API -Coming Soon - ### Setup + +1. Navigate to the [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) and create a new resource. After creation, you’ll be redirected to the resource overview page. From there, select "Click here to manage keys." ![click here to manage keys](https://github.com/user-attachments/assets/dd2a3c67-d6a7-4198-ba54-67a3c8acff6d) +2. On the key management page, locate Key1 or Key2 and copy your desired key. +3. Open the Open WebUI Admin Panel, switch to the Settings tab, and then select Web Search. +4. Enable the Web search option and set the Web Search Engine to bing. +5. Fill `SearchApi API Key` with the `API key` that you copied in step 2 from [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) dashboard. +6. Click `Save`. + From 2d4e0ef51ff9aba733767c17032fe6dd5fcf4cad Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:58:45 -0500 Subject: [PATCH 13/13] Revert "Squashed commit of the following:" This reverts commit 9cdd0c0284556670f1c5bc6215de9fec6e87e136. --- .../{playground => playgroundbeta}/chat.md | 0 .../completions.md | 0 .../{playground => playgroundbeta}/index.mdx | 0 .../assign-user.md | 0 .../default-perms.md | 0 .../{user-groups => usergroups}/index.mdx | 0 .../providing-access.md | 0 .../usergroup-perms.md | 0 docs/features/whitelist.md | 25 + .../advanced-topics/env-configuration.md | 1205 +++++++---------- .../getting-started/advanced-topics/index.mdx | 3 +- docs/getting-started/index.md | 6 + docs/getting-started/quick-start/index.mdx | 2 +- .../quick-start/tab-docker/DockerUpdating.md | 104 +- docs/getting-started/updating.mdx | 111 -- .../getting-started/using-openwebui/index.mdx | 23 + .../using-openwebui/resources.mdx | 39 + docs/roadmap.mdx | 6 +- docs/tutorials/integrations/images.md | 1 - docs/tutorials/integrations/web_search.md | 10 +- 20 files changed, 648 insertions(+), 887 deletions(-) rename docs/features/{playground => playgroundbeta}/chat.md (100%) rename docs/features/{playground => playgroundbeta}/completions.md (100%) rename docs/features/{playground => playgroundbeta}/index.mdx (100%) rename docs/features/{user-groups => usergroups}/assign-user.md (100%) rename docs/features/{user-groups => usergroups}/default-perms.md (100%) rename docs/features/{user-groups => usergroups}/index.mdx (100%) rename docs/features/{user-groups => usergroups}/providing-access.md (100%) rename docs/features/{user-groups => usergroups}/usergroup-perms.md (100%) create mode 100644 docs/features/whitelist.md delete mode 100644 docs/getting-started/updating.mdx create mode 100644 docs/getting-started/using-openwebui/index.mdx create mode 100644 docs/getting-started/using-openwebui/resources.mdx diff --git a/docs/features/playground/chat.md b/docs/features/playgroundbeta/chat.md similarity index 100% rename from docs/features/playground/chat.md rename to docs/features/playgroundbeta/chat.md diff --git a/docs/features/playground/completions.md b/docs/features/playgroundbeta/completions.md similarity index 100% rename from docs/features/playground/completions.md rename to docs/features/playgroundbeta/completions.md diff --git a/docs/features/playground/index.mdx b/docs/features/playgroundbeta/index.mdx similarity index 100% rename from docs/features/playground/index.mdx rename to docs/features/playgroundbeta/index.mdx diff --git a/docs/features/user-groups/assign-user.md b/docs/features/usergroups/assign-user.md similarity index 100% rename from docs/features/user-groups/assign-user.md rename to docs/features/usergroups/assign-user.md diff --git a/docs/features/user-groups/default-perms.md b/docs/features/usergroups/default-perms.md similarity index 100% rename from docs/features/user-groups/default-perms.md rename to docs/features/usergroups/default-perms.md diff --git a/docs/features/user-groups/index.mdx b/docs/features/usergroups/index.mdx similarity index 100% rename from docs/features/user-groups/index.mdx rename to docs/features/usergroups/index.mdx diff --git a/docs/features/user-groups/providing-access.md b/docs/features/usergroups/providing-access.md similarity index 100% rename from docs/features/user-groups/providing-access.md rename to docs/features/usergroups/providing-access.md diff --git a/docs/features/user-groups/usergroup-perms.md b/docs/features/usergroups/usergroup-perms.md similarity index 100% rename from docs/features/user-groups/usergroup-perms.md rename to docs/features/usergroups/usergroup-perms.md diff --git a/docs/features/whitelist.md b/docs/features/whitelist.md new file mode 100644 index 0000000..343f2b1 --- /dev/null +++ b/docs/features/whitelist.md @@ -0,0 +1,25 @@ +--- +sidebar_position: 12 +title: "📝 Model Whitelisting" +--- + +Open WebUI allows you to filter specific models for use in your instance. This feature is especially useful for administrators who want to control which models are available to users. Filtering can be done through the WebUI or by adding environment variables to the backend. + +## Filtering via WebUI + +![Model Filter Configuration](/img/tutorial_model_filter.png) + +1. Go to **Admin Panel > Settings > Users**. +2. In the **Manage Models** section, you can enable or disable the model whitelisting feature, and add or remove models from the whitelist. +3. Click **Save** to apply your changes. + +## Filtering via Environment Variables + +You can also whitelist models by adding environment variables to the backend. This method is useful for automated deployments and can be done by adding the following environment variables to your `docker run` command: + +```bash +-e ENABLE_MODEL_FILTER=True \ +-e MODEL_FILTER_LIST="llama2:13b;mistral:latest;gpt-3.5-turbo" \ +``` + +In this example, the `ENABLE_MODEL_FILTER` variable is set to `True` to enable the feature, and the `MODEL_FILTER_LIST` variable lists the models to be whitelisted. The format for the `MODEL_FILTER_LIST` variable is `model_name:version;model_name:version;...`. diff --git a/docs/getting-started/advanced-topics/env-configuration.md b/docs/getting-started/advanced-topics/env-configuration.md index b3729ef..e4c3550 100644 --- a/docs/getting-started/advanced-topics/env-configuration.md +++ b/docs/getting-started/advanced-topics/env-configuration.md @@ -6,13 +6,12 @@ title: "🌍 Environment Variable Configuration" ## Overview -Open WebUI provides a large range of environment variables that allow you to customize and configure +Open WebUI provides a range of environment variables that allow you to customize and configure various aspects of the application. This page serves as a comprehensive reference for all available -environment variables, providing their types, default values, and descriptions. -As new variables are introduced, this page will be updated to reflect the growing configuration options. +environment variables, including their types, default values, and descriptions. :::info -This page is up to date with Open Web UI release version [v0.4.8](https://github.com/open-webui/open-webui/releases/tag/v0.4.8), but is still a work in progress to later include more accurate descriptions, listing out options available for environment variables, defaults, and improving descriptions. +Last updated: v0.3.20 ::: ## App/Backend @@ -38,7 +37,7 @@ environment variables, see our [logging documentation](https://docs.openwebui.co #### `WEBUI_AUTH` - Type: `bool` -- Default: `True` +- Default Setting: `True` - Description: This setting enables or disables authentication. :::danger @@ -64,8 +63,7 @@ directly. Ensure that no users are present in the database, if you intend to tur - Type: `int` - Default: `300` -- Description: Specifies the timeout duration in seconds for the aiohttp client. This impacts things -such as connections to Ollama and OpenAI endpoints. +- Description: Specifies the timeout duration in seconds for the aiohttp client. :::info This is the maximum amount of time the client will wait for a response before timing out. @@ -73,6 +71,24 @@ If set to an empty string (' '), the timeout will be set to `None`, effectively allowing the client to wait indefinitely. ::: +#### `DATA_DIR` + +- Type: `str` +- Default: `./data` +- Description: Specifies the base directory for data storage, including uploads, cache, vector database, etc. + +#### `FRONTEND_BUILD_DIR` + +- Type: `str` +- Default: `../build` +- Description: Specifies the location of the built frontend files. + +#### `STATIC_DIR` + +- Type: `str` +- Default: `./static` +- Description: Specifies the directory for static files, such as the favicon. + #### `CUSTOM_NAME` - Type: `str` @@ -95,6 +111,62 @@ This should **only** ever be set to `False` when [ENABLE_OAUTH_SIGNUP](https://d is also being used and set to `True`. Failure to do so will result in the inability to login. ::: +#### `ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION` + +- Type: `bool` +- Default: `True` +- Description: Bypass SSL Verification for RAG on Websites. + +#### `DEFAULT_MODELS` + +- Type: `str` +- Description: Sets a default Language Model. + +#### `DEFAULT_USER_ROLE` + +- Type: `str` (enum: `pending`, `user`, `admin`) +- Options: + - `pending` - New users are pending until their accounts are manually activated by an admin. + - `user` - New users are automatically activated with regular user permissions. + - `admin` - New users are automatically activated with administrator permissions. +- Default: `pending` +- Description: Sets the default role assigned to new users. + +#### `USER_PERMISSIONS_CHAT_DELETION` + +- Type: `bool` +- Default: `True` +- Description: Toggles user permission to delete chats. + +#### `USER_PERMISSIONS_CHAT_EDITING` + +- Type: `bool` +- Default: `True` +- Description: Toggles user permission to edit chats. + +#### `USER_PERMISSIONS_CHAT_TEMPORARY` + +- Type: `bool` +- Default: `True` +- Description: Toggles user permission to create temporary chats. + +#### `ENABLE_MODEL_FILTER` + +- Type: `bool` +- Default: `False` +- Description: Toggles Language Model filtering. + +#### `MODEL_FILTER_LIST` + +- Type: `str` +- Description: Sets the Language Model filter list, semicolon-separated +- Example: `llama3.1:instruct;gemma2:latest` + +#### `WEBHOOK_URL` + +- Type: `str` +- Description: Sets a webhook for integration with Slack/Microsoft Teams. + #### `ENABLE_ADMIN_EXPORT` - Type: `bool` @@ -119,36 +191,6 @@ is also being used and set to `True`. Failure to do so will result in the inabil - Default: `True` - Description: Enables message rating feature. -#### `OFFLINE_MODE` - -- Type: `bool` -- Description: Enables or disables offline mode. - -#### `DEFAULT_MODELS` - -- Type: `str` -- Description: Sets a default Language Model. - -#### `BYPASS_MODEL_ACCESS_CONTROL` - -- Type: `bool` -- Description: Bypasses model access control. - -#### `DEFAULT_USER_ROLE` - -- Type: `str` (enum: `pending`, `user`, `admin`) -- Options: - - `pending` - New users are pending until their accounts are manually activated by an admin. - - `user` - New users are automatically activated with regular user permissions. - - `admin` - New users are automatically activated with administrator permissions. -- Default: `pending` -- Description: Sets the default role assigned to new users. - -#### `WEBHOOK_URL` - -- Type: `str` -- Description: Sets a webhook for integration with Slack/Microsoft Teams. - #### `WEBUI_BUILD_HASH` - Type: `str` @@ -196,6 +238,53 @@ is also being used and set to `True`. Failure to do so will result in the inabil - Description: Builds the Docker image with NVIDIA CUDA support. Enables GPU acceleration for local Whisper and embeddings. +#### `DATABASE_URL` + +- Type: `str` +- Default: `sqlite:///${DATA_DIR}/webui.db` +- Description: Specifies the database URL to connect to. + +:::info +Supports SQLite and Postgres. Changing the URL does not migrate data between databases. +Documentation on URL scheme available [here](https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls). +::: + +#### `DATABASE_POOL_SIZE` + +- Type: `int` +- Default: `0` +- Description: Specifies the size of the database pool. A value of `0` disables pooling. + +#### `DATABASE_POOL_MAX_OVERFLOW` + +- Type: `int` +- Default: `0` +- Description: Specifies the database pool max overflow. + +:::info +More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.max_overflow). +::: + +#### `DATABASE_POOL_TIMEOUT` + +- Type: `int` +- Default: `30` +- Description: Specifies the database pool timeout in seconds to get a connection. + +:::info +More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.timeout). +::: + +#### `DATABASE_POOL_RECYCLE` + +- Type: `int` +- Default: `3600` +- Description: Specifies the database pool recycle time in seconds. + +:::info +More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#setting-pool-recycle). +::: + #### `PORT` - Type: `int` @@ -206,12 +295,24 @@ for local Whisper and embeddings. If installed via Python, you must instead pass `--port` as a command line argument. ::: +#### `RESET_CONFIG_ON_START` + +- Type: `bool` +- Default: `False` +- Description: Resets the `config.json` file on startup. + #### `DEFAULT_LOCALE` - Type: `str` - Default: `en` - Description: Sets the default locale for the application. +#### `FUNCTIONS_DIR` + +- Type: `str` +- Default: `./functions` +- Description: Specifies the directory for custom functions. + #### `SHOW_ADMIN_DETAILS` - Type: `bool` @@ -223,36 +324,64 @@ If installed via Python, you must instead pass `--port` as a command line argume - Type: `str` - Description: Sets the admin email shown by `SHOW_ADMIN_DETAILS` +#### `SAFE_MODE` + +- Type: `bool` +- Default: `False` +- Description: Enables safe mode, which disables potentially unsafe features, deactivating all functions. + +#### `ENABLE_FORWARD_USER_INFO_HEADERS` + +- type: `bool` +- Default: `False` +- Description: Forwards user information (name, id, email, and role) as X-headers to OpenAI API. +If enabled, the following headers are forwarded: + - `X-OpenWebUI-User-Name` + - `X-OpenWebUI-User-Id` + - `X-OpenWebUI-User-Email` + - `X-OpenWebUI-User-Role` + +#### `WEBUI_SESSION_COOKIE_SAME_SITE` + +- Type: `str` (enum: `lax`, `strict`, `none`) +- Options: + - `lax` - Sets the `SameSite` attribute to lax, allowing session cookies to be sent with +requests initiated by third-party websites. + - `strict` - Sets the `SameSite` attribute to strict, blocking session cookies from being sent +with requests initiated by third-party websites. + - `none` - Sets the `SameSite` attribute to none, allowing session cookies to be sent with +requests initiated by third-party websites, but only over HTTPS. +- Default: `lax` +- Description: Sets the `SameSite` attribute for session cookies. + +#### `WEBUI_SESSION_COOKIE_SECURE` + +- Type: `bool` +- Default: `False` +- Description: Sets the `Secure` attribute for session cookies if set to `True`. + +#### `CONTENT_SECURITY_POLICY` + +- Type: `str` +- Description: Sets the `content-security-policy` HTTP header +- Example: `default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' https://* data:; child-src 'none'; font-src 'self' data:; worker-src 'self';` + +#### `AIOHTTP_CLIENT_TIMEOUT` + +- Type: `int` +- Description: Sets the timeout in seconds for internal aiohttp connections. This impacts things +such as connections to Ollama and OpenAI endpoints. + #### `AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST` - Type: `int` - Description: Sets the timeout in seconds for fetching the OpenAI model list. This can be useful in cases where network latency requires a longer timeout duration to successfully retrieve the model list. -### Directories - -#### `DATA_DIR` - -- Type: `str` -- Default: `./data` -- Description: Specifies the base directory for data storage, including uploads, cache, vector database, etc. - #### `FONTS_DIR` - Type: `str` - Description: Specifies the directory for fonts. -#### `FRONTEND_BUILD_DIR` - -- Type: `str` -- Default: `../build` -- Description: Specifies the location of the built frontend files. - -#### `STATIC_DIR` - -- Type: `str` -- Default: `./static` -- Description: Specifies the directory for static files, such as the favicon. - ### Ollama #### `ENABLE_OLLAMA_API` @@ -353,6 +482,22 @@ Artificial Intelligence in Healthcare Prompt: {{prompt:middletruncate:8000}} ``` +#### `SEARCH_QUERY_GENERATION_PROMPT_TEMPLATE` + +- Type: `str` +- Description: Prompt to use when generating search queries. +- Default: + +``` +Assess the need for a web search based on the current question and prior interactions, but lean towards suggesting a Google search query if uncertain. Generate a Google search query even when the answer might be straightforward, as additional information may enhance comprehension or provide updated data. If absolutely certain that no further information is required, return an empty string. Default to a search query if unsure or in doubt. Today's date is {{CURRENT_DATE}}. + +Current Question: +{{prompt:end:4000}} + +Interaction History: +{{MESSAGES:END:6}} +``` + #### `TOOLS_FUNCTION_CALLING_PROMPT_TEMPLATE` - Type: `str` @@ -363,137 +508,13 @@ Prompt: {{prompt:middletruncate:8000}} Available Tools: {{TOOLS}}\nReturn an empty string if no tools match the query. If a function tool matches, construct and return a JSON object in the format {\"name\": \"functionName\", \"parameters\": {\"requiredFunctionParamKey\": \"requiredFunctionParamValue\"}} using the appropriate tool and its parameters. Only return the object and limit the response to the JSON object without additional text. ``` -### Autocomplete - -#### `ENABLE_AUTOCOMPLETE_GENERATION` - -- Type: `bool` -- Description: Enables or disables autocomplete generation. - -#### `AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH` - -- Type: `int` -- Description: Sets the maximum input length for autocomplete generation. - -#### `AUTOCOMPLETE_GENERATION_PROMPT_TEMPLATE` - -- Type: `str` -- Description: Sets the prompt template for autocomplete generation. - -### Evaluation Arena Model - -#### `ENABLE_EVALUATION_ARENA_MODELS` - -- Type: `bool` -- Description: Enables or disables evaluation arena models. - -### Tags Generation - -#### `ENABLE_TAGS_GENERATION` - -- Type: `bool` -- Description: Enables or disables tags generation. - -#### `TAGS_GENERATION_PROMPT_TEMPLATE` - -- Type: `str` -- Description: Sets the prompt template for tags generation. - -## Security Variables - -#### `ENABLE_FORWARD_USER_INFO_HEADERS` - -- type: `bool` -- Default: `False` -- Description: Forwards user information (name, id, email, and role) as X-headers to OpenAI API. -If enabled, the following headers are forwarded: - - `X-OpenWebUI-User-Name` - - `X-OpenWebUI-User-Id` - - `X-OpenWebUI-User-Email` - - `X-OpenWebUI-User-Role` - -#### `ENABLE_RAG_LOCAL_WEB_FETCH` - -- Type: `bool` -- Default: `False` -- Description: Enables local web fetching for RAG. Enabling this allows Server Side Request -Forgery attacks against local network resources. - -#### `ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION` - -- Type: `bool` -- Default: `True` -- Description: Bypass SSL Verification for RAG on Websites. - -#### `WEBUI_SESSION_COOKIE_SAME_SITE` - -- Type: `str` (enum: `lax`, `strict`, `none`) -- Options: - - `lax` - Sets the `SameSite` attribute to lax, allowing session cookies to be sent with -requests initiated by third-party websites. - - `strict` - Sets the `SameSite` attribute to strict, blocking session cookies from being sent -with requests initiated by third-party websites. - - `none` - Sets the `SameSite` attribute to none, allowing session cookies to be sent with -requests initiated by third-party websites, but only over HTTPS. -- Default: `lax` -- Description: Sets the `SameSite` attribute for session cookies. - -#### `WEBUI_SESSION_COOKIE_SECURE` - -- Type: `bool` -- Default: `False` -- Description: Sets the `Secure` attribute for session cookies if set to `True`. - -#### `RESET_CONFIG_ON_START` - -- Type: `bool` -- Default: `False` -- Description: Resets the `config.json` file on startup. - -#### `SAFE_MODE` - -- Type: `bool` -- Default: `False` -- Description: Enables safe mode, which disables potentially unsafe features, deactivating all functions. - #### `CORS_ALLOW_ORIGIN` - Type: `str` - Default: `*` - Description: Sets the allowed origins for Cross-Origin Resource Sharing (CORS). -#### `RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE` - -- Type: `bool` -- Default: `False` -- Description: Determines whether or not to allow custom models defined on the Hub in their own modeling files. - -#### `RAG_RERANKING_MODEL_TRUST_REMOTE_CODE` - -- Type: `bool` -- Default: `False` -- Description: Determines whether or not to allow custom models defined on the Hub in their own -modeling files for reranking. - -#### `RAG_EMBEDDING_MODEL_AUTO_UPDATE` - -- Type: `bool` -- Default: `False` -- Description: Toggles automatic update of the Sentence-Transformer model. - -#### `RAG_RERANKING_MODEL_AUTO_UPDATE` - -- Type: `bool` -- Default: `False` -- Description: Toggles automatic update of the reranking model. - -#### `WHISPER_MODEL_AUTO_UPDATE` - -- Type: `bool` -- Default: `False` -- Description: Toggles automatic update of the Whisper model. - -## Retrieval Augmented Generation (RAG) +### RAG #### `VECTOR_DB` @@ -501,177 +522,6 @@ modeling files for reranking. - Default: `chroma` - Description: Specifies which vector database system to use, either 'chroma' for ChromaDB or 'milvus' for Milvus. This setting determines which vector storage system will be used for managing embeddings. -#### `RAG_EMBEDDING_ENGINE` - -- Type: `str` (enum: `ollama`, `openai`) -- Options: - - Leave empty for `Default (SentenceTransformers)` - Uses SentenceTransformers for embeddings. - - `ollama` - Uses the Ollama API for embeddings. - - `openai` - Uses the OpenAI API for embeddings. -- Description: Selects an embedding engine to use for RAG. - -#### `RAG_EMBEDDING_MODEL` - -- Type: `str` -- Default: `sentence-transformers/all-MiniLM-L6-v2` -- Description: Sets a model for embeddings. Locally, a Sentence-Transformer model is used. - -#### `ENABLE_RAG_HYBRID_SEARCH` - -- Type: `bool` -- Default: `False` -- Description: Enables the use of ensemble search with `BM25` + `ChromaDB`, with reranking using -`sentence_transformers` models. - -#### `CONTENT_EXTRACTION_ENGINE` - -- Type: `str` (`tika`) -- Options: - - Leave empty to use default - - `tika` - Use a local Apache Tika server -- Description: Sets the content extraction engine to use for document ingestion. - -#### `TIKA_SERVER_URL` - -- Type: `str` -- Default: `http://localhost:9998` -- Description: Sets the URL for the Apache Tika server. - -#### `RAG_TOP_K` - -- Type: `int` -- Default: `5` -- Description: Sets the default number of results to consider when using RAG. - -#### `RAG_RELEVANCE_THRESHOLD` - -- Type: `float` -- Default: `0.0` -- Description: Sets the relevance threshold to consider for documents when used with reranking. - -#### `RAG_TEMPLATE` - -- Type: `str` -- Default: - -``` -You are given a user query, some textual context and rules, all inside xml tags. You have to answer the query based on the context while respecting the rules. - - -[context] - - - -- If you don't know, just say so. -- If you are not sure, ask for clarification. -- Answer in the same language as the user query. -- If the context appears unreadable or of poor quality, tell the user then answer as best as you can. -- If the answer is not in the context but you think you know the answer, explain that to the user then answer with your own knowledge. -- Answer directly and without using xml tags. - - - -[query] - -``` - -- Description: Template to use when injecting RAG documents into chat completion - -#### `RAG_TEXT_SPLITTER` - -- Type: `str` -- Description: Sets the text splitter for RAG models. - -#### `TIKTOKEN_CACHE_DIR` - -- Type: `str` -- Description: Sets the directory for TikiToken cache. - -#### `TIKTOKEN_ENCODING_NAME` - -- Type: `str` -- Description: Sets the encoding name for TikiToken. - -#### `CHUNK_SIZE` - -- Type: `int` -- Default: `1500` -- Description: Sets the document chunk size for embeddings. - -#### `CHUNK_OVERLAP` - -- Type: `int` -- Default: `100` -- Description: Specifies how much overlap there should be between chunks. - -#### `PDF_EXTRACT_IMAGES` - -- Type: `bool` -- Default: `False` -- Description: Extracts images from PDFs using OCR when loading documents. - -#### `RAG_FILE_MAX_SIZE` - -- Type: `int` -- Default: `100` (100MB) -- Description: Sets the maximum size of a file that can be uploaded for document ingestion. - -#### `RAG_FILE_MAX_COUNT` - -- Type: `int` -- Default: `10` -- Description: Sets the maximum number of files that can be uploaded at once for document ingestion. - -#### `RAG_RERANKING_MODEL` - -- Type: `str` -- Description: Sets a model for reranking results. Locally, a Sentence-Transformer model is used. - -#### `RAG_OPENAI_API_BASE_URL` - -- Type: `str` -- Default: `${OPENAI_API_BASE_URL}` -- Description: Sets the OpenAI base API URL to use for RAG embeddings. - -#### `RAG_OPENAI_API_KEY` - -- Type: `str` -- Default: `${OPENAI_API_KEY}` -- Description: Sets the OpenAI API key to use for RAG embeddings. - -#### `RAG_EMBEDDING_OPENAI_BATCH_SIZE` - -- Type: `int` -- Default: `1` -- Description: Sets the batch size for OpenAI embeddings. - -#### `RAG_EMBEDDING_BATCH_SIZE` - -- Type: `int` -- Description: Sets the batch size for embedding in RAG (Retrieval-Augmented Generator) models. - -#### `RAG_OLLAMA_API_KEY` - -- Type: `str` -- Description: Sets the API key for Ollama API used in RAG models. - -#### `RAG_OLLAMA_BASE_URL` - -- Type: `str` -- Description: Sets the base URL for Ollama API used in RAG models. - -#### `ENABLE_RETRIEVAL_QUERY_GENERATION` - -- Type: `bool` -- Description: Enables or disables retrieval query generation. - -#### `QUERY_GENERATION_PROMPT_TEMPLATE` - -- Type: `str` -- Description: Sets the prompt template for query generation. - -### ChromaDB - #### `CHROMA_TENANT` - Type: `str` @@ -719,62 +569,186 @@ You are given a user query, some textual context and rules, all inside xml tags. - Description: Specifies auth credentials for remote ChromaDB Server. - Example: `username:password` -### Milvus - #### `MILVUS_URI` - Type: `str` - Default: `${DATA_DIR}/vector_db/milvus.db` - Description: Specifies the URI for connecting to the Milvus vector database. This can point to a local or remote Milvus server based on the deployment configuration. -### OpenSearch +#### `RAG_TOP_K` -#### `OPENSEARCH_CERT_VERIFY` +- Type: `int` +- Default: `5` +- Description: Sets the default number of results to consider when using RAG. + +#### `RAG_RELEVANCE_THRESHOLD` + +- Type: `float` +- Default: `0.0` +- Description: Sets the relevance threshold to consider for documents when used with reranking. + +#### `ENABLE_RAG_HYBRID_SEARCH` - Type: `bool` - Default: `False` -- Description: Enables or disables OpenSearch certificate verification. +- Description: Enables the use of ensemble search with `BM25` + `ChromaDB`, with reranking using +`sentence_transformers` models. -#### `OPENSEARCH_PASSWORD` - -- Type: `str` -- Description: Sets the password for OpenSearch. - -#### `OPENSEARCH_SSL` +#### `ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION` - Type: `bool` -- Description: Enables or disables SSL for OpenSearch. +- Default: `True` +- Description: Enables TLS certification verification when browsing web pages for RAG. -#### `OPENSEARCH_URI` +#### `RAG_EMBEDDING_ENGINE` + +- Type: `str` (enum: `ollama`, `openai`) +- Options: + - Leave empty for `Default (SentenceTransformers)` - Uses SentenceTransformers for embeddings. + - `ollama` - Uses the Ollama API for embeddings. + - `openai` - Uses the OpenAI API for embeddings. +- Description: Selects an embedding engine to use for RAG. + +#### `PDF_EXTRACT_IMAGES` + +- Type: `bool` +- Default: `False` +- Description: Extracts images from PDFs using OCR when loading documents. + +#### `RAG_EMBEDDING_MODEL` - Type: `str` -- Description: Sets the URI for OpenSearch. +- Default: `sentence-transformers/all-MiniLM-L6-v2` +- Description: Sets a model for embeddings. Locally, a Sentence-Transformer model is used. -#### `OPENSEARCH_USERNAME` +#### `RAG_EMBEDDING_MODEL_AUTO_UPDATE` + +- Type: `bool` +- Default: `False` +- Description: Toggles automatic update of the Sentence-Transformer model. + +#### `RAG_EMBEDDING_MODEL_TRUST_REMOTE_CODE` + +- Type: `bool` +- Default: `False` +- Description: Determines whether or not to allow custom models defined on the Hub in their own modeling files. + +#### `RAG_TEMPLATE` - Type: `str` -- Description: Sets the username for OpenSearch. +- Default: -### PGVector +``` +You are given a user query, some textual context and rules, all inside xml tags. You have to answer the query based on the context while respecting the rules. -#### `PGVECTOR_DB_URL` + +[context] + + + +- If you don't know, just say so. +- If you are not sure, ask for clarification. +- Answer in the same language as the user query. +- If the context appears unreadable or of poor quality, tell the user then answer as best as you can. +- If the answer is not in the context but you think you know the answer, explain that to the user then answer with your own knowledge. +- Answer directly and without using xml tags. + + + +[query] + +``` + +- Description: Template to use when injecting RAG documents into chat completion + +#### `RAG_RERANKING_MODEL` - Type: `str` -- Description: Sets the database URL for model storage. +- Description: Sets a model for reranking results. Locally, a Sentence-Transformer model is used. -### Qdrant +#### `RAG_RERANKING_MODEL_AUTO_UPDATE` -#### `QDRANT_API_KEY` +- Type: `bool` +- Default: `False` +- Description: Toggles automatic update of the reranking model. + +#### `RAG_RERANKING_MODEL_TRUST_REMOTE_CODE` + +- Type: `bool` +- Default: `False` +- Description: Determines whether or not to allow custom models defined on the Hub in their own +modeling files for reranking. + +#### `RAG_OPENAI_API_BASE_URL` - Type: `str` -- Description: Sets the API key for Qdrant. +- Default: `${OPENAI_API_BASE_URL}` +- Description: Sets the OpenAI base API URL to use for RAG embeddings. -#### `QDRANT_URI` +#### `RAG_OPENAI_API_KEY` - Type: `str` -- Description: Sets the URI for Qdrant. +- Default: `${OPENAI_API_KEY}` +- Description: Sets the OpenAI API key to use for RAG embeddings. -## Web Search +#### `RAG_EMBEDDING_OPENAI_BATCH_SIZE` + +- Type: `int` +- Default: `1` +- Description: Sets the batch size for OpenAI embeddings. + +#### `ENABLE_RAG_LOCAL_WEB_FETCH` + +- Type: `bool` +- Default: `False` +- Description: Enables local web fetching for RAG. Enabling this allows Server Side Request +Forgery attacks against local network resources. + +#### `YOUTUBE_LOADER_LANGUAGE` + +- Type: `str` +- Default: `en` +- Description: Sets the language to use for YouTube video loading. + +#### `CHUNK_SIZE` + +- Type: `int` +- Default: `1500` +- Description: Sets the document chunk size for embeddings. + +#### `CHUNK_OVERLAP` + +- Type: `int` +- Default: `100` +- Description: Specifies how much overlap there should be between chunks. + +#### `CONTENT_EXTRACTION_ENGINE` + +- Type: `str` (`tika`) +- Options: + - Leave empty to use default + - `tika` - Use a local Apache Tika server +- Description: Sets the content extraction engine to use for document ingestion. + +#### `TIKA_SERVER_URL` + +- Type: `str` +- Default: `http://localhost:9998` +- Description: Sets the URL for the Apache Tika server. + +#### `RAG_FILE_MAX_COUNT` + +- Type: `int` +- Default: `10` +- Description: Sets the maximum number of files that can be uploaded at once for document ingestion. + +#### `RAG_FILE_MAX_SIZE` + +- Type: `int` +- Default: `100` (100MB) +- Description: Sets the maximum size of a file that can be uploaded for document ingestion. + +### Web Search #### `ENABLE_RAG_WEB_SEARCH` @@ -782,28 +756,27 @@ You are given a user query, some textual context and rules, all inside xml tags. - Default: `False` - Description: Enable web search toggle -#### `ENABLE_SEARCH_QUERY_GENERATION` +#### `ENABLE_SEARCH_QUERY` - Type: `bool` -- Description: Enables or disables search query generation. +- Default: `False` +- Description: Enables the generation of search queries from prompts #### `RAG_WEB_SEARCH_ENGINE` -- Type: `str` (enum: `searxng`, `google_pse`, `brave`, `kagi`, `mojeek`, `serpstack`, `serper`, `serply`, `searchapi`, `duckduckgo`, `tavily`, `jina`, `bing`) +- Type: `str` (enum: `searxng`, `google_pse`, `brave`, `serpstack`, `serper`, `serply`, `searchapi`, `duckduckgo`, `tavily`, `jina`) - Options: - `searxng` - Uses the [SearXNG](https://github.com/searxng/searxng) search engine. - `google_pse` - Uses the [Google Programmable Search Engine](https://programmablesearchengine.google.com/about/). - `brave` - Uses the [Brave search engine](https://brave.com/search/api/). - - `kagi` - Uses the [Kagi](https://www.kagi.com/) search engine. - - `mojeek` - Uses the [Mojeek](https://www.mojeek.com/) search engine. - - `serpstack` - Uses the [Serpstack](https://serpstack.com/) search engine. - - `serper` - Uses the [Serper](https://serper.dev/) search engine. - - `serply` - Uses the [Serply](https://serply.io/) search engine. - - `searchapi` - Uses the [SearchAPI](https://www.searchapi.io/) search engine. - - `duckduckgo` - Uses the [DuckDuckGo](https://duckduckgo.com/) search engine. - - `tavily` - Uses the [Tavily](https://tavily.com/) search engine. - - `jina` - Uses the [Jina](https://jina.ai/) search engine. - - `bing` - Uses the [Bing](https://www.bing.com/) search engine. + - `serpstack` - Uses the [Serpstack search engine](https://serpstack.com/). + - `serper` - Uses the [Serper search engine](https://serper.dev/). + - `serply` - Uses the [Serply search engine](https://serply.io/). + - `searchapi` - Uses the [SearchAPI search engine](https://www.searchapi.io/). + - `duckduckgo` - Uses the [DuckDuckGo search engine](https://duckduckgo.com/). + - `tavily` - Uses the [Tavily search engine](https://tavily.com/). + - `jina` - Uses the [Jina search engine](https://jina.ai/). +- Description: Select engine for performing searches #### `SEARXNG_QUERY_URL` @@ -826,11 +799,6 @@ the search query. Example: `http://searxng.local/search?q=` - Type: `str` - Description: The API key for the Brave Search API. -#### `MOJEEK_SEARCH_API_KEY` - -- Type: `str` -- Description: Sets the API key for Mojiek Search API. - #### `SERPSTACK_API_KEY` - Type: `str` @@ -852,36 +820,11 @@ the search query. Example: `http://searxng.local/search?q=` - Type: `str` - Description: The API key for the Serply search API. -#### `SEARCHAPI_API_KEY` - -- Type: `str` -- Description: Sets the SearchAPI API key. - -#### `SEARCHAPI_ENGINE` - -- Type: `str` -- Description: Sets the SearchAPI engine. - #### `TAVILY_API_KEY` - Type: `str` - Description: The API key for the Tavily search API. -#### `JINA_API_KEY` - -- Type: `str` -- Description: Sets the API key for Jina. - -#### `BING_SEARCH_V7_ENDPOINT` - -- Type: `str` -- Description: Sets the endpoint for Bing Search API. - -#### `BING_SEARCH_V7_SUBSCRIPTION_KEY` - -- Type: `str` -- Description: Sets the subscription key for Bing Search API. - #### `RAG_WEB_SEARCH_RESULT_COUNT` - Type: `int` @@ -894,36 +837,17 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `10` - Description: Number of concurrent requests to crawl web pages returned from search results. -### YouTube Loader - -#### `YOUTUBE_LOADER_PROXY_URL` +#### `SEARCHAPI_API_KEY` - Type: `str` -- Description: Sets the proxy URL for YouTube loader. +- Description: Sets the SearchAPI API key. -#### `YOUTUBE_LOADER_LANGUAGE` +#### `SEARCHAPI_ENGINE` - Type: `str` -- Default: `en` -- Description: Sets the language to use for YouTube video loading. +- Description: Sets the SearchAPI engine. -## Audio - -### Whisper Speech-to-Text (Local) - -#### `WHISPER_MODEL` - -- Type: `str` -- Default: `base` -- Description: Sets the Whisper model to use for Speech-to-Text. The backend used is faster_whisper with quantization to `int8`. - -#### `WHISPER_MODEL_DIR` - -- Type: `str` -- Default: `${DATA_DIR}/cache/whisper/models` -- Description: Specifies the directory to store Whisper model files. - -### Speech-to-Text (OpenAI) +### Speech to Text #### `AUDIO_STT_ENGINE` @@ -933,12 +857,6 @@ the search query. Example: `http://searxng.local/search?q=` - `openai` - Uses OpenAI engine for Speech-to-Text. - Description: Specifies the Speech-to-Text engine to use. -#### `AUDIO_STT_MODEL` - -- Type: `str` -- Default: `whisper-1` -- Description: Specifies the Speech-to-Text model to use for OpenAI-compatible endpoints. - #### `AUDIO_STT_OPENAI_API_BASE_URL` - Type: `str` @@ -951,12 +869,31 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `${OPENAI_API_KEY}` - Description: Sets the OpenAI API key to use for Speech-to-Text. -### Text-to-Speech - -#### `AUDIO_TTS_API_KEY` +#### `AUDIO_STT_MODEL` - Type: `str` -- Description: Sets the API key for Text-to-Speech. +- Default: `whisper-1` +- Description: Specifies the Speech-to-Text model to use for OpenAI-compatible endpoints. + +#### `WHISPER_MODEL` + +- Type: `str` +- Default: `base` +- Description: Sets the Whisper model to use for Speech-to-Text. The backend used is faster_whisper with quantization to `int8`. + +#### `WHISPER_MODEL_DIR` + +- Type: `str` +- Default: `${DATA_DIR}/cache/whisper/models` +- Description: Specifies the directory to store Whisper model files. + +#### `WHISPER_MODEL_AUTO_UPDATE` + +- Type: `bool` +- Default: `False` +- Description: Toggles automatic update of the Whisper model. + +### Text to Speech #### `AUDIO_TTS_ENGINE` @@ -967,25 +904,10 @@ the search query. Example: `http://searxng.local/search?q=` - `openai` - Uses OpenAI engine for Text-to-Speech. - Description: Specifies the Text-to-Speech engine to use. -#### `AUDIO_TTS_MODEL` +#### `AUDIO_TTS_API_KEY` - Type: `str` -- Default: `tts-1` -- Description: Specifies the OpenAI text-to-speech model to use. - -### Azure Text-to-Speech - -#### `AUDIO_TTS_AZURE_SPEECH_OUTPUT_FORMAT` - -- Type: `str` -- Description: Sets the output format for Azure Text to Speech. - -#### `AUDIO_TTS_AZURE_SPEECH_REGION` - -- Type: `str` -- Description: Sets the region for Azure Text to Speech. - -### OpenAI Text-to-Speech +- Description: Sets the API key for Text-to-Speech. #### `AUDIO_TTS_OPENAI_API_BASE_URL` @@ -999,11 +921,11 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `${OPENAI_API_KEY}` - Description: Sets the API key to use for text-to-speech. -#### `AUDIO_TTS_SPLIT_ON` +#### `AUDIO_TTS_MODEL` - Type: `str` -- Default: `punctuation` -- Description: Sets the OpenAI text-to-speech split on to use. +- Default: `tts-1` +- Description: Specifies the OpenAI text-to-speech model to use. #### `AUDIO_TTS_VOICE` @@ -1011,7 +933,13 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `alloy` - Description: Sets the OpenAI text-to-speech voice to use. -## Image Generation +#### `AUDIO_TTS_SPLIT_ON` + +- Type: `str` +- Default: `punctuation` +- Description: Sets the OpenAI text-to-speech split on to use. + +### Image Generation #### `ENABLE_IMAGE_GENERATION` @@ -1029,6 +957,38 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `automatic1111` - Description: Specifies the engine to use for image generation. +#### `AUTOMATIC1111_BASE_URL` + +- Type: `str` +- Description: Specifies the URL to Automatic1111's Stable Diffusion API. + +#### `AUTOMATIC1111_API_AUTH` + +- Type: `str` +- Description: Sets the Automatic1111 API authentication. + +#### `COMFYUI_BASE_URL` + +- Type: `str` +- Description: Specifies the URL to the ComfyUI image generation API. + +#### `COMFYUI_WORKFLOW` + +- Type: `str` +- Description: Sets the ComfyUI workflow. + +#### `IMAGES_OPENAI_API_BASE_URL` + +- Type: `str` +- Default: `${OPENAI_API_BASE_URL}` +- Description: Sets the OpenAI-compatible base URL to use for DALL-E image generation. + +#### `IMAGES_OPENAI_API_KEY` + +- Type: `str` +- Default: `${OPENAI_API_KEY}` +- Description: Sets the API key to use for DALL-E image generation. + #### `IMAGE_GENERATION_MODEL` - Type: `str` @@ -1046,135 +1006,21 @@ the search query. Example: `http://searxng.local/search?q=` - Default: `50` - Description: Sets the default iteration steps for image generation. Used for ComfyUI and AUTOMATIC1111. -### AUTOMATIC1111 - -#### `AUTOMATIC1111_API_AUTH` - -- Type: `str` -- Description: Sets the Automatic1111 API authentication. - -#### `AUTOMATIC1111_BASE_URL` - -- Type: `str` -- Description: Specifies the URL to Automatic1111's Stable Diffusion API. - -#### `AUTOMATIC1111_CFG_SCALE` - -- Type: `float` -- Description: Sets the scale for Automatic1111 inference. - -#### `AUTOMATIC1111_SAMPLER` - -- Type: `str` -- Description: Sets the sampler for Automatic1111 inference. - -#### `AUTOMATIC1111_SCHEDULER` - -- Type: `str` -- Description: Sets the scheduler for Automatic1111 inference. - -### ComfyUI - -#### `COMFYUI_BASE_URL` - -- Type: `str` -- Description: Specifies the URL to the ComfyUI image generation API. - -#### `COMFYUI_WORKFLOW` - -- Type: `str` -- Description: Sets the ComfyUI workflow. - -### OpenAI DALL-E - -#### `IMAGES_OPENAI_API_BASE_URL` - -- Type: `str` -- Default: `${OPENAI_API_BASE_URL}` -- Description: Sets the OpenAI-compatible base URL to use for DALL-E image generation. - -#### `IMAGES_OPENAI_API_KEY` - -- Type: `str` -- Default: `${OPENAI_API_KEY}` -- Description: Sets the API key to use for DALL-E image generation. - -## Database Pool - -#### `DATABASE_URL` - -- Type: `str` -- Default: `sqlite:///${DATA_DIR}/webui.db` -- Description: Specifies the database URL to connect to. - -:::info -Supports SQLite and Postgres. Changing the URL does not migrate data between databases. -Documentation on URL scheme available [here](https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls). -::: - -#### `DATABASE_POOL_SIZE` - -- Type: `int` -- Default: `0` -- Description: Specifies the size of the database pool. A value of `0` disables pooling. - -#### `DATABASE_POOL_MAX_OVERFLOW` - -- Type: `int` -- Default: `0` -- Description: Specifies the database pool max overflow. - -:::info -More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.max_overflow). -::: - -#### `DATABASE_POOL_TIMEOUT` - -- Type: `int` -- Default: `30` -- Description: Specifies the database pool timeout in seconds to get a connection. - -:::info -More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.timeout). -::: - -#### `DATABASE_POOL_RECYCLE` - -- Type: `int` -- Default: `3600` -- Description: Specifies the database pool recycle time in seconds. - -:::info -More information about this setting can be found [here](https://docs.sqlalchemy.org/en/20/core/pooling.html#setting-pool-recycle). -::: - -## OAuth +### OAuth #### `ENABLE_OAUTH_SIGNUP` - Type: `bool` - Default: `False` -- Description: Enables user account creation via OAuth. Distinct from `ENABLE_SIGNUP`. - -#### `ENABLE_API_KEY` - -- Type: `bool` -- Default: `False` -- Description: Enables API key authentication. - -#### `ENABLE_OAUTH_ROLE_MANAGEMENT` - -- Type: `bool` -- Default: `False` -- Description: Enables role management to oauth delegation. +- Description: Enables user account creation via OAuth. #### `OAUTH_MERGE_ACCOUNTS_BY_EMAIL` - Type: `bool` - Default: `False` - Description: If enabled, merges OAuth accounts with existing accounts using the same email -address. This is considered unsafe as not all OAuth providers will verify email addresses and can lead to -potential account takeovers. +address. This is considered unsafe as providers may not verify email addresses and can lead to +account takeovers. #### `OAUTH_USERNAME_CLAIM` @@ -1216,6 +1062,12 @@ potential account takeovers. - Default: `SSO` - Description: Sets the name for the OIDC provider. +#### `ENABLE_OAUTH_ROLE_MANAGEMENT` + +- Type: `bool` +- Default: `False` +- Description: Enables role management to oauth delegation. + #### `OAUTH_ROLES_CLAIM` - Type: `str` @@ -1291,110 +1143,33 @@ potential account takeovers. - Type: `str` - Description: Sets the redirect URI for OIDC -## LDAP +### Tools -#### `ENABLE_LDAP` - -- Type: `bool` -- Description: Enables or disables LDAP authentication. - -#### `LDAP_APP_DN` +#### `TOOLS_DIR` - Type: `str` -- Description: Sets the distinguished name for LDAP application. +- Default: `${DATA_DIR}/tools` +- Description: Specifies the directory for custom tools. -#### `LDAP_APP_PASSWORD` +### Redis + +#### `ENABLE_WEBSOCKET_SUPPORT` + +- Type: `bool` +- Default: `False` +- Description: Enables websocket support in Open WebUI (used with Redis). + +#### `WEBSOCKET_MANAGER` - Type: `str` -- Description: Sets the password for LDAP application. +- Default: `redis` +- Description: Specifies the websocket manager to use (in this case, Redis). -#### `LDAP_ATTRIBUTE_FOR_USERNAME` +#### `WEBSOCKET_REDIS_URL` - Type: `str` -- Description: Sets the attribute to use as username for LDAP authentication. - -#### `LDAP_CA_CERT_FILE` - -- Type: `str` -- Description: Sets the path to LDAP CA certificate file. - -#### `LDAP_CIPHERS` - -- Type: `str` -- Description: Sets the ciphers to use for LDAP connection. - -#### `LDAP_SEARCH_BASE` - -- Type: `str` -- Description: Sets the base to search for LDAP authentication. - -#### `LDAP_SEARCH_FILTER` - -- Type: `str` -- Description: Sets the filter to use for LDAP search. - -#### `LDAP_SERVER_HOST` - -- Type: `str` -- Description: Sets the hostname of LDAP server. - -#### `LDAP_SERVER_LABEL` - -- Type: `str` -- Description: Sets the label of LDAP server. - -#### `LDAP_SERVER_PORT` - -- Type: `int` -- Description: Sets the port number of LDAP server. - -#### `LDAP_USE_TLS` - -- Type: `bool` -- Description: Enables or disables TLS for LDAP connection. - -## User Permissions - -#### `USER_PERMISSIONS_CHAT_TEMPORARY` - -- Type: `bool` -- Default: `True` -- Description: Enables or disables user permission to create temporary chats. - -#### `USER_PERMISSIONS_CHAT_DELETE` - -- Type: `bool` -- Description: Enables or disables user permission to delete chats. - -#### `USER_PERMISSIONS_CHAT_EDIT` - -- Type: `bool` -- Description: Enables or disables user permission to edit chats. - -#### `USER_PERMISSIONS_CHAT_FILE_UPLOAD` - -- Type: `bool` -- Description: Enables or disables user permission to upload files to chats. - -#### `USER_PERMISSIONS_WORKSPACE_KNOWLEDGE_ACCESS` - -- Type: `bool` -- Description: Enables or disables user permission to access workspace knowledge. - -#### `USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS` - -- Type: `bool` -- Description: Enables or disables user permission to access workspace models. - -#### `USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS` - -- Type: `bool` -- Description: Enables or disables user permission to access workspace prompts. - -#### `USER_PERMISSIONS_WORKSPACE_TOOLS_ACCESS` - -- Type: `bool` -- Description: Enables or disables user permission to access workspace tools. +- Default: `redis://localhost:6379/0` +- Description: Specifies the URL of the Redis instance for websocket communication. ## Misc Environment Variables @@ -1421,55 +1196,3 @@ Open WebUI uses the following environment variables: - Description: Lists domain extensions (or IP addresses) for which the proxy should not be used, separated by commas. For example, setting no_proxy to '.mit.edu' ensures that the proxy is bypassed when accessing documents from MIT. - -### Redis - -#### `ENABLE_WEBSOCKET_SUPPORT` - -- Type: `bool` -- Default: `False` -- Description: Enables websocket support in Open WebUI (used with Redis). - -#### `WEBSOCKET_MANAGER` - -- Type: `str` -- Default: `redis` -- Description: Specifies the websocket manager to use (in this case, Redis). - -#### `WEBSOCKET_REDIS_URL` - -- Type: `str` -- Default: `redis://localhost:6379/0` -- Description: Specifies the URL of the Redis instance for websocket communication. - -### S3 Storage Provider - -#### `STORAGE_PROVIDER` - -- Type: `str` -- Description: Sets the storage provider. - -#### `S3_ACCESS_KEY_ID` - -- Type: `str` -- Description: Sets the access key ID for S3 storage. - -#### `S3_BUCKET_NAME` - -- Type: `str` -- Description: Sets the bucket name for S3 storage. - -#### `S3_ENDPOINT_URL` - -- Type: `str` -- Description: Sets the endpoint URL for S3 storage. - -#### `S3_REGION_NAME` - -- Type: `str` -- Description: Sets the region name for S3 storage. - -#### `S3_SECRET_ACCESS_KEY` - -- Type: `str` -- Description: Sets the secret access key for S3 storage. diff --git a/docs/getting-started/advanced-topics/index.mdx b/docs/getting-started/advanced-topics/index.mdx index 0a93b25..08fda03 100644 --- a/docs/getting-started/advanced-topics/index.mdx +++ b/docs/getting-started/advanced-topics/index.mdx @@ -39,4 +39,5 @@ Get essential information for API integration and automation using our models. --- -Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start). \ No newline at end of file +Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start). +Need to explore core features? Check out [Using OpenWebUI](/getting-started/using-openwebui). diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 32b06ad..45aa01e 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -15,6 +15,12 @@ Get up and running quickly with our [Quick Start Guide](./quick-start). --- +## 📚 Using OpenWebUI + +Learn the basics and explore key concepts in our [Using OpenWebUI Guide](./using-openwebui). + +--- + ## 🛠️ Advanced Topics Take a deeper dive into configurations and development tips in our [Advanced Topics Guide](./advanced-topics). diff --git a/docs/getting-started/quick-start/index.mdx b/docs/getting-started/quick-start/index.mdx index 3454497..bc37704 100644 --- a/docs/getting-started/quick-start/index.mdx +++ b/docs/getting-started/quick-start/index.mdx @@ -140,7 +140,7 @@ After installing, visit: - [http://localhost:3000](http://localhost:3000) to access OpenWebUI. - or [http://localhost:8080/](http://localhost:8080/) when using a Python deployment. -You are now ready to start using OpenWebUI! +You are now ready to start **[Using OpenWebUI](../using-openwebui/index.mdx)**! ## Join the Community diff --git a/docs/getting-started/quick-start/tab-docker/DockerUpdating.md b/docs/getting-started/quick-start/tab-docker/DockerUpdating.md index 4abc595..459540d 100644 --- a/docs/getting-started/quick-start/tab-docker/DockerUpdating.md +++ b/docs/getting-started/quick-start/tab-docker/DockerUpdating.md @@ -1,35 +1,101 @@ -## Updating +## Why isn't my Open WebUI updating? -To update your local Docker installation to the latest version, you can either use **Watchtower** or manually update the container. +To update your local Docker installation of Open WebUI to the latest version available, you can either use **Watchtower** or manually update the container. Follow either of the steps provided below to be guided through updating your existing Open WebUI image. -### Option 1: Using Watchtower +### Manual Update -With [Watchtower](https://containrrr.dev/watchtower/), you can automate the update process: +1. **Stop and remove the current container**: + + This will stop the running container and remove it, but it won't delete the data stored in the Docker volume. (Replace `open-webui` with your container's name throughout the updating process if it's different for you.) + +```bash +docker rm -f open-webui +``` + +2. **Pull the latest Docker image**: + + This will update the Docker image, but it won't update the running container or its data. + +```bash +docker pull ghcr.io/open-webui/open-webui:main +``` + +3. **Remove any existing data in the Docker volume (NOT RECOMMENDED UNLESS ABSOLUTELY NECCESSARY!)**. Skip this step entirely if not needed and move on to the last step: + + If you want to start with a clean slate, you can remove the existing data in the Docker volume. Be careful, as this will delete all your chat histories and other data. + + The data is stored in a Docker volume named `open-webui`. You can remove it with the following command: + +```bash +docker volume rm open-webui +``` + +4. **Start the container again with the updated image and existing volume attached**: + + If you didn't remove the existing data, this will start the container with the updated image and the existing data. If you removed the existing data, this will start the container with the updated image and a new, empty volume. **For Nvidia GPU support, add `--gpus all` to the docker run command** + +```bash +docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main +``` + +## Automatically Updating Open WebUI with Watchtower + +You can use [Watchtower](https://containrrr.dev/watchtower/) to automate the update process for Open WebUI. Here are three options: + +### Option 1: One-time Update + +You can run Watchtower as a one-time update to stop the current container, pull the latest image, and start a new container with the updated image and existing volume attached (**For Nvidia GPU support, add `--gpus all` to the docker run command**): ```bash docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui ``` -_(Replace `open-webui` with your container's name if it's different.)_ +### Option 2: Running Watchtower as a Separate Container -### Option 2: Manual Update +You can run Watchtower as a separate container that watches and updates your Open WebUI container: -1. Stop and remove the current container: +```bash +docker run -d --name watchtower \ + --volume /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower -i 300 open-webui +``` - ```bash - docker rm -f open-webui - ``` +This will start Watchtower in detached mode, watching your Open WebUI container for updates every 5 minutes. -2. Pull the latest version: +### Option 3: Integrating Watchtower with a `docker-compose.yml` File - ```bash - docker pull ghcr.io/open-webui/open-webui:main - ``` +You can also integrate Watchtower with your `docker-compose.yml` file to automate updates for Open WebUI (**For Nvidia GPU support, add `--gpus all` to the docker run command**): -3. Start the container again: +```yml +version: '3' +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + ports: + - "3000:8080" + volumes: + - open-webui:/app/backend/data - ```bash - docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main - ``` + watchtower: + image: containrrr/watchtower + volumes: + - /var/run/docker.sock:/var/run/docker.sock + command: --interval 300 open-webui + depends_on: + - open-webui -Both methods will get your Docker instance updated and running with the latest build. +volumes: + open-webui: +``` + +In this example, Watchtower is integrated with the `docker-compose.yml` file and watches the Open WebUI container for updates every 5 minutes. + +## Persistent Data in Docker Volumes + +The data is stored in a Docker volume named `open-webui`. The path to the volume is not directly accessible, but you can inspect the volume with the following command: + +```bash +docker volume inspect open-webui +``` + +This will show you the details of the volume, including the mountpoint, which is usually located in `/var/lib/docker/volumes/open-webui/_data`. diff --git a/docs/getting-started/updating.mdx b/docs/getting-started/updating.mdx deleted file mode 100644 index 07c92a7..0000000 --- a/docs/getting-started/updating.mdx +++ /dev/null @@ -1,111 +0,0 @@ ---- -sidebar_position: 300 -title: "🔄 Updating Open WebUI" ---- - - - -## Why isn't my Open WebUI updating? - -To update your local Docker installation of Open WebUI to the latest version available, you can either use **Watchtower** or manually update the container. Follow either of the steps provided below to be guided through updating your existing Open WebUI image. - -### Manual Update - -1. **Stop and remove the current container**: - - This will stop the running container and remove it, but it won't delete the data stored in the Docker volume. (Replace `open-webui` with your container's name throughout the updating process if it's different for you.) - -```bash -docker rm -f open-webui -``` - -2. **Pull the latest Docker image**: - - This will update the Docker image, but it won't update the running container or its data. - -```bash -docker pull ghcr.io/open-webui/open-webui:main -``` - - -:::info -**Remove any existing data in the Docker volume (NOT RECOMMENDED UNLESS ABSOLUTELY NECCESSARY!)**. Skip this step entirely if not needed and move on to the last step: - - If you want to start with a clean slate, you can remove the existing data in the Docker volume. Be careful, as this will delete all your chat histories and other data. - - The data is stored in a Docker volume named `open-webui`. You can remove it with the following command: - -```bash -docker volume rm open-webui -``` -::: - -3. **Start the container again with the updated image and existing volume attached**: - - If you didn't remove the existing data, this will start the container with the updated image and the existing data. If you removed the existing data, this will start the container with the updated image and a new, empty volume. **For Nvidia GPU support, add `--gpus all` to the docker run command** - -```bash -docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main -``` - -## Automatically Updating Open WebUI with Watchtower - -You can use [Watchtower](https://containrrr.dev/watchtower/) to automate the update process for Open WebUI. Here are three options: - -### Option 1: One-time Update - -You can run Watchtower as a one-time update to stop the current container, pull the latest image, and start a new container with the updated image and existing volume attached (**For Nvidia GPU support, add `--gpus all` to the docker run command**): - -```bash -docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui -``` - -### Option 2: Running Watchtower as a Separate Container - -You can run Watchtower as a separate container that watches and updates your Open WebUI container: - -```bash -docker run -d --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower -i 300 open-webui -``` - -This will start Watchtower in detached mode, watching your Open WebUI container for updates every 5 minutes. - -### Option 3: Integrating Watchtower with a `docker-compose.yml` File - -You can also integrate Watchtower with your `docker-compose.yml` file to automate updates for Open WebUI (**For Nvidia GPU support, add `--gpus all` to the docker run command**): - -```yml -version: '3' -services: - open-webui: - image: ghcr.io/open-webui/open-webui:main - ports: - - "3000:8080" - volumes: - - open-webui:/app/backend/data - - watchtower: - image: containrrr/watchtower - volumes: - - /var/run/docker.sock:/var/run/docker.sock - command: --interval 300 open-webui - depends_on: - - open-webui - -volumes: - open-webui: -``` - -In this example, Watchtower is integrated with the `docker-compose.yml` file and watches the Open WebUI container for updates every 5 minutes. - -## Persistent Data in Docker Volumes - -The data is stored in a Docker volume named `open-webui`. The path to the volume is not directly accessible, but you can inspect the volume with the following command: - -```bash -docker volume inspect open-webui -``` - -This will show you the details of the volume, including the mountpoint, which is usually located in `/var/lib/docker/volumes/open-webui/_data`. diff --git a/docs/getting-started/using-openwebui/index.mdx b/docs/getting-started/using-openwebui/index.mdx new file mode 100644 index 0000000..5ce08f6 --- /dev/null +++ b/docs/getting-started/using-openwebui/index.mdx @@ -0,0 +1,23 @@ +--- +sidebar_position: 3 +title: "🧑‍💻 Using OpenWebUI" +--- + +# Using OpenWebUI + +Explore the essential concepts and features of Open WebUI, including models, knowledge, prompts, pipes, actions, and more. + +--- + +## 🌐 Additional Resources and Integrations +Find community tools, integrations, and official resources. +[Additional Resources Guide](./resources) + +## 📖 Community Tutorials +If you like the documentation you are reading right now, then check out this tutorial on [Configuring RAG with OpenWebUI Documentation](../../tutorials/tips/rag-tutorial.md). +Then go on to explore other community-submitted tutorials to enhance your OpenWebUI experience. +[Explore Community Tutorials](/category/-tutorials) + +--- + +Stay tuned for more updates as we continue to expand these sections! \ No newline at end of file diff --git a/docs/getting-started/using-openwebui/resources.mdx b/docs/getting-started/using-openwebui/resources.mdx new file mode 100644 index 0000000..2bf1a3f --- /dev/null +++ b/docs/getting-started/using-openwebui/resources.mdx @@ -0,0 +1,39 @@ +--- +sidebar_position: 4 +title: "🌐 Additional Resources" +--- + +# 🌐 Additional Resources + +Explore more resources, community tools, and integration options to make the most out of Open WebUI. + +--- + +## 🔥 Open WebUI Website +Visit [Open WebUI](https://openwebui.com/) for official documentation, tools, and resources: +- **Leaderboard**: Check out the latest high-ranking models, tools, and integrations. +- **Featured Models and Tools**: Discover models and tools created by community members. +- **New Integrations**: Find newly released integrations, plugins, and models to expand your setup. + +--- + +## 🌍 Community Platforms +Connect with the Open WebUI community for support, tips, and discussions. + +- **Discord**: Join our community on Discord to chat with other users, ask questions, and stay updated. + [Join the Discord Server](https://discord.com/invite/5rJgQTnV4s) +- **Reddit**: Follow the Open WebUI subreddit for announcements, discussions, and user-submitted content. + [Visit Reddit Community](https://www.reddit.com/r/OpenWebUI/) +- **GitHub Community**: Participate in discussions, propose feature requests, and report issues specific to the Open WebUI Community Platform website. + [Explore the GitHub Community](https://github.com/open-webui/community) + +--- + +## 📖 Tutorials and User Guides +Explore community-created tutorials to enhance your Open WebUI experience: +- [Explore Community Tutorials](/category/-tutorials) +- Learn how to configure RAG and advanced integrations with the [RAG Configuration Guide](../../tutorials/tips/rag-tutorial.md). + +--- + +Stay connected and make the most out of Open WebUI through these community resources and integrations! diff --git a/docs/roadmap.mdx b/docs/roadmap.mdx index f1236b2..a2a0b97 100644 --- a/docs/roadmap.mdx +++ b/docs/roadmap.mdx @@ -20,11 +20,7 @@ Our roadmap for interface innovations aims to create a highly intuitive and acce - 📈 **Advanced User Tracking and Cost Management Tools**: Users will gain access to comprehensive tools designed for tracking application performance and user activities, as well as managing costs effectively. These tools will empower users with the data they need to make informed decisions, improve user experiences, and maintain budget control, optimizing the use of resources across their AI applications. -- 💬 **"Channels" Feature**: Channels will function like Discord/Slack chat rooms, facilitating real-time collaboration among users and AIs. These dedicated communication spaces can host human-to-human interactions or AI-assisted discussions, fostering dynamic and context-driven collaboration. As we transition towards multi-agent and proactive agent workflows, true asynchronous communication will be essential, and Open WebUI will provide a Bot SDK tutorial to empower users in building proactive AI agents that can initiate conversations and integrate seamlessly into the platform. - -- 👤 **User Page**: A personal User Page feature where users can create posts. The functionality will also include features like followers, likes, and comments. This allows users to effectively share their model configurations, prompts, and files with a broader community, creating a richer, more connected ecosystem around the platform. - -- 📝 **AI Powered Notes**: Inspired by tools like Notion and Obsidian, we plan to introduce a robust note-taking feature that includes AI integration. From simple note-taking to full-fledged document creation, this tool will offer a seamless experience, all locally integrated within the platform. +- 💬 **"Channels" Feature**: Integrating a built-in chat solution for Open WebUI users that includes AI moderation and assistance capabilities can significantly enhance user engagement and provide timely assistance, improving overall user satisfaction and retention. - 🧠 **AI Workflow Tool**: A node-based tool to orchestrate and compose multiple aspects of AI systems. This tool will allow users to visually connect different AI modules and services, creating complex workflows with ease. It's designed to empower users to harness the full potential of AI without needing deep technical knowledge in AI programming. diff --git a/docs/tutorials/integrations/images.md b/docs/tutorials/integrations/images.md index b9721e3..15f44e3 100644 --- a/docs/tutorials/integrations/images.md +++ b/docs/tutorials/integrations/images.md @@ -114,7 +114,6 @@ To integrate ComfyUI into Open WebUI, follow these steps: 3. Return to Open WebUI and click the **Click here to upload a workflow.json file** button. 4. Select the `workflow_api.json` file to import the exported workflow from ComfyUI into Open WebUI. 5. After importing the workflow, you must map the `ComfyUI Workflow Nodes` according to the imported workflow node IDs. -6. Set `Set Default Model` to the name of the model file being used, such as `flux1-dev.safetensors` :::info You may need to adjust an `Input Key` or two within Open WebUI's `ComfyUI Workflow Nodes` section to match a node within your workflow. diff --git a/docs/tutorials/integrations/web_search.md b/docs/tutorials/integrations/web_search.md index 37592cb..69bcb8f 100644 --- a/docs/tutorials/integrations/web_search.md +++ b/docs/tutorials/integrations/web_search.md @@ -500,12 +500,6 @@ Coming Soon ## Bing API +Coming Soon + ### Setup - -1. Navigate to the [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) and create a new resource. After creation, you’ll be redirected to the resource overview page. From there, select "Click here to manage keys." ![click here to manage keys](https://github.com/user-attachments/assets/dd2a3c67-d6a7-4198-ba54-67a3c8acff6d) -2. On the key management page, locate Key1 or Key2 and copy your desired key. -3. Open the Open WebUI Admin Panel, switch to the Settings tab, and then select Web Search. -4. Enable the Web search option and set the Web Search Engine to bing. -5. Fill `SearchApi API Key` with the `API key` that you copied in step 2 from [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) dashboard. -6. Click `Save`. -