SearXNG:开源隐私保护元搜索引擎及Kubernetes部署指南
简介
SearXNG 是一款开源、隐私友好的元搜索引擎,它从多达 279 个搜索服务中聚合搜索结果,而不会跟踪或记录用户的搜索行为。与传统搜索引擎不同,SearXNG 不会构建用户画像,也不存储个人数据,为用户提供真正的匿名搜索体验。此外,SearXNG 还支持通过 Tor 网络进行匿名搜索,进一步保护用户隐私。
主要优点
1. 隐私保护
- 无跟踪:不记录用户搜索历史,不存储 Cookie 或个人信息。
- 无画像:不会根据搜索行为构建用户画像,避免个性化广告和信息茧房。
- Tor 支持:可通过 Tor 网络匿名访问,适合对隐私要求极高的用户。
2. 开源透明
- 代码完全开源,任何人都可以审查、修改或部署自己的实例。
- 无后门,无商业利益驱动,确保搜索结果的公正性。
3. 多引擎聚合
- 支持 279 个搜索引擎,涵盖通用搜索、图片、视频、新闻、学术、地图等多个类别。
- 用户可自定义启用或禁用特定搜索引擎,灵活选择搜索来源。
4. 自定义搜索语法
- 支持通过
!前缀选择搜索引擎或类别,例如:!g:使用 Google 搜索!images:搜索图片!map:搜索地图
- 支持
:language语法指定搜索语言,例如:zh搜索中文结果。 - 支持 DuckDuckGo 的
!!外部跳转功能,快速跳转到外部网站。
5. 无广告
- 纯净的搜索结果,无广告干扰。
6. 自托管
- 用户可以部署自己的 SearXNG 实例,完全掌控数据和搜索体验。
7. AI Agent 调用支持
- JSON API:SearXNG 提供
/search端点,支持format=json参数,返回结构化 JSON 数据,方便 AI Agent 直接解析。 - 零成本无限调用:自建实例无 API 调用次数限制,无需付费,适合 Deep Research、RAG 等高频搜索场景。
- LangChain 集成:官方提供
SearxSearchWrapper和SearxSearchResults工具,一行代码即可接入 LangChain Agent。 - MCP Server:社区已有 SearXNG MCP Server 实现,支持 Claude Desktop、Cursor 等 MCP 客户端直接调用。
- 多引擎切换:Agent 可通过
engines参数指定搜索引擎(如github、arxiv、wikipedia),精准获取特定来源信息。
Kubernetes 部署指南
前提条件
- Kubernetes 集群(v1.20+)
- Helm(v3+)
- Traefik 或其他 Ingress Controller(可选)
1. 使用 Helm 安装 SearXNG
添加 Helm 仓库
helm repo add kubito https://kubitodev.github.io/helm-charts
helm repo update
准备 values.yaml 配置文件
# values.yaml
image:
repository: searxng/searxng
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
className: "traefik"
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
- host: searxng.yourdomain.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: searxng-tls
hosts:
- searxng.yourdomain.com
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
# 生成随机密钥(安装时自动生成)
searxng:
secretKey: ""
安装 SearXNG
helm install searxng kubito/searxng -f values.yaml
2. 使用 Kubernetes Manifest 部署
准备 configmap-template.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: searxng-config
data:
settings.yml: |
use_default_settings: true
server:
secret_key: "${SEARXNG_SECRET_KEY}"
search:
safe_search: 1
autocomplete: "google"
engines:
- name: google
disabled: false
- name: bing
disabled: false
准备 deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: searxng
spec:
replicas: 1
selector:
matchLabels:
app: searxng
template:
metadata:
labels:
app: searxng
spec:
containers:
- name: searxng
image: searxng/searxng:latest
ports:
- containerPort: 8080
env:
- name: SEARXNG_SECRET_KEY
valueFrom:
secretKeyRef:
name: searxng-secret
key: secret_key
volumeMounts:
- name: config-volume
mountPath: /etc/searxng
volumes:
- name: config-volume
configMap:
name: searxng-config
准备 service.yaml
apiVersion: v1
kind: Service
metadata:
name: searxng
spec:
selector:
app: searxng
ports:
- protocol: TCP
port: 8080
targetPort: 8080
准备 ingress.yaml(Traefik 示例)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: searxng-ingress
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
ingressClassName: traefik
rules:
- host: searxng.yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: searxng
port:
number: 8080
tls:
- hosts:
- searxng.yourdomain.com
secretName: searxng-tls
部署步骤
# 生成随机密钥
export SEARXNG_SECRET_KEY=$(openssl rand -hex 32)
kubectl create secret generic searxng-secret --from-literal=secret_key=$SEARXNG_SECRET_KEY
# 部署 ConfigMap
envsubst < configmap-template.yaml | kubectl apply -f -
# 部署 Deployment、Service、Ingress
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
如何使用 SearXNG
基本搜索
- 在搜索框中输入关键词,按回车即可搜索。
- 支持通用搜索、图片、视频、新闻、地图等多个类别。
高级搜索语法
!engine:指定搜索引擎,例如!g使用 Google,!bing使用 Bing。!category:指定搜索类别,例如!images搜索图片,!videos搜索视频。:language:指定搜索语言,例如:zh搜索中文结果。!!bang:使用 DuckDuckGo 的外部跳转功能,例如!!w 维基百科直接跳转到维基百科。
自定义偏好设置
- 点击右上角的 “Preferences” 进入设置页面。
- 可自定义搜索引擎、搜索语言、安全搜索级别等。
- 支持导出/导入设置,方便备份和迁移。
AI Agent 调用方法
1. 启用 JSON API
在 settings.yml 中添加 json 格式支持:
search:
formats:
- html
- json
2. 直接调用 API
curl -kLX GET “https://searxng.yourdomain.com/search?q=langchain&format=json”
返回结构化 JSON,包含 results、answers、suggestions 等字段,Agent 可直接解析。
3. LangChain 集成
from langchain_community.tools.searx_search.tool import (
SearxSearchResults,
SearxSearchWrapper,
)
wrapper = SearxSearchWrapper(searx_host=“https://searxng.yourdomain.com”)
# 通用搜索工具
general_tool = SearxSearchResults(
name=“WebSearch”,
wrapper=wrapper,
kwargs={“num_results”: 10},
)
# 指定引擎搜索(如 GitHub)
github_tool = SearxSearchResults(
name=“Github”,
wrapper=wrapper,
kwargs={“engines”: [“github”]},
)
# 学术搜索
arxiv_tool = SearxSearchResults(
name=“Arxiv”,
wrapper=wrapper,
kwargs={“engines”: [“arxiv”]},
)
4. 配置示例(settings.yml 完整版)
use_default_settings: true
server:
secret_key: “your-secret-key”
bind_address: “0.0.0.0”
port: 8080
search:
safe_search: 1
autocomplete: “google”
formats:
- html
- json
engines:
- name: google
disabled: false
- name: duckduckgo
disabled: false
- name: wikipedia
disabled: false
- name: github
disabled: false
- name: arxiv
disabled: false
安全最佳实践
- 启用 HTTPS:确保所有流量通过 HTTPS 加密传输。
- 限制访问速率:使用 Traefik 或其他 Ingress Controller 限制访问频率,防止滥用。
- 定期更新:保持 SearXNG 和 Kubernetes 集群的版本更新,修补安全漏洞。
- 监控日志:监控访问日志,及时发现异常行为。
总结
SearXNG 是一款强大的开源元搜索引擎,专注于隐私保护和用户自主性。通过 Kubernetes 部署 SearXNG,可以轻松实现高可用、可扩展的搜索服务,适合个人、团队或组织自托管使用。无论是追求隐私保护,还是希望摆脱商业搜索引擎的广告和跟踪,SearXNG 都是一个理想的选择。
参考链接: