1. SearXNG简介与Docker部署优势
SearXNG是一款开源的元搜索引擎,它通过聚合多个搜索引擎的结果并提供隐私保护功能,成为技术爱好者搭建个人搜索服务的首选方案。与传统搜索引擎不同,SearXNG不会收集用户数据,所有查询都通过匿名方式转发到各大搜索引擎。
使用Docker部署SearXNG具有以下显著优势:
- 环境隔离:避免与宿主机环境产生依赖冲突
- 快速部署:无需手动安装Python依赖和配置反向代理
- 版本管理:方便切换和升级不同版本的SearXNG
- 可移植性:配置和数据可通过卷(volume)持久化
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 准备工作与Docker环境配置
2.1 系统要求
建议满足以下最低配置:
- 1核CPU
- 1GB内存
- 20GB磁盘空间
- Docker 20.10.0及以上版本
- Docker Compose 1.29.0及以上版本
2.2 Docker安装验证
在终端执行以下命令检查Docker环境:
bash复制docker --version
docker-compose --version
若未安装Docker,可参考以下命令快速安装(以Ubuntu为例):
bash复制sudo apt-get update
sudo apt-get install docker.io docker-compose
sudo systemctl enable --now docker
注意:生产环境建议使用官方Docker CE版本,长期支持更稳定
3. 使用Docker Compose部署SearXNG
3.1 创建项目目录结构
建议按以下结构组织文件:
code复制~/searxng/
├── docker-compose.yml
├── searxng/
│ └── settings.yml
└── .env
3.2 编写docker-compose.yml
以下是经过优化的配置模板:
yaml复制version: '3.8'
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng
- searxng-data:/usr/local/searxng
environment:
- SEARXNG_HOSTNAME=search.yourdomain.com
- INSTANCE_NAME=MyPrivateSearch
restart: unless-stopped
networks:
- searxng-net
redis:
image: redis:alpine
container_name: redis
restart: unless-stopped
volumes:
- redis-data:/data
networks:
- searxng-net
volumes:
searxng-data:
redis-data:
networks:
searxng-net:
driver: bridge
关键配置说明:
volumes映射配置目录实现持久化- Redis容器用于缓存搜索结果提升性能
- 网络隔离增强安全性
3.3 自定义配置
在searxng/settings.yml中添加个性化配置:
yaml复制search:
safe_search: 0 # 0=关闭, 1=中等, 2=严格
autocomplete: google # 自动补全源
default_lang: zh # 默认语言
server:
secret_key: "生成32位随机字符串" # 用于会话加密
limiter: true # 启用API限流
outgoing:
request_timeout: 3.0 # 请求超时(秒)
max_retries: 2 # 失败重试次数
生成密钥命令:
bash复制openssl rand -hex 32
4. 启动与管理服务
4.1 启动容器
bash复制docker-compose up -d
4.2 常用管理命令
| 操作 | 命令 |
|---|---|
| 查看日志 | docker-compose logs -f |
| 停止服务 | docker-compose down |
| 更新镜像 | docker-compose pull && docker-compose up -d |
| 进入容器 | docker exec -it searxng sh |
4.3 性能优化建议
- 调整工作线程数:
yaml复制environment:
- GUNICORN_WORKERS=4 # 建议设置为CPU核心数×2+1
- 启用HTTPS:
yaml复制ports:
- "443:8080"
environment:
- SEARXNG_TLS=true
- 内存限制:
yaml复制deploy:
resources:
limits:
memory: 1G
5. 高级配置与维护
5.1 集成Nginx反向代理
推荐配置:
nginx复制server {
listen 80;
server_name search.yourdomain.com;
location / {
proxy_pass http://localhost: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;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
5.2 定期维护任务
- 数据备份:
bash复制docker run --rm --volumes-from searxng -v $(pwd):/backup busybox \
tar cvf /backup/searxng-backup.tar /etc/searxng
- 日志轮转:
在docker-compose.yml中添加:
yaml复制logging:
options:
max-size: "10m"
max-file: "3"
5.3 故障排查指南
常见问题1:容器启动失败
- 检查端口冲突:
netstat -tulnp | grep 8080 - 查看详细日志:
docker-compose logs --tail=100
常见问题2:搜索结果为空
- 验证网络连接:
docker exec searxng ping google.com - 检查请求头配置:确保User-Agent未被目标网站屏蔽
常见问题3:性能低下
- 优化Redis配置:
yaml复制redis:
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
6. 安全加固措施
6.1 基础安全配置
- 禁用调试模式:
yaml复制environment:
- SEARXNG_DEBUG=false
- 设置管理密码:
bash复制htpasswd -c ./searxng/htpasswd admin
6.2 防火墙规则
建议配置:
bash复制ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
6.3 定期更新策略
- 设置监控任务检查新版本:
bash复制docker-compose pull && docker-compose up -d
- 订阅项目安全公告:
- GitHub Watch功能
- RSS订阅发布频道
通过以上完整配置,您将获得一个高性能、隐私保护的自主搜索引擎。根据实际需求可进一步调整:
- 集成更多搜索引擎
- 添加自定义主题
- 配置结果过滤规则
- 实现集群化部署
