SearXNG セルフホスティング設定

SearXNG のデプロイと設定

CherryStudio は SearXNG を介したウェブ検索をサポートしています。SearXNG はローカル環境またはサーバーにデプロイ可能なオープンソースプロジェクトであるため、APIプロバイダーを必要とする他の設定方法とは異なります。

SearXNG プロジェクトリンク: SearXNG

SearXNG の利点

  • オープンソースで無料、API不要

  • 比較的高いプライバシー性

  • 高度なカスタマイズが可能

ローカルデプロイ

一、Docker を使用した直接デプロイ

SearXNG は複雑な環境設定を必要としないため、docker compose を使用せずに空いているポートを提供するだけでデプロイできます。最も迅速な方法は Docker を使用して直接イメージをプルしデプロイすることです。

1. docker のダウンロードとインストール

インストール後にイメージ保存パスを選択:

2. SearXNG イメージの検索とプル

検索バーに searxng と入力:

イメージをプル:

3. イメージの実行

プル後、images ページに移動:

プルしたイメージを選択して実行:

設定を開いて構成:

8085 ポートを例に:

実行成功後にリンクをクリックすると SearXNG のフロントエンドインターフェースが開きます:

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

サーバーデプロイ

Windows に Docker をインストールするのは面倒なため、ユーザーは SearXNG をサーバーにデプロイし、他の人と共有することも可能です。ただし、残念ながら SearXNG 自体は現在認証をサポートしていないため、技術的手段であなたがデプロイしたインスタンスをスキャンして悪用される可能性があります。

このため、Cherry Studio は現在 HTTP基本認証(RFC7617) の設定をサポートしています。デプロイした SearXNG を公網環境に公開する場合は、必ず Nginx などのリバースプロキシソフトウェアで HTTP基本認証を設定してください。基本的な 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:
    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 を再利用する場合は以上を削除
  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設定ファイルを修正してください。 以下の例を参考に修正します:

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ブロックに以下の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_nameexample_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 などのエンジンを選択します。大陸では google などのサイトに直接アクセスできないため失敗します。以下の設定を追加することで searxng が強制的に baidu エンジンを使用するようになり、問題が解決します:

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

アクセス速度が速すぎる

searxng の limiter 設定が API アクセスを妨げるため、設定で false に設定してください:

最后更新于

这有帮助吗?