老赵写字的地方

SearXNG

SearXNG 是一个开源的元搜索引擎,聚合来自 Google、Bing、Brave、DuckDuckGo、百度、B站 等 279 个搜索服务1) 的搜索结果,去重后统一展示。项目在 GitHub 上有 33.5K 星标2),Docker 镜像下载超 5000 万次3),是社区最活跃的元搜索引擎之一。

Docker Compose 配置

name: searxng

services:
  core:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
    environment:
      - UWSGI_WORKERS=1
    volumes:
      - ./config:/etc/searxng:rw
      - ./data:/var/cache/searxng:rw

  mcp:
    container_name: searxng-mcp
    image: knucklessg1/searxng-mcp:latest
    restart: unless-stopped
    depends_on:
      - core
    ports:
      - "127.0.0.1:4445:8000"
    environment:
      - SEARXNG_URL=http://core:8080
    command: searxng-mcp -t streamable-http -H 0.0.0.0 -p 8000

配置要点:

  • 所有端口绑定 127.0.0.1,仅限本地访问
  • UWSGI_WORKERS=1 降低内存占用
  • MCP 环境变量用 SEARXNG_URL 而非 SEARXNG_BASE_URL
  • 无需 Redis/Valkey

初始化

1. 创建配置目录

mkdir -p searxng/config searxng/data

2. 启用 JSON API SearXNG 默认只返回 HTML,需要在 config/settings.yml 中启用 JSON 格式4):

use_default_settings: true

search:
  formats:
    - html
    - json

server:
  secret_key: "<生成随机密钥>"
  image_proxy: true

3. 启动并测试

docker compose up -d
curl 'http://localhost:8080/search?q=树莓派&format=json'

MCP 客户端接入

MCP 桥接容器 knucklessg1/searxng-mcp5) 将 SearXNG 的 JSON API 转换为 MCP 协议,供 LLM 客户端调用。

SSH 隧道转发(端口绑定 127.0.0.1):

ssh -L 4445:127.0.0.1:4445 -f -N root@<VPS_IP>

客户端 MCP 配置:

{
  "searxng": {
    "url": "http://localhost:4445/",
    "timeout": 120
  }
}

硬件占用

容器 内存 CPU
searxng (core) ~127MB <0.1% 空闲,<1% 搜索时
searxng-mcp ~40MB <0.1%
总计 ~167MB

一次搜索在 7 个引擎同时查询,耗时约 1-2 秒。

内置引擎

SearXNG 自带 279 个内置引擎6),包括:

  • 通用搜索:Google、Bing、Brave、DuckDuckGo、百度、搜狗、360
  • 学术搜索:Google Scholar、arXiv、PubMed、Semantic Scholar、Crossref
  • 视频:YouTube、Bilibili、Niconico、Vimeo、Dailymotion
  • 图片:Google Images、Bing Images、Pixabay、Unsplash、Flickr
  • 社交:Reddit、Hacker News、Mastodon、Lemmy
  • 开发:GitHub、GitLab、PyPI、npm、Docker Hub、Stack Exchange
  • 百科:Wikipedia、Wikidata、百度百科

安全

  • 所有端口绑定 127.0.0.1,不对外暴露
  • settings.yml 中需设置 secret_key
  • 可通过 Tor 匿名化搜索请求7)
  • Valkey(Redis)非必需,可不部署
zh/searxng/start.txt · 最后更改: 由 dsbot