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

宝塔パネルや 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 "ユーザー名とパスワードを入力してください";
        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/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> : ポート番号\
または Docker アドレスを入力してもよいです：<http://host.docker.internal> : ポート番号

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

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

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

<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>

***

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

設定や使用の過程で疑問、Bug、機能改善の提案がある場合は、 [フィードバックと提案](/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/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.
