> 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/jp/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 を使わず、空いているポートを 1 つ用意するだけでデプロイできます。そのため、最も手軽な方法は Docker で直接イメージを取得してデプロイすることです。

#### 1. ダウンロード・インストールして設定 [docker](https://www.docker.com/)

<figure><img src="/files/8014e867519b0ac24708cc02a74ca9ff7918ea1c" alt=""><figcaption></figcaption></figure>

インストール後、イメージの保存先パスを 1 つ選択します：

<figure><img src="/files/2f1e77d36b5cf1475ffe510170ede4b288df1e75" alt=""><figcaption></figcaption></figure>

#### 2. SearXNG イメージを検索して取得

検索欄に入力 **searxng** ：

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

イメージを取得：

<figure><img src="/files/57cd7216706850db957ecda2bd157c85848ba4ed" alt=""><figcaption></figcaption></figure>

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

#### 3. イメージを実行

取得に成功したら **images** ページへ：

<figure><img src="/files/82adefa2910a3f03e02446ed0b8d4e16aa20c2fc" alt=""><figcaption></figcaption></figure>

取得したイメージを選択して［実行］をクリック：

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

設定項目を開いて設定します：

<figure><img src="/files/64140ada66c1d5e15d72a2833592c245bfabd7ea" alt=""><figcaption></figcaption></figure>

例として `8085` ポートを例にすると：

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

実行に成功したらリンクをクリックするだけで SearXNG のフロントエンド画面を開けます：

<figure><img src="/files/2187d832a8744278a7bd1f92f0ee11d75ae41cc5" alt=""><figcaption></figcaption></figure>

このページが表示されればデプロイ成功です：

<figure><img src="/files/54ac15caf02dcbcd6eada1c0cfaf2e91818ff260" alt=""><figcaption></figcaption></figure>

## サーバーへのデプロイ

Windows で Docker をインストールするのはやや面倒なため、SearXNG をサーバーにデプロイして他の人と共有することもできます。しかし残念ながら、SearXNG 自体は現時点で認証をサポートしていないため、他人が技術的手段であなたのデプロイしたインスタンスを見つけて悪用する可能性があります。

そのため、Cherry Studio は現在、 [HTTP Basic 認証（RFC7617）](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/Authentication)を設定できます。ユーザーが自分でデプロイした SearXNG をインターネット上に公開したい場合は、 **必ず** Nginx などのリバースプロキシソフトで HTTP Basic 認証を設定してください。以下に簡単なチュートリアルを示しますが、基本的な 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 認証をデプロイ

宝塔パネルや 1Panel などのサーバーパネルを使用している場合は、ドキュメントを参照してサイトを追加し、nginx のリバースプロキシを設定してください。その後、nginx 設定ファイルを編集する場所を見つけ、以下の例を参考に変更します：

```conf
server
{
    listen 443 ssl;

    # この行はあなたのホスト名です
    server_name search.example.com;

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

    # SSL を設定している場合は、この 2 行が必要です
    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 ブロックに以下の 2 行を追加するだけでよく、他はそのままで構いません。
        # この例では、設定ファイルが /etc/nginx/conf.d/ ディレクトリに保存されていると仮定しています。
        # 宝塔の場合は /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` は、これから設定するユーザー名とパスワードに置き換えてください）：

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

Nginx を再起動します（設定の再読み込みでも可）。

この時点で Web ページを開くと、ユーザー名とパスワードの入力を求められます。先ほど設定したユーザー名とパスワードを入力し、SearXNG の検索ページに正常に入れるか確認して、設定が正しいかチェックしてください。

<figure><img src="/files/31e3e7a6bf557fcf730a9394b36592f6f9becbe4" alt=""><figcaption></figcaption></figure>

## Cherry Studio の関連設定

SearXNG をローカルまたはサーバーにデプロイできたら、次は CherryStudio の関連設定です。

ネット検索設定ページに移動し、Searxng を選択します：

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

ローカルデプロイのリンクを直接入力すると検証失敗になりますが、この時は心配いりません：

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

直接デプロイした後はデフォルトで json の返却形式が設定されていないため、データを取得できません。設定ファイルを変更する必要があります。

Docker に戻り、Files タブでイメージ内のタグ付きフォルダを見つけます：

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

展開してさらに下へスクロールすると、別のタグ付きフォルダが見つかります：

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

さらに展開して、 **settings.yml** 設定ファイルを見つけます：

<figure><img src="/files/32c419d18ab80304a368a0e694ca8564dc57aee6" alt=""><figcaption></figcaption></figure>

クリックしてファイルエディタを開きます：

<figure><img src="/files/7f5ff175f7d22dfc16fbc95dd0a8cd2ddd098a05" alt=""><figcaption></figcaption></figure>

78 行目を見つけると、形式が html しかないことがわかります

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

json 形式を追加して保存し、イメージを再実行します

<figure><img src="/files/47db49e9596a6a84ea983f6536e05dd6ca8a2027" alt=""><figcaption></figcaption></figure>

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

Cherry Studio に戻って再度検証します。検証成功：

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

アドレスはローカルでも指定できます： <http://localhost> : ポート番号\nDocker のアドレスでも指定できます：<http://host.docker.internal> : ポート番号

ユーザーが前述の例に従ってサーバーにデプロイし、リバースプロキシを正しく設定し、json 返却形式も有効にしている場合、アドレスを入力して検証すると、リバースプロキシに HTTP Basic 認証が設定されているため、この時点での検証は 401 エラーコードを返すはずです：

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

クライアント側で HTTP Basic 認証を設定し、先ほど設定したユーザー名とパスワードを入力します：

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

検証を行うと、成功するはずです。

### その他の設定

この時点で SearXNG はデフォルトのネット検索機能を備えています。検索エンジンをカスタマイズしたい場合は、自分で設定する必要があります

注意すべきなのは、ここでの優先設定は大規模モデル呼び出し時の設定には影響しないことです

<figure><img src="/files/017c46220688aa24f0df586b7bc478332fb740b9" alt=""><figcaption></figcaption></figure>

大規模モデルの呼び出しで使用する検索エンジンを設定したい場合は、設定ファイルで次を指定します：

<figure><img src="/files/7ef52490ca0fdfdd2fab748a9fd8fbe404ac0f0b" alt=""><figcaption></figcaption></figure>

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

設定言語の参考：

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

内容が長くて直接編集しづらい場合は、ローカルの IDE にコピーし、修正後に設定ファイルへ貼り付ければ問題ありません。

## 検証失敗のよくある原因

### 返却形式に json 形式が追加されていない

設定ファイルで返却形式に json を追加します：

<figure><img src="/files/1ffc5b0199ccd6ab2656af00bb65db45ebb2a1d4" 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
```

### アクセス速度が速すぎる

searxng の limiter 設定が API アクセスを妨げています。設定で false にしてみてください：

<figure><img src="/files/371057644db29ea71f91b0872709bc564a97efac" alt=""><figcaption></figcaption></figure>

***

### ヘルプの取得とフィードバックの送信

設定または使用中に不明点、バグ、機能改善の提案がある場合は、 [フィードバックと提案](/docs/jp/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/jp/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.
