Локальное развертывание и настройка SearXNG
CherryStudio поддерживает веб-поиск через SearXNG. SearXNG — это проект с открытым исходным кодом, который можно развернуть локально или на сервере, поэтому его настройка немного отличается от других поставщиков, требующих API.
Ссылка на проект SearXNG:SearXNG
Преимущества SearXNG
Открытый и бесплатный, не требует API
Относительно высокая приватность
Высокая настраиваемость
Локальное развертывание
1. Прямое развертывание через Docker
Поскольку SearXNG не требует сложной настройки окружения, можно обойтись без docker compose, достаточно указать доступный порт для развертывания, поэтому самый быстрый способ — использовать Docker для прямого скачивания образа и развертывания.
1. Установка и настройка docker

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

2. Поиск и скачивание образа SearXNG
В строке поиска введите searxng :

Скачать образ:


3. Запуск образа
После успешного скачивания перейдите на images страницу:

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

Откройте параметры для настройки:

В качестве примера 8085 порта:

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

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

Развертывание на сервере
Учитывая, что установка Docker в Windows может быть сложной, пользователи могут развернуть SearXNG на сервере и при желании поделиться им с другими. К сожалению, сам SearXNG в настоящее время не поддерживает аутентификацию, поэтому кто-то может технически обнаружить и злоупотребить вашим экземпляром.
По этой причине Cherry Studio теперь поддерживает настройку HTTP базовой аутентификации (RFC7617), если пользователь хочет выставить свой развернутый SearXNG в публичный Интернет, пожалуйста,обязательносконфигурируйте HTTP базовую аутентификацию через обратный прокси вроде Nginx. Ниже приведено краткое руководство, для которого потребуются базовые знания администрирования Linux.
Развертывание SearXNG
Аналогично, по-прежнему используем Docker. Предположим, вы уже следовалиофициальному руководствуи установили на сервере последнюю версию Docker CE, ниже приведена «одна команда» для чистой установки в Debian:
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
# 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: $(openssl rand -hex 32)
limiter: false # can be disabled for a private instance
image_proxy: $IMAGE_PROXY
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
search:
formats:
- html
- json
EOFЕсли нужно изменить локальный порт прослушивания или использовать существующий локальный nginx, можно отредактировать docker-compose.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 базовой аутентификации
Если вы используете панель управления сервером, например Baota (宝塔) или 1Panel, обратитесь к их документации для добавления сайта и настройки nginx обратного прокси, затем найдите место для редактирования конфигурации nginx и внесите изменения по примеру ниже:
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 "Please enter your username and password";
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 на имя пользователя и пароль, которые вы хотите установить):
echo "example_name:$(openssl passwd -5 'example_password')" > /etc/nginx/conf.d/search.htpasswdПерезапустите Nginx (также можно перезагрузить конфигурацию).
Теперь можно открыть страницу в браузере — она должна запросить имя пользователя и пароль. Введите ранее заданные логин и пароль, чтобы проверить доступ к поисковой странице SearXNG и убедиться, что настройка правильная.

Настройки, связанные с Cherry Studio
После успешного локального или серверного развертывания SearXNG далее следует настроить CherryStudio.
Перейдите на страницу настроек веб-поиска и выберите Searxng:

Если при вводе локального адреса валидация не проходит, не волнуйтесь:

после прямого развертывания по умолчанию не настроен тип возврата json, поэтому данные не получаются — нужно изменить конфигурационный файл.
Вернитесь в Docker, откройте вкладку Files и найдите в образе папку с меткой:

Разверните её и прокрутите ниже, вы увидите другую папку с меткой:

Продолжайте раскрывать и найдите settings.yml файл конфигурации:

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

Найдите строку 78 — там показан только тип html

Добавьте тип json, сохраните и перезапустите образ


Вернитесь в Cherry Studio и повторите валидацию — она должна пройти успешно:

В адрес можно указать локальный: http://localhost : порт или указать адрес для Docker:http://host.docker.internal : порт
Если вы следовали примеру для серверного развертывания и правильно настроили обратный прокси, а также включили возвращаемый тип json, при валидации адреса, учитывая что для обратного прокси настроена HTTP базовая аутентификация, должен вернуться код ошибки 401:

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

Проведите валидацию — она должна пройти успешно.
Другие настройки
Теперь SearXNG имеет базовую возможность поиска в интернете; если нужно настроить конкретные поисковые движки, делайте это самостоятельно в конфигурации
Стоит отметить, что эти предпочтения не влияют на конфигурацию при вызове больших моделей

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


Справочник по конфигурации:

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

Поисковый движок настроен неправильно
Cherry Studio по умолчанию выбирает движки, у которых categories включают web и general; по умолчанию это такие движки как google, доступ к которым в материковом Китае невозможен, что приводит к ошибкам. Добавление следующей конфигурации заставит searxng принудительно использовать движок baidu и решит проблему:
use_default_settings:
engines:
keep_only:
- baidu
engines:
- name: baidu
engine: baidu
categories:
- web
- general
disabled: falseСлишком высокая частота запросов
Конфигурация limiter в searxng препятствует доступу к API — попробуйте установить её в false в настройках:

Последнее обновление
Это было полезно?