1. 为什么你需要一个隐私优先的搜索引擎?

每天我们都在使用搜索引擎查找各种信息,但你可能没意识到,大多数主流搜索引擎都在悄悄记录你的搜索历史、位置信息甚至设备指纹。这些数据会被用来构建用户画像,最终影响你看到的内容和广告。而SearXNG的出现,给了我们一个完全不同的选择。

SearXNG是一个开源的元搜索引擎,它最大的特点就是不记录、不追踪、不分析用户行为。当你使用SearXNG搜索时,你的查询请求会被随机转发到多个搜索引擎(如Google、Bing等),但SearXNG本身不会保存任何日志。这就好比让一个不记事的中间人帮你去各家书店问问题,最后只把答案带回来给你。

我去年开始用SearXNG替代常规搜索引擎,最直观的感受就是搜索结果不再被"个性化过滤"。以前用商业搜索引擎时,同样的关键词我和同事搜出来的结果可能完全不同,而现在我们看到的都是未经算法干预的原始结果。对于需要客观信息的场景(比如技术调研),这点特别重要。

2. 准备工作:Docker环境配置

2.1 安装Docker和Docker Compose

在开始之前,你需要确保系统已经安装了Docker引擎和Docker Compose。以Ubuntu系统为例,可以执行以下命令:

# 安装必要工具
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 验证安装
sudo docker run hello-world

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

注意:如果你使用的是其他Linux发行版,可以参考Docker官方文档调整安装命令。Windows和macOS用户可以直接下载Docker Desktop安装包。

2.2 创建专用部署目录

为了避免文件散落在各处,我习惯为每个Docker项目创建独立的目录。执行以下命令:

mkdir -p ~/searxng/{config,data}
cd ~/searxng

这个目录结构会用来存放SearXNG的配置文件和数据缓存。config目录将映射到容器内的/etc/searxngdata目录对应/var/cache/searxng

3. 编写Docker Compose配置文件

3.1 基础配置模板

在项目目录下创建docker-compose.yml文件,内容如下:

version: '3.8'

services:
  searxng:
    image: searxng/searxng:latest
    container_name: searxng
    ports:
      - "8888:8080"
    volumes:
      - "./config:/etc/searxng"
      - "./data:/var/cache/searxng"
    environment:
      - BASE_URL=http://localhost:8888/
      - INSTANCE_NAME=My Private Search
    restart: unless-stopped
    networks:
      - searxng-net

networks:
  searxng-net:
    driver: bridge

这个配置做了几件重要的事情:

  1. 使用官方最新的SearXNG镜像
  2. 将容器内部的8080端口映射到主机的8888端口
  3. 挂载配置和数据目录实现持久化
  4. 设置基础URL和实例名称
  5. 配置了独立的Docker网络

3.2 高级配置选项

如果你想进一步定制SearXNG,可以添加更多环境变量:

environment:
  - BASE_URL=http://your-domain.com/
  - INSTANCE_NAME=Custom Search
  - SEARXNG_SECRET_KEY=your_random_string_here
  - SEARXNG_BIND_ADDRESS=0.0.0.0
  - SEARXNG_DISABLE_HTTPS=true

提示:SEARXNG_SECRET_KEY用于加密会话,建议使用openssl rand -hex 32生成随机字符串。如果打算公开访问,建议配置HTTPS反向代理。

4. 启动与验证服务

4.1 启动容器

在包含docker-compose.yml的目录下执行:

docker-compose up -d

这个命令会:

  1. 拉取最新的SearXNG镜像(如果本地没有)
  2. 创建配置的网络
  3. 启动容器并在后台运行

第一次启动可能需要1-2分钟,因为SearXNG需要初始化配置和缓存。

4.2 检查运行状态

使用以下命令确认容器正常运行:

docker-compose ps

你应该看到类似这样的输出:

NAME                COMMAND                  SERVICE             STATUS              PORTS
searxng             "/sbin/tini -- /usr/…"   searxng             running             0.0.0.0:8888->8080/tcp

4.3 访问Web界面

打开浏览器访问http://localhost:8888(如果你修改了端口号,请使用对应的端口)。你应该能看到SearXNG的搜索界面,简洁的UI背后是强大的隐私保护功能。

试着搜索一些内容,你会发现结果聚合了多个搜索引擎的数据,但没有任何个性化推荐或广告。这就是SearXNG的魅力所在——它只关心给你最相关的结果,而不是你的个人数据。

5. 日常维护与进阶配置

5.1 更新SearXNG版本

保持最新版本可以获得安全更新和新功能:

docker-compose pull
docker-compose up -d

5.2 修改配置文件

SearXNG的主要配置文件位于config/settings.yml。修改后需要重启服务:

docker-compose restart

5.3 启用HTTPS

虽然SearXNG本身不处理HTTPS,但你可以通过反向代理实现。以Nginx为例:

server {
    listen 443 ssl;
    server_name search.your-domain.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:8888;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

记得在docker-compose.yml中更新BASE_URL为HTTPS地址。

5.4 性能调优

如果发现搜索速度较慢,可以调整以下参数:

environment:
  - SEARXNG_WORKERS=4
  - SEARXNG_MAX_WORKER_TIME=30

这些设置需要根据服务器CPU核心数和性能进行调整。我的经验是,4核CPU设置4-6个worker比较合适。

更多推荐