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.
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 配置文件嘅位, 參考下面嘅示例去修改:
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/ 目錄下.
# 如果係寶塔應該係儲存在 /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 等引擎,但因為內地無法直接訪問 google 等網站導致失敗。加以下配置令 searxng 強制使用 baidu 引擎,就可以解決問題:
use_default_settings:
engines:
keep_only:
- baidu
engines:
- name: baidu
engine: baidu
categories:
- web
- general
disabled: false訪問速率過快
searxng 嘅 limiter 配置阻礙咗 API 訪問,請嘗試喺設定中將佢設為 false:

Last updated
Was this helpful?