使用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"
关键配置说明:
- 使用Traefik v2.7版本
- 启用Docker提供程序,但不自动暴露所有容器
- 配置websecure入口点监听443端口
- 设置ACME证书解析器,使用TLS挑战验证
- 需要将email地址替换为实际邮箱
- 证书存储位置为/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
关键配置说明:
-
Traefik标签配置:
- 启用Traefik路由
- 设置主机名规则(需修改为实际域名)
- 使用websecure入口点
- 使用myresolver证书解析器
- 服务端口为5000
-
资源限制:
- 进程数限制为50
- 内存限制为256MB
- 交换内存限制为256MB
-
安全配置:
- 使用专用用户whoogle
- 禁止获取新权限
- 丢弃所有Linux能力
- 使用tmpfs挂载敏感目录
部署步骤
-
准备工作:
- 安装Docker和Docker Compose
- 准备一个域名并正确解析到服务器IP
-
修改配置文件:
- 将
change@domain.name
替换为你的邮箱 - 将
change.host.name
替换为你的域名
- 将
-
创建letsencrypt目录:
mkdir letsencrypt chmod 600 letsencrypt
-
启动服务:
docker-compose -f docker-compose-traefik.yaml up -d
-
验证部署:
- 访问https://你的域名 应该能看到Whoogle搜索界面
- 访问http://服务器IP:8080 可以查看Traefik仪表板
高级配置选项
Whoogle Search支持多种环境变量配置,可以根据需求取消注释并修改:
-
基本认证:
- WHOOGLE_USER=<auth username> - WHOOGLE_PASS=<auth password>
-
代理配置:
- 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>
-
替代前端配置:
- WHOOGLE_ALT_TW=farside.link/nitter - WHOOGLE_ALT_YT=farside.link/invidious
-
搜索偏好设置:
- WHOOGLE_CONFIG_SEARCH_LANGUAGE=lang_en - WHOOGLE_CONFIG_COUNTRY=FR
安全建议
-
定期更新容器镜像:
docker-compose pull docker-compose up -d
-
监控资源使用情况,必要时调整内存限制
-
考虑启用基本认证保护管理界面
-
定期备份letsencrypt目录中的证书文件
故障排除
-
证书获取失败:
- 检查域名解析是否正确
- 确保443端口可访问
- 检查邮箱地址格式
-
服务无法访问:
- 检查容器日志:
docker logs whoogle-search
- 验证Traefik路由配置
- 检查容器日志:
-
内存不足:
- 适当增加mem_limit值
- 检查是否有内存泄漏
通过以上配置,你可以轻松部署一个安全、私密的Whoogle Search服务,享受不被追踪的搜索体验。