> 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/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. Предположим, что вы уже установили последнюю версию Docker CE на сервере согласно[официальной инструкции](https://docs.docker.com/engine/install)Ниже приведена готовая последовательность команд, подходящая для чистой установки в 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 или 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 по умолчанию выбирает для поиска движки, у которых categories одновременно содержат 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/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.
