云服务器搭建whoogle-search:AWS实践指南

云服务器搭建whoogle-search:AWS实践指南

【免费下载链接】whoogle-search A self-hosted, ad-free, privacy-respecting metasearch engine 【免费下载链接】whoogle-search 项目地址: https://gitcode.com/GitHub_Trending/wh/whoogle-search

一、痛点与解决方案

你是否厌倦了搜索引擎的广告轰炸和隐私追踪?作为开发者或隐私敏感用户,你可能尝试过各种隐私搜索引擎,但要么面临功能限制,要么担心第三方服务的可靠性。Whoogle-Search作为一款自托管的元搜索引擎,能完美解决这些问题——它无广告、不追踪IP、支持自定义隐私设置,且完全开源可控。

本文将带你在AWS云服务器上从零搭建Whoogle-Search,通过EC2+Docker+Nginx+HTTPS的企业级架构,实现稳定、安全、隐私优先的搜索服务。读完本文你将获得

  • 完整的AWS资源配置清单
  • 容器化部署的自动化流程
  • 安全组与网络策略的最佳实践
  • 性能优化与高可用方案
  • 隐私增强的高级配置指南

二、技术架构概览

2.1 系统架构图

mermaid

2.2 组件说明

组件作用选型理由
EC2 t3.micro运行容器服务1核2G配置满足轻量服务需求,按需付费最低$3.5/月
Docker容器化部署隔离环境依赖,简化版本管理
Docker Compose容器编排定义多容器应用,支持环境变量注入
Nginx反向代理+HTTPS处理SSL终结,提供负载均衡能力
Let's Encrypt免费SSL证书自动化证书签发与续期
Elastic IP静态公网IP避免实例重启导致IP变更

三、AWS环境准备

3.1 前置条件清单

  • AWS账号(已完成实名认证与信用卡绑定)
  • 本地终端已安装AWS CLI(可选)
  • 拥有一个域名(用于配置HTTPS,可选)

3.2 EC2实例创建步骤

  1. 选择区域
    建议选择离用户最近的区域(如亚太地区的ap-southeast-1新加坡)以降低延迟

  2. 启动实例

    • AMI: Ubuntu Server 22.04 LTS (HVM)
    • 实例类型: t3.micro(符合免费套餐条件)
    • 密钥对: 创建新密钥对并下载.pem文件
    • 网络设置: mermaid
    • 存储: 30GB gp3(免费套餐包含20GB,建议增加至30GB避免空间不足)
  3. 获取实例信息

    • 公有IP: ec2-xx-xx-xx-xx.ap-southeast-1.compute.amazonaws.com
    • 私有IP: 172.31.x.x(VPC内网地址)

3.3 弹性IP绑定

  1. 在EC2控制台左侧导航栏选择「网络与安全」→「弹性IP」
  2. 点击「分配弹性IP地址」→ 选择默认池 → 分配
  3. 选中新分配的EIP,点击「操作」→「关联弹性IP地址」
  4. 选择目标实例并确认关联

安全提示:弹性IP长期未使用可能被AWS回收,建议创建实例后立即绑定

四、环境部署实战

4.1 服务器初始化

# 连接服务器(替换为你的EIP和密钥路径)
ssh -i "whoogle-key.pem" ubuntu@3.1.2.3

# 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose nginx certbot python3-certbot-nginx git

4.2 Docker环境配置

# 将当前用户加入docker组(避免每次使用sudo)
sudo usermod -aG docker $USER
newgrp docker  # 无需重启即可生效

# 验证Docker安装
docker --version  # 应输出Docker version 20.10.x
docker-compose --version  # 应输出docker-compose version 1.29.x

4.3 代码拉取与配置

# 克隆代码仓库
git clone https://gitcode.com/GitHub_Trending/wh/whoogle-search.git
cd whoogle-search

# 创建环境变量配置文件
cp whoogle.template.env whoogle.env

# 使用sed命令批量启用基础配置
sed -i 's/^#WHOOGLE_CONFIG_ALTS/WHOOGLE_CONFIG_ALTS/' whoogle.env
sed -i 's/^#WHOOGLE_CONFIG_THEME/WHOOGLE_CONFIG_THEME=dark/' whoogle.env
sed -i 's/^#WHOOGLE_CSP/WHOOGLE_CSP=1/' whoogle.env
sed -i 's/^#HTTPS_ONLY/HTTPS_ONLY=1/' whoogle.env

4.4 Docker Compose启动

# docker-compose.yml核心配置(完整配置见项目文件)
version: "2.4"
services:
  whoogle-search:
    image: ${WHOOGLE_IMAGE:-benbusby/whoogle-search}
    container_name: whoogle-search
    restart: unless-stopped
    pids_limit: 50
    mem_limit: 256mb
    ports:
      - 5000:5000
    env_file:
      - whoogle.env
    tmpfs:
      - /config/:size=10M,uid=927,gid=927,mode=1700
# 启动服务
docker-compose up -d

# 验证服务状态
docker-compose ps  # 应显示状态为Up
curl localhost:5000  # 应返回HTML响应

4.5 Nginx反向代理配置

# 创建Nginx配置文件
sudo nano /etc/nginx/sites-available/whoogle

# 粘贴以下配置(替换example.com为你的域名)
server {
    listen 80;
    server_name search.example.com;
    
    # 重定向至HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name search.example.com;
    
    # SSL证书配置
    ssl_certificate /etc/letsencrypt/live/search.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/search.example.com/privkey.pem;
    
    # 反向代理配置
    location / {
        proxy_pass http://localhost:5000;
        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;
    }
}

