> For the complete documentation index, see [llms.txt](https://docs.cherryai.com.cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cherryai.com.cn/docs/russian/pre-basic/settings/websearch/searxng.md).

# Локальное развертывание и настройка SearXNG

CherryStudio поддерживает веб-поиск через SearXNG. SearXNG — это проект с открытым исходным кодом, который можно развернуть локально или на сервере, поэтому его настройка немного отличается от других способов, требующих API-провайдера.

**Ссылка на проект SearXNG**:[SearXNG](https://github.com/searxng/searxng)

## Преимущества SearXNG

* Открытый исходный код и бесплатно, без API
* Относительно высокая приватность
* Высокая степень настраиваемости

## Локальное развертывание

### 1. Прямое развертывание через Docker

Поскольку SearXNG не требует сложной настройки среды, можно обойтись без docker compose, достаточно просто предоставить свободный порт, поэтому самый быстрый способ — напрямую загрузить образ через Docker и развернуть его.

#### 1. Скачать, установить и настроить [docker](https://www.docker.com/)

<figure><img src="/files/f83bfc9bfc16ea8c48054bf9967a6afd711f2115" alt=""><figcaption></figcaption></figure>

После установки выберите путь хранения образов:

<figure><img src="/files/9e195edd81a463c70226f13657c4c7055e0a80c1" alt=""><figcaption></figcaption></figure>

#### 2. Найдите и скачайте образ SearXNG

Введите в строке поиска **searxng** :

<figure><img src="/files/7531400fee25ad699aef7cc4c0b9578c55daa711" alt=""><figcaption></figcaption></figure>

Скачайте образ:

<figure><img src="/files/0b48b371194e18a1cfbee903fdfe98eb87048c5e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/f3f972d3e91225c9dacef825cea087399807ebda" alt=""><figcaption></figcaption></figure>

#### 3. Запустите образ

После успешного скачивания перейдите на **images** страницу:

<figure><img src="/files/6fe29ca538e820604dc694c7102ecdfacbe5d9f9" alt=""><figcaption></figcaption></figure>

Выберите скачанный образ и нажмите запуск:

<figure><img src="/files/9f6978ce4dba385a15928bb6c3e909bbcdeb5e9b" alt=""><figcaption></figcaption></figure>

Откройте пункт настроек для конфигурации:

<figure><img src="/files/ff49393f49aa9779ca162d13eb64ae9b7f1ef3d7" alt=""><figcaption></figcaption></figure>

в качестве `8085` порта, например:

<figure><img src="/files/e03ac471136ebf804f175f82d3ab7e5887ad1a13" alt=""><figcaption></figcaption></figure>

После успешного запуска нажмите ссылку, чтобы открыть фронтенд-интерфейс SearXNG:

<figure><img src="/files/53f0b787dd18716cf805a9a1e22e3e794645cf3a" alt=""><figcaption></figcaption></figure>

Если появляется эта страница, значит развертывание успешно:

<figure><img src="/files/736a90bd0c2da0bc2925225286099905e96863be" alt=""><figcaption></figcaption></figure>

## Развертывание на сервере

Учитывая, что установка Docker в Windows — довольно хлопотное дело, пользователь может развернуть SearXNG на сервере и заодно предоставить доступ другим людям. Однако, к сожалению, SearXNG пока не поддерживает собственную аутентификацию, из-за чего другие могут техническими средствами просканировать и злоупотреблять вашим экземпляром.

Поэтому Cherry Studio на данный момент уже поддерживает настройку [HTTP Basic Authentication (RFC7617)](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/Authentication)если пользователь хочет сделать развернутый им SearXNG доступным в публичной сети, **обязательно** настраивайте HTTP Basic Authentication через Nginx или другое ПО обратного прокси. Ниже приведено краткое руководство; вам понадобятся базовые знания администрирования Linux.

### Развертывание SearXNG

Аналогично, по-прежнему используется развертывание через Docker. Предположим, что вы уже согласно [официальному руководству](https://docs.docker.com/engine/install) установили на сервере последнюю версию Docker CE. Ниже приведена единая команда, подходящая для чистой установки на системе Debian:

```bash
sudo apt update
sudo apt install git -y

# Получить официальный репозиторий
cd /opt
git clone https://github.com/searxng/searxng-docker.git
cd /opt/searxng-docker

# Если у вашего сервера небольшой канал, можно установить false
export IMAGE_PROXY=true

# Изменить файл конфигурации
cat <<EOF > /opt/searxng-docker/searxng/settings.yml
# см. https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url задается в переменной окружения SEARXNG_BASE_URL, см. .env и docker-compose.yml
  secret_key: $(openssl rand -hex 32)
  limiter: false # можно отключить для приватного экземпляра
  image_proxy: $IMAGE_PROXY
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0
search:
  formats:
    - html
    - json
EOF
```

Если вам нужно изменить локальный порт прослушивания, чтобы использовать уже имеющийся локальный nginx, можно отредактировать `docker-compose.yaml` файл, см. пример ниже:

```yaml
version: "3.7"

services:
# Если не нужен Caddy и вы используете уже имеющийся локальный Nginx, удалите нижеследующее. По умолчанию Caddy не нужен.
  caddy:
    container_name: caddy
    image: docker.io/library/caddy:2-alpine
    network_mode: host
    restart: unless-stopped
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data:rw
      - caddy-config:/config:rw
    environment:
      - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost}
      - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
# Если не нужен Caddy и вы используете уже имеющийся локальный Nginx, удалите вышеуказанное. По умолчанию Caddy не нужен.
  redis:
    container_name: redis
    image: docker.io/valkey/valkey:8-alpine
    command: valkey-server --save 30 1 --loglevel warning
    restart: unless-stopped
    networks:
      - searxng
    volumes:
      - valkey-data2:/data
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    networks:
      - searxng
    # По умолчанию маппится на порт 8080 хоста; если хотите прослушивать 8000, измените на "127.0.0.1:8000:8080"
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
      - UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
      - UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

networks:
  searxng:

volumes:
# Если не нужен Caddy и вы используете уже имеющийся локальный Nginx, удалите нижеследующее
  caddy-data:
  caddy-config:
# Если не нужен Caddy и вы используете уже имеющийся локальный Nginx, удалите вышеуказанное
  valkey-data2:
```

Выполните `docker compose up -d` Запустите. `docker compose logs -f searxng` Можно увидеть логи.

### Развертывание обратного прокси Nginx и HTTP Basic Authentication

Если вы используете некоторые серверные панели, например BaoTa Panel или 1Panel, обратитесь к их документации, чтобы добавить сайт и настроить обратный прокси nginx; затем найдите место, где можно изменить конфигурационный файл nginx, и\
внесите изменения по приведенному ниже примеру:

```conf
server
{
    listen 443 ssl;

    # Это имя вашего хоста
    server_name search.example.com;

    # index index.html;
    # root /data/www/default;

    # Если настроен SSL, должны быть эти две строки
    ssl_certificate /path/to/your/cert/fullchain.pem;
    ssl_certificate_key /path/to/your/cert/privkey.pem;

    # HSTS
    # add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

    # По умолчанию при настройке обратного прокси через панель блок location выглядит именно так
    location / {
        # Нужно только добавить в блок location две строки ниже, остальное оставить без изменений.
        # В этом примере предполагается, что ваш конфигурационный файл хранится в каталоге /etc/nginx/conf.d/.
        # Если это BaoTa, файл, скорее всего, хранится в каталоге вроде /www; это нужно учитывать.
        auth_basic "Пожалуйста, введите имя пользователя и пароль";
        auth_basic_user_file /etc/nginx/conf.d/search.htpasswd;

        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_protocol_addr;
        proxy_pass http://127.0.0.1:8000;
        client_max_body_size 0;
    }

    # access_log ...;
    # error_log ...;
}
```

Предположим, что конфигурационный файл Nginx сохранен в `/etc/nginx/conf.d` ниже, а файл пароля мы сохраним в том же каталоге.

Выполните команду (самостоятельно замените `example_name`、`example_password` на имя пользователя и пароль, которые вы собираетесь задать):

```bash
echo "example_name:$(openssl passwd -5 'example_password')" > /etc/nginx/conf.d/search.htpasswd
```

Перезапустите Nginx (можно также перезагрузить конфигурацию).

Теперь можно открыть страницу: там уже будет предложено ввести имя пользователя и пароль. Введите ранее заданные имя пользователя и пароль, чтобы проверить, удается ли успешно войти на страницу поиска SearXNG, и тем самым убедиться, что конфигурация верна.

<figure><img src="/files/363954adadb69159f20ceb507dc7493d915d746b" alt=""><figcaption></figcaption></figure>

## Связанная с Cherry Studio конфигурация

После успешного локального развертывания SearXNG или развертывания на сервере далее идет настройка CherryStudio.

Перейдите на страницу настроек веб-поиска и выберите Searxng:

<figure><img src="/files/8d3efd729c4f06fd9870c6e3be13767bad22769c" alt=""><figcaption></figcaption></figure>

Если просто ввести ссылку на локально развернутый экземпляр, проверка завершается неудачей, но беспокоиться не стоит:

<figure><img src="/files/c0fa97d72c6ef1507741487d7ad0ac5f43d2fa52" alt=""><figcaption></figcaption></figure>

Потому что после прямого развертывания по умолчанию не настроен тип возврата json, поэтому получить данные нельзя; нужно изменить файл конфигурации.

Вернитесь в Docker, откройте вкладку Files и найдите в образе папку с тегом:

<figure><img src="/files/51f70beafd4879ebfa4c73f2f37642468c1b6063" alt=""><figcaption></figcaption></figure>

Разверните ее и продолжайте прокручивать вниз — вы найдете еще одну папку с тегом:

<figure><img src="/files/9c04a2e70b43047fe6832a109f4a24cbb675925d" alt=""><figcaption></figcaption></figure>

Продолжайте разворачивать, найдите **settings.yml** файл конфигурации:

<figure><img src="/files/adec80c61cd11670558d390cef8b2d142056d909" alt=""><figcaption></figcaption></figure>

Нажмите, чтобы открыть редактор файла:

<figure><img src="/files/91078cb81f63c4b1c3ffce8c76f406e706d51cb5" alt=""><figcaption></figcaption></figure>

Найдите 78-ю строку, можно увидеть, что тип только один — html

<figure><img src="/files/8b92b207ce4f05c5638c7287cf695a5fa19239d0" alt=""><figcaption></figcaption></figure>

После добавления типа json сохраните и снова запустите образ

<figure><img src="/files/fa0b3210379db009527f62ad5c3c3239927b9c3f" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/db03eb30b8e5b257dbd6232c76cdc6c5bbb95adf" alt=""><figcaption></figcaption></figure>

Снова вернитесь в Cherry Studio для проверки, проверка успешна:

<figure><img src="/files/615646d1a2f7ae7b8674023379bc2d56fec7f772" alt=""><figcaption></figcaption></figure>

Адрес можно указать локальный: <http://localhost> : номер порта\
Также можно указать адрес Docker:<http://host.docker.internal> : номер порта

Если пользователь последует приведенному выше примеру, развернет все на сервере и правильно настроит обратный прокси, а также включит тип возврата json. После ввода адреса и проверки, поскольку для обратного прокси уже настроена HTTP Basic Authentication, проверка должна вернуть код ошибки 401:

<figure><img src="/files/757bc1ee4311d7fe143996c766427b4ab0ef9cb7" alt=""><figcaption></figcaption></figure>

Настройте HTTP Basic Authentication на клиенте, введите только что заданные имя пользователя и пароль:

<figure><img src="/files/3ba0691ff59daf74d62c72f63385e2150b01da6a" alt=""><figcaption></figcaption></figure>

Выполните проверку — она должна пройти успешно.

### Другие настройки

На данный момент SearXNG уже имеет возможность поиска в интернете по умолчанию; если требуется настроить поисковую систему, это нужно сделать самостоятельно

Следует отметить, что этот параметр по умолчанию не влияет на конфигурацию при вызове большой модели

<figure><img src="/files/6bce811a3246f8d395a6d62c7b2fba71647f70ae" alt=""><figcaption></figcaption></figure>

Если требуется настроить поисковую систему, используемую при вызове большой модели, нужно задать в конфигурационном файле:

<figure><img src="/files/9bbfe9c0572d7b4d986c0207c3e46c4424154581" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ba0c0da625cf566076d40a8ff2ef6346ca5d90bd" alt=""><figcaption></figcaption></figure>

Справка по языку конфигурации:

<figure><img src="/files/ac9e36620b0a0aefd5e75cc9397b60d46d33a920" alt=""><figcaption></figcaption></figure>

Если содержимое слишком длинное и напрямую редактировать его неудобно, можно скопировать его в локальный IDE, а после внесения изменений просто вставить в конфигурационный файл.

## Распространенные причины неудачной проверки

### К формату возврата не добавлен формат json

В конфигурационном файле добавьте json в формат возврата:

<figure><img src="/files/6a59b3a3e3c0ebc5ce12fc340d363874b9195282" alt=""><figcaption></figcaption></figure>

### Неправильно настроена поисковая система

Cherry Studio по умолчанию выбирает для поиска движки, категории которых одновременно содержат web и general. Обычно выбираются такие движки, как Google, но из-за того, что в материковом Китае сайты вроде Google недоступны, происходит сбой. Если добавить следующую конфигурацию и заставить searxng использовать движок baidu, проблему можно решить:

```
use_default_settings:
  engines:
    keep_only:
      - baidu
engines:
  - name: baidu
    engine: baidu 
    categories: 
      - web
      - general
    disabled: false
```

### Слишком высокая скорость доступа

Конфигурация limiter в searxng препятствует доступу к API, попробуйте установить для нее false в настройках:

<figure><img src="/files/a56a284d4c9342947c697e48df1feeafe71beee1" alt=""><figcaption></figcaption></figure>

***

### Получить помощь и отправить отзыв

Если у вас в процессе настройки или использования возникнут какие-либо вопросы, баги или предложения по улучшению функций, пожалуйста, обратитесь к [Отзывы и предложения](/docs/russian/question-contact/suggestions.md) официальным каналам, указанным там.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.cherryai.com.cn/docs/russian/pre-basic/settings/websearch/searxng.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
