重要声明: SearXNG 采用 AGPL 协议,默认不允许商业化使用。LangChat Pro 仅提供接入支持,用户需自行处理版权和许可证问题,LangChat 团队不承担任何相关责任。在使用前请仔细阅读相关许可证条款。
SearXNG 简介: SearXNG 是一个隐私友好的元搜索引擎,可以聚合多个搜索引擎的结果,为 LangChat Pro 提供网络搜索功能。
快速部署
使用 Docker Compose 部署
LangChat Pro 项目根目录提供了完整的 SearXNG 部署配置,位于 docs/docker/searxng-docker/ 目录下。
启动服务
# 启动 SearXNG 服务
docker-compose up -d searxng
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f searxng
验证部署
# 检查服务是否正常运行
curl http://localhost:8081
# 或者访问 Web 界面
# http://localhost:8081
配置说明
Docker Compose 配置
项目提供的 docker-compose.yml 文件包含了完整的 SearXNG 部署配置:
version: "3.7"
services:
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
networks:
- searxng
ports:
- "8081:8080"
volumes:
- ./searxng:/etc/searxng:rw
- searxng-data:/var/cache/searxng:rw
environment:
- SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
volumes:
searxng-data:
可选组件
Docker Compose 文件还包含了其他可选组件的配置(已注释):
caddy:
container_name: caddy
image: docker.io/library/caddy:2-alpine
network_mode: host
restart: unless-stopped
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data:rw
- caddy-config:/config:rw
environment:
- SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost}
- SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
用途: 提供 HTTPS 支持和自动 SSL 证书管理
redis:
container_name: redis
image: docker.io/valkey/valkey:8-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
networks:
- searxng
volumes:
- valkey-data2:/data
用途: 提供搜索结果缓存,提升响应速度
LangChat Pro 集成
配置 SearXNG 服务
在 LangChat Pro 的配置文件中添加 SearXNG 服务配置:
langchat:
searxng:
enabled: true
duration: 10
url: http://127.0.0.1:8081
max-results: 10
max-results-limit: 50
| 参数 | 说明 | 默认值 |
enabled | 是否启用 SearXNG 搜索 | true |
duration | 搜索超时时间(秒) | 10 |
url | SearXNG 服务地址 | http://127.0.0.1:8081 |
max-results | 最大返回结果数 | 10 |
max-results-limit | 最大结果限制 | 50 |
SearXNG 在 LangChat Pro 中的应用:
- 实时信息查询:获取最新的新闻、天气、股票等信息
- 知识补充:为 AI 对话提供实时的网络信息支持
- 工具集成:作为搜索工具插件,增强 AI 助手的能力
- 隐私保护:通过 SearXNG 进行搜索,保护用户隐私
高级配置
自定义 SearXNG 配置
创建自定义配置文件 searxng/settings.yml:
# 搜索引擎配置
engines:
- name: google
engine: google
shortcut: g
timeout: 3.0
disabled: false
- name: bing
engine: bing
shortcut: b
timeout: 3.0
disabled: false
- name: duckduckgo
engine: duckduckgo
shortcut: ddg
timeout: 3.0
disabled: false
# 界面配置
ui:
default_theme: simple
default_locale: zh-CN
results_on_new_tab: false
infinite_scroll: false
# 搜索配置
search:
safe_search: 0
autocomplete: google
default_lang: zh-CN
ban_time_on_fail: 5
max_ban_time_on_fail: 120
# 服务器配置
server:
port: 8080
bind_address: 0.0.0.0
secret_key: your_secret_key_here
base_url: false
image_proxy: false
http_protocol_version: 1.0
method: POST
环境变量配置
创建 .env 文件配置环境变量:
# SearXNG 主机名
SEARXNG_HOSTNAME=your-domain.com
# Let's Encrypt 邮箱(用于 SSL 证书)
LETSENCRYPT_EMAIL=[email protected]
服务管理
常用命令
# 启动所有服务
docker-compose up -d
# 仅启动 SearXNG
docker-compose up -d searxng
# 启动并查看日志
docker-compose up searxng
# 停止所有服务
docker-compose down
# 停止并删除数据卷
docker-compose down -v
# 停止特定服务
docker-compose stop searxng
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs searxng
# 实时查看日志
docker-compose logs -f searxng
# 查看资源使用
docker stats searxng
# 拉取最新镜像
docker-compose pull searxng
# 重新创建容器
docker-compose up -d --force-recreate searxng
# 完整更新流程
docker-compose down
docker-compose pull
docker-compose up -d
故障排查
常见问题
# 检查端口占用
netstat -tlnp | grep 8081
# 检查 Docker 服务状态
docker ps -a | grep searxng
# 查看详细错误日志
docker-compose logs searxng
常见原因:
- 端口 8081 被占用
- 配置文件语法错误
- 权限问题
# 检查容器状态
docker ps | grep searxng
# 检查端口映射
docker port searxng
# 测试容器内部服务
docker exec searxng curl http://localhost:8080
排查步骤:
- 确认容器正在运行
- 检查端口映射是否正确
- 验证防火墙设置
- 检查网络连接
# 检查 SearXNG 配置
docker exec searxng cat /etc/searxng/settings.yml
# 查看搜索日志
docker-compose logs searxng | grep -i error
# 测试搜索 API
curl "http://localhost:8081/search?q=test&format=json"
可能原因:
性能优化
缓存配置
启用 Redis 缓存以提升性能:
# 在 docker-compose.yml 中取消注释 Redis 服务
redis:
container_name: redis
image: docker.io/valkey/valkey:8-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
networks:
- searxng
volumes:
- valkey-data2:/data
在 SearXNG 配置中启用缓存:
# searxng/settings.yml
redis:
url: redis://redis:6379/0
资源限制
为容器设置资源限制:
services:
searxng:
# ... 其他配置
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
安全配置
访问控制
配置 SearXNG 的访问控制:
# searxng/settings.yml
server:
# 限制访问 IP
bind_address: 127.0.0.1
# 启用 API 密钥
secret_key: your_very_secure_secret_key
# 禁用公共访问
public_instance: false
反向代理配置
使用 Nginx 作为反向代理:
server {
listen 80;
server_name your-domain.com;
location /searxng/ {
proxy_pass http://127.0.0.1:8081/;
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;
}
}
监控和维护
日志管理
配置日志轮转:
services:
searxng:
# ... 其他配置
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
健康检查
添加健康检查配置:
services:
searxng:
# ... 其他配置
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
备份策略
定期备份 SearXNG 配置和数据:
#!/bin/bash
# backup-searxng.sh
BACKUP_DIR="/opt/backups/searxng"
DATE=$(date +%Y%m%d_%H%M%S)
# 备份配置文件
docker cp searxng:/etc/searxng $BACKUP_DIR/config_$DATE
# 备份数据卷
docker run --rm -v searxng-docker_searxng-data:/data -v $BACKUP_DIR:/backup alpine tar czf /backup/data_$DATE.tar.gz -C /data .
# 清理旧备份(保留30天)
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
许可证说明
AGPL 许可证重要提醒:
- 开源要求:使用 AGPL 软件时,如果通过网络提供服务,必须开源整个应用程序
- 商业限制:AGPL 对商业使用有严格限制,需要仔细评估
- 合规责任:用户需自行确保许可证合规,LangChat 不承担相关责任
- 替代方案:考虑使用其他许可证的替代方案
建议:
- 在商业环境中使用前,请咨询法律专家
- 考虑使用 MIT 或 Apache 许可证的替代工具
- 确保理解并遵守 AGPL 的所有条款