SearXNG:在 VPS 上搭建不受追踪的私人搜索引擎
普通搜索引擎可以将搜索请求与 IP 地址、Cookie 和操作历史关联起来。SearXNG 改变了请求路径:浏览器访问你的实例,再由实例查询多个外部搜索引擎,并将它们的结果汇总到同一个页面中。
外部来源看到的是 SearXNG 服务器的地址,而不是用户的 Cookie。服务本身也不会建立广告画像。不过,这并不等于完全匿名:公共实例的所有者在技术上可以保留日志,而当用户打开搜索结果中的链接后,目标网站仍会重新与浏览器直接交互。
下面将介绍 SearXNG 的功能,并在 VPS 上安装一个带有 HTTPS 和密码保护的私人实例。
SearXNG 是什么,它如何工作
SearXNG 是一款免费、开源的元搜索引擎。它没有自己的网站索引,而是从已配置的搜索引擎和专业信息源获取结果,将结果统一整理后显示在一个界面中。
浏览器 → 你的 SearXNG → 搜索引擎
↓
汇总结果每次搜索时,SearXNG 会:
- 判断搜索类别,例如网页、图片、新闻、视频或其他类别;
- 以服务器的名义访问选定的信息源;
- 不向这些来源发送用户的 Cookie,并为外发请求使用随机浏览器配置;
- 将返回结果汇总到同一个搜索页面中。
速度取决于外部系统:它们可能响应缓慢、显示 CAPTCHA,或封锁服务器 IP。SearXNG 是一层可控的中间服务,而不是独立运行的搜索索引。
为什么 SearXNG 比单一搜索引擎更有吸引力
在同一结果页中整合不同来源
你可以把通用搜索引擎与专业来源组合起来,例如百科全书、地图、科研论文、代码仓库、新闻服务或图片目录。当普通搜索结果被 SEO 页面淹没,或难以找到小众资料时,这种方式尤其有用。
在本文撰写时,官方文档列出了 272 个集成,其中 83 个默认启用。但这并不意味着所有集成都同样稳定。
具体使用哪些来源取决于配置。通常,启用少量稳定来源会比同时开启全部来源更快。
快捷命令
借助缩写命令,可以临时指定搜索引擎、类别或语言:
!wp docker compose — 在维基百科中搜索
!images 极光 — 搜索图片
:zh !wp 代理服务器 — 用中文在维基百科中搜索命令 !! 会把用户直接重定向到外部搜索引擎。在这种模式下,SearXNG 的保护不再生效。
为浏览器和自有工具提供搜索能力
SearXNG 支持 OpenSearch,因此可以设为浏览器的默认搜索引擎。如果管理员启用了相应格式,还可以通过 HTTP API 获取 JSON、CSV 或 RSS 格式的结果。
一个实例可以作为内部面板、机器人、研究脚本或本地 AI 助手的搜索后端。只有在配置好身份验证和请求频率限制后,才应对外开放 API。
SearXNG 的隐私保护程度如何
| 它能做什么 | 它不能做什么 |
|---|---|
| 不把浏览器 Cookie 发送给外部搜索引擎 | 不能提供完全匿名 |
| 用服务器 IP 隐藏用户 IP | 打开搜索结果网站后不再提供保护 |
| 去除第三方广告和部分追踪参数 | 无法保证他人服务器的所有者不会保留日志 |
| 可以代理加载图片 | 不能替代 VPN、Tor 或浏览器安全防护 |
公共实例适合体验服务,但你必须信任其管理员,而且共享 IP 更容易受到限制。
自己的服务器可以让你控制日志、信息源和访问权限,但不会让浏览器本身变得匿名。
公共实例、家用服务器还是 VPS
| 方案 | 优点 | 限制 |
|---|---|---|
| 公共实例 | 无需安装任何内容 | 需要信任所有者,可能过载或出现 CAPTCHA |
| 家用服务器 | 无需租用 VPS 即可获得完全控制 | 设备必须持续运行;外网访问配置更复杂 |
| 自有 VPS | 全天候运行,可使用域名和 HTTPS,并能从不同设备访问 | 需要更新容器并关注安全性 |
自建 SearXNG 适合家庭、团队、开发者或本地 AI 工具。若只是偶尔搜索,使用公共实例更简单。
SearXNG 需要什么配置的 VPS
负载取决于用户数量、信息源数量和并发请求。以下是实用的起步配置:
| 使用场景 | CPU | RAM | 磁盘 |
|---|---|---|---|
| 单个用户 | 1 vCPU | 1 GB | 10 GB |
| 家庭或小型团队 | 2 vCPU | 2 GB | 20 GB |
| API 和其他服务 | 2–4 vCPU | 4 GB 起 | 30 GB 起 |
不需要很大的磁盘。网络质量、稳定的 IP 地址和一定的 RAM 余量更重要。
这一场景可以使用 tropic.host 的 Linux VPS:先从较小的配置开始,再随着用户或 API 接入数量增加而扩展资源。选择套餐时,与其为大容量磁盘多付费用,不如优先考虑 RAM 和网络质量。
使用 Docker Compose 在 VPS 上安装 SearXNG
本示例使用 Ubuntu 24.04 LTS、search.example.com、Valkey 和 Caddy。请将 DNS A 记录指向服务器,并开放 80 和 443 端口。
1. 安装 Docker 并创建目录
sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker
sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng创建包含域名和随机密钥的 .env 文件:
printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
"$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env2. 创建 docker-compose.yml
name: searxng
services:
searxng:
image: docker.io/searxng/searxng:latest
restart: unless-stopped
environment:
SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
SEARXNG_SECRET: ${SEARXNG_SECRET}
SEARXNG_VALKEY_URL: valkey://valkey:6379/0
volumes:
- ./searxng:/etc/searxng:rw
- searxng-cache:/var/cache/searxng
depends_on: [valkey]
valkey:
image: docker.io/valkey/valkey:9-alpine
restart: unless-stopped
command: valkey-server --save 30 1 --loglevel warning
volumes:
- valkey-data:/data
caddy:
image: docker.io/caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
environment:
SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
depends_on: [searxng]
volumes:
searxng-cache:
valkey-data:
caddy-data:
caddy-config:3. 配置 SearXNG
创建 searxng/settings.yml:
use_default_settings: true
general:
instance_name: "Private Search"
search:
safe_search: 1
autocomplete: ""
formats: [html]
server:
limiter: true
image_proxy: true
valkey:
url: valkey://valkey:6379/0创建 searxng/limiter.toml:
[botdetection]
trusted_proxies = [
"127.0.0.0/8",
"::1",
"172.16.0.0/12",
]Limiter 可以降低机器人使实例过载的风险,也能减少外部搜索引擎更快限制该 IP 地址的可能性。
4. 添加密码和 HTTPS
生成一个强密码的哈希值:
sudo docker run --rm caddy:2-alpine \
caddy hash-password --plaintext '替换为密码'把生成的哈希值填入 Caddyfile:
{$SEARXNG_HOSTNAME} {
basic_auth {
searchuser 在此插入哈希
}
reverse_proxy searxng:8080 {
header_up X-Real-IP {remote_host}
}
}Caddy 保存的是哈希值,而不是明文密码。除了 Basic Auth,也可以只允许通过 VPN 访问该服务。
5. 启动容器
sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps打开 https://search.example.com。Caddy 会自动获取 TLS 证书,随后浏览器会要求输入用户名 searchuser 和密码。可以使用以下命令查看 SearXNG 日志:
sudo docker compose logs -f searxng启动后还需要配置什么
只保留有用的信息源,选择语言和 SafeSearch 设置,然后通过 OpenSearch 将 SearXNG 添加到浏览器。更新时只需执行:
sudo docker compose pull
sudo docker compose up -d请备份 .env、Caddyfile 和 searxng 目录。仅在确有需要时启用 JSON API,并且不要让它在没有密码和请求频率限制的情况下对外开放。
常见错误
| 错误 | 后果 | 解决方法 |
|---|---|---|
| 向所有人开放实例 | 机器人产生大量负载,IP 更容易受到限制 | 使用密码、VPN 或单点登录 |
| 启用过多信息源 | 搜索结果变慢并出现超时 | 只保留少量稳定的搜索引擎 |
| 把 SearXNG 当成自有索引 | 外部系统故障时,部分结果会消失 | 考虑其对外部来源的依赖 |
| 期待完全匿名 | 搜索结果网站仍然可以追踪浏览器 | 使用浏览器防护、VPN 或 Tor |
| 不使用 HTTPS | 搜索请求和密码会以不安全的方式传输 | 使用带 TLS 的反向代理 |
总结
SearXNG 将不同来源整合到同一个界面,减少个性化影响,并为浏览器、脚本或本地 AI 提供统一搜索。想要体验时,公共实例已经足够。长期使用则更适合部署自己的服务器,并配置 HTTPS、身份验证、limiter 以及少量稳定的信息源。
可以从 1 GB RAM 开始。当用户数量增加、接入 API 或运行更多容器时,再扩展资源。
FAQ
SearXNG 是完全匿名的吗?
不是。它能向外部搜索引擎隐藏部分数据,但实例管理员仍可能保留日志。打开目标网站后,该网站自己的追踪机制仍会生效。
SearXNG 比 Google 更好吗?
它解决的是不同问题。Google 通常速度更快,也会更深度地个性化搜索结果。SearXNG 提供更多控制权,可以组合多个来源,并且对用户画像的依赖更少。
不使用 VPS 也能运行 SearXNG 吗?
可以。你可以使用公共实例、家用电脑、NAS 或迷你服务器。VPS 的作用是提供从任意网络全天候访问的能力。
需要多少内存?
单个用户可以从 1 GB 开始。家庭、团队、API 或额外容器更适合使用 2–4 GB。
可以把 SearXNG 接入浏览器或 AI 吗?
可以。浏览器可以使用 OpenSearch,程序则可以调用 HTTP API。API 访问应通过身份验证和 limiter 进行保护。
