chore(deploy): 本机 SearXNG 兜底搜索服务配置(宿主端口 38471,按可达性裁剪引擎)
- 用途:给 web-search 工具一个本机可达、零 API key 的搜索端点(外部服务,如 docker cyrene-pg,不碰单端口红线) - 实测踩坑都写进注释:① search.formats 必须含 json(默认只给 html)② server.limiter 必须 false(限流器会拒 API)③ **引擎必须按本机网络裁剪**——默认集 google/duckduckgo/brave/qwant/startpage/wikipedia 全部 ConnectTimeout,baidu/quark 被 CAPTCHA,360search 超时 ⇒ 只留真在产出的 bing + sogou - 宿主端口 38471(避开常见端口);容器内仍是 8080;--restart unless-stopped - 自检命令写在文件头:要求「非空 results 且 unresponsive_engines 为空」
This commit is contained in:
1 parent
14e76b6480
commit
e792fe655b
1 file changed
+73
@@ -0,0 +1,73 @@
|
|||||||
|
# SearXNG 配置(Cyrene v2「网络搜索」的兜底后端)
|
||||||
|
#
|
||||||
|
# 用途:给 plugins/tools/io 的 web-search 工具提供一个**本机可达**的搜索端点,
|
||||||
|
# 不依赖任何第三方 API key。它不是 Cyrene 自己的监听端口(不碰「单端口」红线),
|
||||||
|
# 而是像 docker `cyrene-pg` 一样的**外部服务**。
|
||||||
|
#
|
||||||
|
# 起法(宿主机可达,必须发布端口;后端跑在宿主机上而不是 compose 内网):
|
||||||
|
# ⚠️ 宿主端口用 **38471**(不常见,避免与其它项目撞车);容器内部仍是 8080,宿主机看不到它。
|
||||||
|
# docker rm -f cyrene-searxng 2>/dev/null
|
||||||
|
# docker run -d --name cyrene-searxng --restart unless-stopped \
|
||||||
|
# -p 38471:8080 \
|
||||||
|
# -v "D:/Project/Code/Uni/Cyrene_v2/scripts/searxng/settings.yml:/etc/searxng/settings.yml:ro" \
|
||||||
|
# searxng/searxng:latest
|
||||||
|
# 自检(必须能拿到非空 results 且 unresponsive_engines 为空,否则 web-search 工具等于没接):
|
||||||
|
# curl -s "http://127.0.0.1:38471/search?q=test&format=json" | head -c 200
|
||||||
|
# curl -s "http://127.0.0.1:38471/search?q=%E6%B5%8B%E8%AF%95&format=json" | python -c "import sys,json;d=json.load(sys.stdin);print(len(d['results']), d['unresponsive_engines'])"
|
||||||
|
#
|
||||||
|
# ⚠️ 三处关键(少任何一处都会「能返回 JSON 但结果是空的」):
|
||||||
|
# 1) search.formats 必须含 json —— 默认只给 html;
|
||||||
|
# 2) server.limiter: false —— 限流器会以「请求过频/非浏览器」为由拒掉 API 调用;
|
||||||
|
# 3) **引擎必须按本机网络可达性裁剪**:默认引擎集(google/duckduckgo/brave/qwant/
|
||||||
|
# startpage/wikipedia…)在**这台机器的网络下全部超时**(2026-10-05 实测),
|
||||||
|
# 既不产出结果、还每次白等 3 秒超时 ⇒ 关掉它们、只留国内可达的
|
||||||
|
# (baidu / bing / sogou / 360search / quark)。
|
||||||
|
use_default_settings: true
|
||||||
|
|
||||||
|
server:
|
||||||
|
secret_key: "cyrene-v2-searxng-local-fallback-6f3a9c1d"
|
||||||
|
limiter: false
|
||||||
|
image_proxy: false
|
||||||
|
|
||||||
|
search:
|
||||||
|
formats:
|
||||||
|
- html
|
||||||
|
- json
|
||||||
|
# 中文为主:让 SearXNG 按查询自动选语言(默认 auto,这里显式写清意图)
|
||||||
|
default_lang: auto
|
||||||
|
# 只跑可达引擎后,2 秒足够;留一点余量避免偶发慢请求被判超时
|
||||||
|
max_page: 1
|
||||||
|
|
||||||
|
outgoing:
|
||||||
|
request_timeout: 6.0
|
||||||
|
max_request_timeout: 10.0
|
||||||
|
|
||||||
|
engines:
|
||||||
|
# ---- 本机可达且真在产出(2026-10-05 实测):只留这两把 ----
|
||||||
|
- name: bing
|
||||||
|
disabled: false
|
||||||
|
- name: sogou
|
||||||
|
disabled: false
|
||||||
|
# ---- 实测不可用:一律关掉(留着只会每次白等 3–6 秒,还让 unresponsive_engines 充满噪音)----
|
||||||
|
# 360search → timeout;baidu → Suspended: CAPTCHA;quark → CAPTCHA
|
||||||
|
# google/duckduckgo/brave/qwant/startpage/wikipedia/wikidata → ConnectTimeout(本机网络不可达)
|
||||||
|
- name: baidu
|
||||||
|
disabled: true
|
||||||
|
- name: 360search
|
||||||
|
disabled: true
|
||||||
|
- name: quark
|
||||||
|
disabled: true
|
||||||
|
- name: google
|
||||||
|
disabled: true
|
||||||
|
- name: duckduckgo
|
||||||
|
disabled: true
|
||||||
|
- name: brave
|
||||||
|
disabled: true
|
||||||
|
- name: qwant
|
||||||
|
disabled: true
|
||||||
|
- name: startpage
|
||||||
|
disabled: true
|
||||||
|
- name: wikipedia
|
||||||
|
disabled: true
|
||||||
|
- name: wikidata
|
||||||
|
disabled: true
|
||||||
Reference in new issue
Block a user