使用Docker实现客户化本地部署集成搜索引擎SearXNG

使用前提:已安装Docker软件,并设置docker下载的国内镜像源,本机可连接互联网,使用谷歌搜索需科学上网,用于Dify等第三方调用,需增加son输出格式。

  1. 到Searxng公司开发的Docker在GitHub的网站(https://github.com/searxng/searxng-docker)下载zip包,并解压到指定文件夹。

2、打开该文件夹,修改docker-compose.yaml,重点修改Caddy和端口两处,不使用反向代理注释或删除caddy相关内容,包括 #volumes中caddy相关的内容,端口按需修改。

完整docker-compose.yaml代码:

version: "3.7"

services: 
  # 不使用反向代理注释掉或删除caddy相关内容,包括 下面volumes中caddy:相关的内容
  #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}
  #  cap_drop:
  #    - ALL
  #  cap_add:
  #    - NET_BIND_SERVICE
  #  logging:
  #   driver: "json-file"
  #    options:
  #     max-size: "1m"
  #     max-file: "1"

  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
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    networks:
      - searxng
    ports:
      - "8081:8080" # 去掉127.0.0.1,还有冒号前端口为对外提供服务口,如不冲突可以不该
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://${SEARXNG_HOSTNAME:-localhost}/
      - UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
      - UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

networks:
  searxng:

volumes:
#  caddy-data:
#  caddy-config:
  valkey-data2:

3、修改searxng子文件夹下settings.yml文件:general:选项,修改调试模式为: false,客户化网页标题名称 instance_name: "MySou" #网页标题名称;server:修改 secret_key:为自己的密码,将图片代理设置为:ture;search选项:将自动完成输入改成百度(baidu),默认搜索语言  default_lang设置为中文 "zh-CN",格式增加json,方便Dify等第三方软件调用ui选项:将自动完成输入改成百度(baidu),将UI页面默认改为中文("zh-Hans-CN" ),将页面风格 simple_style:选为自己的,有亮light、暗 dark、自动auto可选。  

接着请搜索引擎选择方面,将百度、360搜索设置为启用,并按需禁用无效的搜索引擎

最后按需设置搜索分类,如图只保留了综合、图片、视频、新闻四类。

特别提醒,文件对其格式必须严格,类别标签必须顶头靠左,避免出现内部错误。详细设置建议查看 https://docs.searxng.org/admin/settings/settings.html 文档

# 详细查看 https://docs.searxng.org/admin/settings/settings.html 文档
use_default_settings: true
 
general:
  debug: false
  instance_name: "MySou" #网页标题名称
 
server:
  
  secret_key: "myultrasecretkey"  #  这里要修改成自己的
  limiter: false  
  image_proxy: true
search:
  autocomplete: "baidu" #输入框联想自动完成
  default_lang: "zh-CN" #默认中文
  formats:
    - html
    - json # 允许以 json 形式返回结果
ui:
  static_use_hash: true
  default_locale: "zh-Hans-CN"  #UI界面默认中文
  theme_args:
    # 页面风格: auto, light, dark
    simple_style: auto
 
engines:
  # 启用默认禁用的引擎
  - name: bing
    engine: bing
    shortcut: bi
    timeout: 5.0
    disabled: false

  - name: bing images
    engine: bing_images
    shortcut: bii

  - name: bing news
    engine: bing_news
    shortcut: bin
    
  - name: bilibili
    engine: bilibili
    shortcut: bil
    timeout: 5.0
    disabled: false
      # 360 搜索
  - name: 360search
    engine: 360search
    shortcut: 360so
    timeout: 5.0
    disabled: false
  # 百度
  - name: baidu
    engine: baidu
    shortcut: baidu
    timeout: 5.0
    disabled: false

  - name: baidu images
    baidu_category: images
    categories: [images]
    engine: baidu
    shortcut: bdi
    disabled: false

  - name: baidu kaifa
    baidu_category: it
    categories: [it]
    engine: baidu
    shortcut: bdk
    disabled: false
    
  # 搜狗
  - name: sogou
    engine: sogou
    shortcut: sogou
    timeout: 5.0 # 搜狗有点慢,需要额外加点超时时长

  # 爱奇艺
  - name: iqiyi
    engine: iqiyi
    shortcut: iq

  # 搜狗视频
  - name: sogou_video
    engine: sogou_video
    shortcut: sogouv

  # 搜狗|微信
  - name: sogou wechat
    engine: sogou_wechat
    short: sogouw
    disabled: false
  # 禁用默认启用的引擎
  - name: arch linux wiki
    engine: archlinux
    disabled: true
  - name: duckduckgo
    engine: duckduckgo
    distabled: true
  - name: github
    engine: github
    shortcut: gh
    disabled: true
  - name: wikipedia
    engine: wikipedia
    disabled: true
  - name: currency
    engine: currency_convert
    categories: general
    shortcut: cc   
    disabled: true
  - name: startpage
    engine: startpage
    shortcut: sp   
    disabled: true
  - name: qwant
    qwant_categ: web
    engine: qwant
    shortcut: qw
    disabled: true
  - name: dictzone
    engine: dictzone
    shortcut: dc
    disabled: true
  - name: lingva
    engine: lingva
    shortcut: lv    
    disabled: true
  - name: mymemory translated
    engine: translated
    shortcut: tl
    timeout: 5.0  
    disabled: true
  - name: brave
    engine: brave
    shortcut: br   
    disabled: true
  - name: duckduckgo
    engine: duckduckgo
    shortcut: ddg    
    disabled: true
  - name: wikidata
    engine: wikidata
    shortcut: wd
    disabled: true
 

    
redis:
  url: redis://redis:6379/0

categories_as_tabs:
  general: #综合
  images: #图片
  videos: #视频
  news: #新闻
  #map: #地图
  #music: #音乐
  #it: #信息技术
  #science: #科学
  #files: #文件
  #social media: #社会媒体
  

4、设置完成后在saerxng-docker文件夹点击在终端打开,在终端窗口下输入命令:docker-compose up -d,等待拉取镜像,直至拉取完毕并启动镜像。

5、在Docker软件中查看容器,点击端口可进入访问页面,页面一默认为中文,标题已经改为设定的Mysou,搜索自动完成启用。

题外:网上搜索好多大侠写的文档里提到如下参数,但官方文档没有找到,不知为什么,希望不是相互抄作业抄错了,有知道用途的欢迎留言批评指正,谢谢。

ratelimit:
enabled: true
per_second: 5
per_minute: 60

<think>好的,用户的问题是关于如何配置本地部署的DeepSeek使用SearXNG API实现联网搜索功能,特别是涉及到DockerSearXNG的设置。我需要先理清用户的需求,然后结合提供的引用内容,给出详细的步骤。 首先,用户提到已经参考了引用[1]和[2],其中涉及DeepSeek R1的本地部署以及SearXNG的配置。用户的目标是让DeepSeek通过SearXNG进行联网搜索,因此需要确保SearXNG正确运行,并且DeepSeek能够调用其API。 接下来,我需要按照步骤来分解问题。首先,部署SearXNGDocker容器,确保它能够正常访问网络。根据引用[2],SearXNG的默认内网地址是http://host.docker.internal:8081,这可能需要检查Docker的网络配置,确保容器在正确的网络下运行,并且端口映射正确。 然后,配置DeepSeek的管理界面,引用[1]提到在工具中找到SearXNG的设置,填写访问地址并进行授权。这里需要注意的是,如果DeepSeek和SearXNG运行在同一个Docker网络中,可能需要使用容器名称作为主机名,或者确保网络互通。例如,如果两者在同一个Docker自定义网络中,可以使用容器名称代替host.docker.internal,或者使用Docker的内部IP。 另外,用户可能遇到授权问题,比如无法连接SearXNG,这时候需要检查SearXNG的日志,确认服务是否正常启动,端口是否正确暴露,以及是否有防火墙或安全组规则阻止了连接。引用[2]提到创建网络search_default,可能需要确认SearXNG容器是否在该网络中,或者是否需要将DeepSeek的容器也加入同一网络以确保通信。 还有,用户可能需要配置SearXNG搜索引擎参数,比如启用哪些搜索引擎,调整超时设置等,以提高搜索的稳定性和结果质量。这部分可能涉及到编辑SearXNG的配置文件settings.yml,或者在Web界面中进行设置。 最后,测试整个流程,确保DeepSeek能够通过SearXNG成功进行搜索,并返回结果。如果出现问题,可能需要逐步排查网络连接、服务配置、权限设置等方面的问题。 总结下来,步骤应该是:部署SearXNG容器→配置网络和端口→在DeepSeek中设置SearXNG的API地址→授权并测试连接→调整SearXNG的搜索参数→验证功能是否正常。过程中需要注意Docker的网络配置和服务的可达性,确保各组件能够正确通信。</think>### 分步配置指南 #### 一、SearXNG Docker 部署 1. **创建Docker容器** 使用以下命令启动SearXNG服务(需提前安装Docker): ```bash docker run -d --name searxng -p 8081:8081 searxng/searxng ``` 此命令将拉取官方镜像并映射端口`8081`到宿主机,确保容器网络可访问外部资源[^2]。 2. **验证服务状态** 访问 `http://localhost:8081` 或 `http://host.docker.internal:8081`,若显示搜索界面则部署成功。 #### 二、DeepSeek 对接 SearXNG 1. **配置API地址** 进入DeepSeek管理界面(如Dify),导航至 **工具 > SearXNG > 去认证**,填写SearXNG的访问地址: ```plaintext http://host.docker.internal:8081 # 若在同一宿主机 ``` 或通过容器网络名称(需自定义Docker网络): ```plaintext http://searxng:8081 # 当DeepSeek与SearXNG共用自定义网络时 ``` 2. **网络互通配置** *若服务不在同一网络*,需创建共享网络: ```bash docker network create search_net docker network connect search_net searxng docker network connect search_net deepseek-container ``` 3. **授权保存** 点击 **授权并保存**,出现“已授权”提示即表示配置成功[^1]。 #### 三、验证与调试 1. **测试搜索功能** 在DeepSeek界面输入需联网查询的指令,观察是否返回SearXNG抓取的实时数据。 2. **常见问题排查** - **连接失败**:检查SearXNG容器日志 `docker logs searxng` - **跨网络问题**:确认容器IP是否可达 `docker inspect searxng` - **权限限制**:SearXNG配置文件中需允许跨域请求(修改`settings.yml`的`outgoing`段)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值