SearXNG 自建搜索引擎:告别广告,在 VPS 上跑一个干净的搜索引擎

概述

Google 搜索结果里夹杂着广告,百度首页堆满推广链接。你有没有想过,自己搭一个搜索引擎,只返回纯链接、不带任何追踪?

SearXNG 就是这样一个工具。它不是一个独立的搜索引擎,而是一个元搜索引擎——你输入关键词后,它同时去 Google、Bing、DuckDuckGo 等多个引擎搜索,然后把结果汇总展示给你。整个过程不记录你的 IP、不跟踪你的搜索历史、不在页面上夹带广告。

用 Docker 部署 SearXNG 非常简单,十几分钟就能搞定。

准备工作

你需要以下条件:

  • 一台 VPS(2GB 内存足够,1核CPU也行)
  • Docker 和 Docker Compose 已安装
  • 一个域名(可选,建议配置 HTTPS)
  • 基础 Linux 命令行操作能力

如果你还没装 Docker,跑一行命令:

curl -fsSL https://get.docker.com | sh

装好 Docker 后,记得把当前用户加入 docker 组:

sudo usermod -aG docker $USER
newgrp docker

安装步骤

第一步:创建项目目录

mkdir -p ~/searxng && cd ~/searxng

第二步:创建配置文件

新建 settings.yml 文件:

cat > settings.yml << 'EOF'
use_default_settings: true

general:
  instance_name: "我的 SearXNG"
  contact_url: false
  enable_metrics: false

search:
  safe_search: 0
  default_lang: zh-CN
  formats:
    - html

server:
  port: 8080
  bind_address: "0.0.0.0"
  secret_key: "替换成随机字符串"

engines:
  - name: google
    enabled: true
  - name: bing
    enabled: true
  - name: duckduckgo
    enabled: true
  - name: baidu
    enabled: true
EOF

secret_key 那一行,换成你生成的随机字符串:

python3 -c "import secrets; print(secrets.token_hex(32))"

把输出的字符串贴到 settings.yml 里。

第三步:创建 Docker Compose 文件

cat > docker-compose.yml << 'EOF'
services:
  searxng:
    image: searxng/searxng:latest
    container_name: searxng
    ports:
      - "8080:8080"
    volumes:
      - ./settings.yml:/etc/searxng/settings.yml:ro
    restart: unless-stopped
    environment:
      - SEARXNG_BASE_URL=http://localhost:8080/
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
EOF

这里做了一个安全限制:容器不开放任何系统能力(cap_drop: ALL),只保留必要的几个。

第四步:启动容器

docker compose up -d

第五步:检查运行状态

docker compose ps

看到 searxng 状态是 Up 就说明启动成功了。

第六步(推荐):配反向代理和 HTTPS

如果你有自己的域名,用 Caddy 或 Nginx 反代一下,让外部能访问。

Nginx 反代配置示例:

server {
    listen 443 ssl http2;
    server_name searx.example.com;

    ssl_certificate     /etc/letsencrypt/live/searx.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/searx.example.com/privkey.pem;

    location / {
        proxy_pass         http://127.0.0.1:8080;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout  300s;
        proxy_send_timeout  300s;
    }
}

没有域名?直接用 IP:8080 访问也行,但只能在局域网内用。

验证搭建成功

打开浏览器访问 http://你的IP:8080(或你的域名),你会看到 SearXNG 的搜索界面。

在搜索框输入任意关键词,比如 “Docker 教程”,看看结果页面:

  • 结果来自多个搜索引擎的聚合
  • 页面无广告、无追踪脚本
  • 右上角可以切换搜索引擎偏好

还能点击"关于"页面,确认运行的是 SearXNG 以及启用了哪些引擎。

常见问题

Q: 搜索结果是空的怎么办?

SearXNG 依赖后端引擎的返回。如果某些引擎被封或限流,结果可能为空。在 settings.yml 里调整 engines 列表,多开几个引擎,结果会更好。

Q: 容器启动后访问不了页面?

检查防火墙:sudo ufw allow 8080/tcp 或云服务器安全组放行 8080 端口。

Q: 如何更新 SearXNG?

docker compose pull && docker compose up -d

Q: 别人能通过我的 IP 搜索吗?

会。如果不想被别人滥用,建议只在内网使用,或者加一层基本认证。用 Nginx 加 auth 很简单:

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;

Q: 内存占用多少?

容器默认占 100~300MB 内存,完全够用。


搭好自己的搜索引擎后,每次搜索都不需要忍受广告和追踪了。要不要试试在手机上把 SearXNG 设为默认搜索引擎?

这篇文章对你有帮助吗?