首页
/ 使用Docker Compose和Traefik部署Whoogle Search私有搜索引擎

使用Docker Compose和Traefik部署Whoogle Search私有搜索引擎

2025-07-06 05:33:05作者:裴锟轩Denise

概述

Whoogle Search是一个轻量级的私有搜索引擎解决方案,它允许用户在不被追踪的情况下进行搜索。本文将详细介绍如何使用Docker Compose和Traefik反向代理来部署Whoogle Search服务,实现安全、高效的私有搜索体验。

系统架构

该部署方案采用以下组件:

  • Whoogle Search:作为核心搜索服务
  • Traefik:作为反向代理和SSL证书管理器
  • Docker Compose:用于编排容器服务

配置文件详解

Traefik服务配置

traefik:
  image: "traefik:v2.7"
  container_name: "traefik"
  command:
    - "--api.insecure=true"
    - "--providers.docker=true"
    - "--providers.docker.exposedbydefault=false"
    - "--entrypoints.websecure.address=:443"
    - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
    - "--certificatesresolvers.myresolver.acme.email=change@domain.name"
    - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
  ports:
    - "443:443"
    - "8080:8080"
  volumes:
    - "./letsencrypt:/letsencrypt"
    - "/var/run/docker.sock:/var/run/docker.sock:ro"

关键配置说明:

  1. 使用Traefik v2.7版本
  2. 启用Docker提供程序,但不自动暴露所有容器
  3. 配置websecure入口点监听443端口
  4. 设置ACME证书解析器,使用TLS挑战验证
  5. 需要将email地址替换为实际邮箱
  6. 证书存储位置为/letsencrypt/acme.json

Whoogle Search服务配置

whoogle-search:
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.whoami.rule=Host(`change.host.name`)"
    - "traefik.http.routers.whoami.entrypoints=websecure"
    - "traefik.http.routers.whoami.tls.certresolver=myresolver"
    - "traefik.http.services.whoogle-search.loadbalancer.server.port=5000"
  image: ${WHOOGLE_IMAGE:-benbusby/whoogle-search}
  container_name: whoogle-search
  restart: unless-stopped
  pids_limit: 50
  mem_limit: 256mb
  memswap_limit: 256mb
  user: whoogle
  security_opt:
    - no-new-privileges
  cap_drop:
    - ALL
  tmpfs:
    - /config/:size=10M,uid=927,gid=927,mode=1700
    - /var/lib/tor/:size=15M,uid=927,gid=927,mode=1700
    - /run/tor/:size=1M,uid=927,gid=927,mode=1700
  ports:
    - 8000:5000

关键配置说明:

  1. Traefik标签配置:

    • 启用Traefik路由
    • 设置主机名规则(需修改为实际域名)
    • 使用websecure入口点
    • 使用myresolver证书解析器
    • 服务端口为5000
  2. 资源限制:

    • 进程数限制为50
    • 内存限制为256MB
    • 交换内存限制为256MB
  3. 安全配置:

    • 使用专用用户whoogle
    • 禁止获取新权限
    • 丢弃所有Linux能力
    • 使用tmpfs挂载敏感目录

部署步骤

  1. 准备工作:

    • 安装Docker和Docker Compose
    • 准备一个域名并正确解析到服务器IP
  2. 修改配置文件:

    • change@domain.name替换为你的邮箱
    • change.host.name替换为你的域名
  3. 创建letsencrypt目录:

    mkdir letsencrypt
    chmod 600 letsencrypt
    
  4. 启动服务:

    docker-compose -f docker-compose-traefik.yaml up -d
    
  5. 验证部署:

    • 访问https://你的域名 应该能看到Whoogle搜索界面
    • 访问http://服务器IP:8080 可以查看Traefik仪表板

高级配置选项

Whoogle Search支持多种环境变量配置,可以根据需求取消注释并修改:

  1. 基本认证:

    - WHOOGLE_USER=<auth username>
    - WHOOGLE_PASS=<auth password>
    
  2. 代理配置:

    - WHOOGLE_PROXY_USER=<proxy username>
    - WHOOGLE_PROXY_PASS=<proxy password>
    - WHOOGLE_PROXY_TYPE=<proxy type (http|https|socks4|socks5)
    - WHOOGLE_PROXY_LOC=<proxy host/ip>
    
  3. 替代前端配置:

    - WHOOGLE_ALT_TW=farside.link/nitter
    - WHOOGLE_ALT_YT=farside.link/invidious
    
  4. 搜索偏好设置:

    - WHOOGLE_CONFIG_SEARCH_LANGUAGE=lang_en
    - WHOOGLE_CONFIG_COUNTRY=FR
    

安全建议

  1. 定期更新容器镜像:

    docker-compose pull
    docker-compose up -d
    
  2. 监控资源使用情况,必要时调整内存限制

  3. 考虑启用基本认证保护管理界面

  4. 定期备份letsencrypt目录中的证书文件

故障排除

  1. 证书获取失败:

    • 检查域名解析是否正确
    • 确保443端口可访问
    • 检查邮箱地址格式
  2. 服务无法访问:

    • 检查容器日志:docker logs whoogle-search
    • 验证Traefik路由配置
  3. 内存不足:

    • 适当增加mem_limit值
    • 检查是否有内存泄漏

通过以上配置,你可以轻松部署一个安全、私密的Whoogle Search服务,享受不被追踪的搜索体验。