# 启用站点配置
sudo ln -s /etc/nginx/sites-available/whoogle /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置是否有误
sudo systemctl restart nginx

4.6 SSL证书申请

# 使用certbot自动配置HTTPS
sudo certbot --nginx -d search.example.com

# 验证证书自动续期
sudo certbot renew --dry-run

注意:如未准备域名,可跳过4.5-4.6步骤,直接通过http://EIP:5000访问,但不建议用于生产环境

五、高级配置指南

5.1 隐私增强配置

编辑whoogle.env文件,添加以下高级配置:

# 启用Tor路由(需额外安装tor服务)
WHOOGLE_CONFIG_TOR=1

# 配置社交媒体替代前端
WHOOGLE_ALT_TW=farside.link/nitter
WHOOGLE_ALT_YT=farside.link/invidious
WHOOGLE_ALT_RD=farside.link/libreddit

# 启用结果加密存储
WHOOGLE_CONFIG_PREFERENCES_ENCRYPTED=1
WHOOGLE_CONFIG_PREFERENCES_KEY="your-strong-random-key-here"

# 屏蔽指定网站结果
WHOOGLE_CONFIG_BLOCK=example-site-1.com,example-site-2.com,example-site-3.com

5.2 性能优化参数

# 调整每页结果数量(默认10条)
WHOOGLE_RESULTS_PER_PAGE=20

# 启用内存缓存
WHOOGLE_CACHE_SIZE=50  # 缓存50个搜索结果

# 禁用自动更新检查(减少出站请求)
WHOOGLE_UPDATE_CHECK=0

5.3 安全加固措施

# 配置防火墙仅开放必要端口
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# 设置SSH密钥登录,禁用密码登录
sudo nano /etc/ssh/sshd_config
# 修改以下参数:
# PasswordAuthentication no
# ChallengeResponseAuthentication no
sudo systemctl restart sshd

六、系统运维与监控

6.1 服务管理命令

# 启动服务
docker-compose up -d

# 查看日志(实时)
docker-compose logs -f

# 重启服务(配置变更后)
docker-compose restart

# 停止服务
docker-compose down

# 更新Whoogle镜像
docker-compose pull && docker-compose up -d

6.2 系统监控配置

# 安装基础监控工具
sudo apt install -y htop iotop iftop

# 设置资源使用告警(可选)
sudo apt install -y prometheus node-exporter grafana

6.3 数据备份策略

# 创建备份脚本
cat > backup-whoogle.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/home/ubuntu/backups"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份配置文件
cp whoogle.env $BACKUP_DIR/whoogle.env.$TIMESTAMP

# 备份Docker数据卷
docker run --rm -v whoogle-search_config:/source -v $BACKUP_DIR:/backup alpine \
  tar -czf /backup/whoogle-data.$TIMESTAMP.tar.gz -C /source .

# 保留最近10个备份
ls -tp $BACKUP_DIR/*.tar.gz | grep -v '/$' | tail -n +11 | xargs -I {} rm -- {}
EOF

# 添加执行权限并设置定时任务
chmod +x backup-whoogle.sh
crontab -e
# 添加以下行(每天凌晨3点执行备份)
0 3 * * * /home/ubuntu/whoogle-search/backup-whoogle.sh

七、故障排查与解决方案

7.1 常见问题诊断流程

mermaid

7.2 典型问题解决方案

问题描述可能原因解决方法
502 Bad GatewayWhoogle服务未启动docker-compose restart
403 Forbidden安全组未开放端口检查AWS安全组入站规则
搜索无结果网络代理配置错误注释whoogle.env中的代理设置
证书过期certbot自动续期失败sudo certbot renew手动续期
高CPU占用搜索请求过于频繁启用结果缓存或升级实例类型

八、总结与展望

通过本文指南,你已成功在AWS EC2上搭建起企业级的Whoogle-Search隐私搜索服务。该方案具有以下优势:

  1. 隐私保护:完全掌控搜索数据,避免第三方追踪
  2. 成本可控:基于t3.micro实例,月均成本低于$5
  3. 灵活扩展:可根据需求调整实例类型和配置参数
  4. 安全可靠:HTTPS加密传输+多层防护策略

8.1 进阶方向

  • 部署多实例实现负载均衡(ALB+Auto Scaling Group)
  • 接入CloudFront CDN加速静态资源
  • 实现多区域部署与全球流量路由
  • 开发自定义搜索结果过滤规则

8.2 项目资源

  • 官方仓库:https://gitcode.com/GitHub_Trending/wh/whoogle-search
  • 配置文档:项目内README.md
  • 社区支持:通过项目Issue跟踪系统提交问题

行动建议:立即将你的Whoogle实例设为浏览器默认搜索引擎,体验无广告、零追踪的搜索服务!如有疑问或优化建议,欢迎在评论区留言交流。

附录:AWS资源成本估算

资源类型规格月成本(USD)
EC2实例t3.micro$3.67
弹性IP1个$0.00(已关联实例)
EBS存储gp3 30GB$3.00
数据传输100GB出站$0.00(含在免费套餐内)
总计 $6.67

注:实际成本可能因区域、使用量和AWS定价政策变化而有所不同

【免费下载链接】whoogle-search A self-hosted, ad-free, privacy-respecting metasearch engine 【免费下载链接】whoogle-search 项目地址: https://gitcode.com/GitHub_Trending/wh/whoogle-search

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值