SearXNG极简部署教程, 自建隐私搜索引擎

在数据隐私日益受到关注的今天,拥有一个私有的、可定制的元搜索引擎显得格外有吸引力。SearXNG 作为 SearX 的现代化社区分支,支持聚合数十种搜索引擎结果、内置翻译功能且默认无跟踪,是自托管搜索服务的上佳选择。本文将分享一个极简的 Docker 部署方案,让你在几分钟内跑起属于自己的隐私搜索实例。

1. 环境准备

首先,在服务器上创建一个专用目录用于存放 SearXNG 的持久化配置。这里我们选择 ~/services/searxng,并设置服务将使用的端口:

mkdir -p ~/services/searxng && cd $_
export SEARXNG_PORT=8080

端口可按需修改,确保未被其他服务占用即可。

2. 容器化部署

SearXNG 官方提供了维护良好的 Docker 镜像,一条命令即可完成拉取与运行。

2.1 拉取官方镜像

docker pull searxng/searxng

2.2 启动容器

推荐使用以下命令启动容器,并绑定本地配置文件目录以实现持久化:

docker run -d --restart=unless-stopped \
  -p ${SEARXNG_PORT}:8080 \
  -v "${PWD}/config:/etc/searxng" \
  -e "BASE_URL=http://your-domain.com" \
  -e "INSTANCE_NAME=PrivateSearch" \
  searxng/searxng

2.3 参数说明

  • -v "${PWD}/config:/etc/searxng"
    将容器内的 /etc/searxng 目录挂载到宿主机的当前目录下的 config 文件夹,所有配置文件(如 settings.ymlengines 列表)都会持久化保存,容器重建后配置不丢失。
  • --restart=unless-stopped
    保证服务异常退出或宿主机重启后自动重新拉起容器,实现开机自启。
  • -e "BASE_URL=..."
    设置服务对外暴露的访问地址,后续若通过反向代理或域名访问,需将其替换为实际域名。若暂不确定也可先留空,部署完成后再修改配置文件。
  • -e "INSTANCE_NAME=..."
    定义实例名称,会显示在页面标题和页脚中,便于辨识。

启动成功后,通过浏览器访问 http://<服务器IP>:8080 即可看到 SearXNG 的搜索界面。

3. 高频问题排雷

在实际使用中,可能会遇到一些典型问题,这里提前给出解决方案。

3.1 镜像拉取失败

现象
Error response from daemon: pull access denied 或拉取速度极慢。

解决方案
Docker Hub 在国内访问不稳定是常见问题,可参考先前 Overleaf Toolkit 踩坑记录为 Docker 配置国内镜像加速源(如阿里云、中科大镜像站)。修改 /etc/docker/daemon.json 后重启 Docker 服务即可。

3.2 Google 频繁拦截

现象
搜索时频繁出现 Too Many Requests 错误,特别是使用 Google 引擎时。

原因与对策
这属于搜索引擎反爬机制的常见问题。Google 对来自数据中心 IP 的请求限制较严,更换干净的代理是目前较为有效的缓解手段。笔者在美国、香港、日本等地均部署有 VPS 作为代理节点,通过轮换尝试总能找到当前可用的线路。

在 SearXNG 的配置文件 settings.yml 中设置全局代理:

outgoing:
  proxies:
    all://:
      - http://<代理IP>:<端口>

保存配置后重启容器生效。

4. 效果展示与体验

  • 多引擎结果聚合对比
    一次性搜索 Google、Bing、DuckDuckGo 等多个来源,支持分引擎查看结果。
  • 支持 30+ 语言实时翻译
    内置翻译引擎,搜索结果页可直接翻译标题与摘要。

  • 零 Cookie 跟踪的隐私模式
    默认不存储用户搜索记录,不注入跟踪代码,真正做到隐私优先。
  • 主题切换
    内置浅色/深色主题,可按个人喜好调整。

5. 进阶优化建议

5.1 反向代理配置

若需通过域名并提供 HTTPS 访问,可使用 Nginx 或 Caddy 配置反向代理。网上相关教程丰富,此处不再赘述。笔者的实例即通过位于香港的 VPS 反代至公网,同时开启了 Let's Encrypt 证书实现 HTTPS 加密。

5.2 定期维护命令

为保持搜索引擎列表与最新支持同步,可定期执行以下命令更新引擎信息:

docker exec -it searxng python -m searx.engines --update

该命令会扫描并刷新可用引擎的配置,避免因上游引擎变更导致部分搜索失效。

5.3 监控指标集成

SearXNG 内置 Prometheus 指标端点(默认路径 /metrics),可轻松集成监控。使用以下命令启动 Prometheus 容器并与 SearXNG 网络联通:

docker run -d --network=searxng-net \
  -v "${PWD}/metrics:/metrics" \
  prom/prometheus --config.file=/metrics/searxng.yml

在 Prometheus 配置文件中添加 SearXNG 的抓取任务,即可获得搜索请求数、引擎响应时间等统计信息,便于掌握服务运行状态。

6. 结语

通过 Docker 部署 SearXNG 仅需数条命令,却能换来一个功能强大、隐私友好的私有搜索门户。无论是个人日常使用还是为小团队提供内网搜索服务,这套方案都足够轻量且易于维护

THE END