mirror of
https://github.com/open-webui/docs.git
synced 2025-12-12 07:29:49 +07:00
Updated SearXNG Web Search Documents
This commit is contained in:
@@ -21,15 +21,15 @@ To configure SearXNG optimally for use with Open WebUI, follow these steps:
|
|||||||
|
|
||||||
**Step 1: `git clone` SearXNG Docker and navigate to the folder:**
|
**Step 1: `git clone` SearXNG Docker and navigate to the folder:**
|
||||||
|
|
||||||
1. Create a New Directory `searxng-docker`
|
1. Clone the repository `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.
|
Clone the searxng-docker repository. This will create a new directory called `searxng-docker`, which will contain your SearXNG configuration files. Refer to the [SearXNG documentation](https://docs.searxng.org/) for configuration instructions.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/searxng/searxng-docker.git
|
git clone https://github.com/searxng/searxng-docker.git
|
||||||
```
|
```
|
||||||
|
|
||||||
Navigate to the `searxng-docker` repository:
|
Navigate to the `searxng-docker` repository, and run all commands from there:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd searxng-docker
|
cd searxng-docker
|
||||||
@@ -49,7 +49,7 @@ cd searxng-docker
|
|||||||
|
|
||||||
# * uncomment LETSENCRYPT_EMAIL, and replace <email> by your email (require to create a Let's Encrypt certificate)
|
# * uncomment LETSENCRYPT_EMAIL, and replace <email> by your email (require to create a Let's Encrypt certificate)
|
||||||
|
|
||||||
SEARXNG_HOSTNAME=localhost:8080/
|
SEARXNG_HOSTNAME=localhost
|
||||||
|
|
||||||
# LETSENCRYPT_EMAIL=<email>
|
# LETSENCRYPT_EMAIL=<email>
|
||||||
|
|
||||||
@@ -68,8 +68,18 @@ SEARXNG_HOSTNAME=localhost:8080/
|
|||||||
|
|
||||||
3. Remove the `localhost` restriction by modifying the `docker-compose.yaml` file:
|
3. Remove the `localhost` restriction by modifying the `docker-compose.yaml` file:
|
||||||
|
|
||||||
|
If port 8080 is already in use, change `0.0.0.0:8080` to `0.0.0.0:[available port]` in the command before running it.
|
||||||
|
|
||||||
|
Run the appropriate command for your operating system:
|
||||||
|
|
||||||
|
- **Linux**
|
||||||
```bash
|
```bash
|
||||||
sed -i "s/127.0.0.1:8080/0.0.0.0:8080/"
|
sed -i 's/127.0.0.1:8080/0.0.0.0:8080/' docker-compose.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
- **macOS**:
|
||||||
|
```bash
|
||||||
|
sed -i '' 's/127.0.0.1:8080/0.0.0.0:8080/' docker-compose.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
**Step 4: Grant Necessary Permissions**
|
**Step 4: Grant Necessary Permissions**
|
||||||
@@ -77,13 +87,15 @@ sed -i "s/127.0.0.1:8080/0.0.0.0:8080/"
|
|||||||
4. Allow the container to create new config files by running the following command in the root directory:
|
4. Allow the container to create new config files by running the following command in the root directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo chmod a+rwx searxng-docker/searxng
|
sudo chmod a+rwx searxng
|
||||||
```
|
```
|
||||||
|
|
||||||
**Step 5: Create a Non-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:
|
5. Create a non-restrictive `searxng-docker/searxng/limiter.toml` config file:
|
||||||
|
|
||||||
|
*If the file already exists, append the missing lines to it.*
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line MD033 -->
|
<!-- markdownlint-disable-next-line MD033 -->
|
||||||
<details>
|
<details>
|
||||||
<!-- markdownlint-disable-next-line MD033 -->
|
<!-- markdownlint-disable-next-line MD033 -->
|
||||||
@@ -112,172 +124,72 @@ pass_ip = []
|
|||||||
6. Delete the default `searxng-docker/searxng/settings.yml` file if it exists, as it will be regenerated on the first launch of SearXNG:
|
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
|
```bash
|
||||||
rm searxng-docker/searxng/settings.yml
|
rm searxng/settings.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
**Step 7: Create a Fresh `settings.yml` File**
|
**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:
|
7. Bring up the container momentarily to generate a fresh settings.yml file:
|
||||||
|
|
||||||
|
If the container name caddy, redis, searxng is already in use, change it to another name of your choice in the docker-compose.yaml file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose up -d ; sleep 10 ; docker compose down
|
docker compose up -d ; sleep 10 ; docker compose down
|
||||||
```
|
```
|
||||||
|
|
||||||
**Step 8: Add Formats and Update Port Number**
|
After the initial run, add `cap_drop: - ALL` to the `docker-compose.yaml` file for security reasons.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>docker-compose.yaml</summary>
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
searxng:
|
||||||
|
container_name: searxng
|
||||||
|
image: docker.io/searxng/searxng:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- searxng
|
||||||
|
ports:
|
||||||
|
- "0.0.0.0:9630:8080"
|
||||||
|
volumes:
|
||||||
|
- ./searxng:/etc/searxng:rw
|
||||||
|
- searxng-data:/var/cache/searxng:rw
|
||||||
|
environment:
|
||||||
|
- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "1m"
|
||||||
|
max-file: "1"
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
**Step 8: Add Formats**
|
||||||
|
|
||||||
8. Add HTML and JSON formats to the `searxng-docker/searxng/settings.yml` file:
|
8. Add HTML and JSON formats to the `searxng-docker/searxng/settings.yml` file:
|
||||||
|
|
||||||
|
- **Linux**
|
||||||
```bash
|
```bash
|
||||||
sed -i 's/formats: \[\"html\"\/]/formats: [\"html\", \"json\"]/' searxng-docker/searxng/settings.yml
|
sed -i 's/- html/- html\n - json/' searxng/settings.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
Generate a secret key for your SearXNG instance:
|
- **macOS**
|
||||||
|
```bash
|
||||||
|
sed -i '' 's/- html/- html\n - json/' searxng/settings.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 9: Run the Server**
|
||||||
|
|
||||||
|
9. Start the container with the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng-docker/searxng/settings.yml
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
Windows users can use the following powershell script to generate the secret key:
|
The searXNG will be available at http://localhost:8080 (or the port number you set earlier).
|
||||||
|
|
||||||
```powershell
|
|
||||||
$randomBytes = New-Object byte[] 32
|
|
||||||
(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes)
|
|
||||||
$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ })
|
|
||||||
(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`):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sed -i 's/port: 8080/port: 8080/' 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-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:
|
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line MD033 -->
|
|
||||||
<details>
|
|
||||||
<!-- markdownlint-disable-next-line MD033 -->
|
|
||||||
<summary>searxng-docker/searxng/settings.yml</summary>
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
|
|
||||||
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
|
|
||||||
use_default_settings: true
|
|
||||||
|
|
||||||
server:
|
|
||||||
# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
|
|
||||||
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"
|
|
||||||
|
|
||||||
ui:
|
|
||||||
static_use_hash: true
|
|
||||||
|
|
||||||
search:
|
|
||||||
safe_search: 0
|
|
||||||
autocomplete: ""
|
|
||||||
default_lang: ""
|
|
||||||
formats:
|
|
||||||
- html
|
|
||||||
- json # json is required
|
|
||||||
# remove format to deny access, use lower case.
|
|
||||||
# formats: [html, csv, json, rss]
|
|
||||||
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/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.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
**Step 9: Update `uwsgi.ini` File**
|
|
||||||
|
|
||||||
9. Ensure your `searxng-docker/searxng/uwsgi.ini` file matches the following:
|
|
||||||
|
|
||||||
<!-- markdownlint-disable-next-line MD033 -->
|
|
||||||
<details>
|
|
||||||
<!-- markdownlint-disable-next-line MD033 -->
|
|
||||||
<summary>searxng-docker/searxng/uwsgi.ini</summary>
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[uwsgi]
|
|
||||||
|
|
||||||
# Who will run the code
|
|
||||||
uid = searxng
|
|
||||||
gid = searxng
|
|
||||||
|
|
||||||
# Number of workers (usually CPU count)
|
|
||||||
|
|
||||||
# default value: %k (= number of CPU core, see Dockerfile)
|
|
||||||
workers = %k
|
|
||||||
|
|
||||||
# Number of threads per worker
|
|
||||||
|
|
||||||
# default value: 4 (see Dockerfile)
|
|
||||||
threads = 4
|
|
||||||
|
|
||||||
# The right granted on the created socket
|
|
||||||
chmod-socket = 666
|
|
||||||
|
|
||||||
# Plugin to use and interpreter config
|
|
||||||
single-interpreter = true
|
|
||||||
master = true
|
|
||||||
plugin = python3
|
|
||||||
lazy-apps = true
|
|
||||||
enable-threads = 4
|
|
||||||
|
|
||||||
# Module to import
|
|
||||||
module = searx.webapp
|
|
||||||
|
|
||||||
# Virtualenv and python path
|
|
||||||
pythonpath = /usr/local/searxng/
|
|
||||||
chdir = /usr/local/searxng/searx/
|
|
||||||
|
|
||||||
# automatically set processes name to something meaningful
|
|
||||||
auto-procname = true
|
|
||||||
|
|
||||||
# Disable request logging for privacy
|
|
||||||
disable-logging = true
|
|
||||||
log-5xx = true
|
|
||||||
|
|
||||||
# Set the max size of a request (request-body excluded)
|
|
||||||
buffer-size = 8192
|
|
||||||
|
|
||||||
# No keep alive
|
|
||||||
|
|
||||||
# See https://github.com/searx/searx-docker/issues/24
|
|
||||||
add-header = Connection: close
|
|
||||||
|
|
||||||
# uwsgi serves the static files
|
|
||||||
static-map = /static=/usr/local/searxng/searx/static
|
|
||||||
|
|
||||||
# expires set to one day
|
|
||||||
static-expires = /* 86400
|
|
||||||
static-gzip-all = True
|
|
||||||
offload-threads = 4
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## 2. Alternative Setup
|
## 2. Alternative Setup
|
||||||
|
|
||||||
@@ -412,6 +324,7 @@ docker exec -it open-webui curl http://host.docker.internal:8080/search?q=this+i
|
|||||||
3. Set `Web Search Engine` from dropdown menu to `searxng`
|
3. Set `Web Search Engine` from dropdown menu to `searxng`
|
||||||
4. Set `Searxng Query URL` to one of the following examples:
|
4. Set `Searxng Query URL` to one of the following examples:
|
||||||
|
|
||||||
|
- `http://localhost:8080/search?q=<query>` (using the host and exposed port, suitable for Docker-based setups)
|
||||||
- `http://searxng:8080/search?q=<query>` (using the container name and exposed port, suitable for Docker-based setups)
|
- `http://searxng:8080/search?q=<query>` (using the container name and exposed port, suitable for Docker-based setups)
|
||||||
- `http://host.docker.internal:8080/search?q=<query>` (using the `host.docker.internal` DNS name and the host port, suitable for Docker-based setups)
|
- `http://host.docker.internal:8080/search?q=<query>` (using the `host.docker.internal` DNS name and the host port, suitable for Docker-based setups)
|
||||||
- `http://<searxng.local>/search?q=<query>` (using a local domain name, suitable for local network access)
|
- `http://<searxng.local>/search?q=<query>` (using a local domain name, suitable for local network access)
|
||||||
@@ -426,7 +339,7 @@ docker exec -it open-webui curl http://host.docker.internal:8080/search?q=this+i
|
|||||||
|
|
||||||
## 5. 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.
|
To access Web Search, Click the Integrations button next to the + icon.
|
||||||
|
|
||||||
Here you can toggle Web Search On/Off.
|
Here you can toggle Web Search On/Off.
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user