Skip to main content
重要声明: SearXNG 采用 AGPL 协议,默认不允许商业化使用。LangChat Pro 仅提供接入支持,用户需自行处理版权和许可证问题,LangChat 团队不承担任何相关责任。在使用前请仔细阅读相关许可证条款。
SearXNG 简介: SearXNG 是一个隐私友好的元搜索引擎,可以聚合多个搜索引擎的结果,为 LangChat Pro 提供网络搜索功能。

快速部署

使用 Docker Compose 部署

LangChat Pro 项目根目录提供了完整的 SearXNG 部署配置,位于 docs/docker/searxng-docker/ 目录下。
1

进入部署目录

cd docs/searxng-docker/
2

启动服务

# 启动 SearXNG 服务
docker-compose up -d searxng

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f searxng
3

验证部署

# 检查服务是否正常运行
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
urlSearXNG 服务地址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
排查步骤:
  1. 确认容器正在运行
  2. 检查端口映射是否正确
  3. 验证防火墙设置
  4. 检查网络连接
# 检查 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 许可证重要提醒:
  1. 开源要求:使用 AGPL 软件时,如果通过网络提供服务,必须开源整个应用程序
  2. 商业限制:AGPL 对商业使用有严格限制,需要仔细评估
  3. 合规责任:用户需自行确保许可证合规,LangChat 不承担相关责任
  4. 替代方案:考虑使用其他许可证的替代方案
建议:
  • 在商业环境中使用前,请咨询法律专家
  • 考虑使用 MIT 或 Apache 许可证的替代工具
  • 确保理解并遵守 AGPL 的所有条款