SearXNG私有化部署与Dify集成指南

开发 AI 应用时,大家常常头疼两件事:大模型无法接入实时数据,开发流程还特别复杂。下面给大家介绍的是 Dify 和 SearXNG 的私有搜索引擎部署方案,通过 Docker 实现 SearXNG 在 Windows 系统的快速搭建,并集成至 Dify 智能开发平台。

SearXNG 搜索引擎相当强大,支持 70 多个网站的搜索。配合上 Dify 的低代码配置应用,搜索到的数据会自动输送给 DeepSeek 等大模型进行总结,收集资讯、竞品分析等应用很方便。

1. 拉源码仓库

git clone https://github.com/searxng/searxng-docker.git

进入文件夹

cd searxng-docker

2. 修改 searxng/settings.yml

2.1 searxng/settings.yml 初始内容

# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: "ultrasecretkey"  # change this!
  limiter: true  # can be disabled for a private instance
  image_proxy: true
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0

2.2 适配 dify

扩展数据返回格式支持

search:
  formats:
    - html
    - json

2.3 生成秘钥 🔑

官方给的脚本(使用.NET 加密库)

$randomBytes = New-Object byte[] 32
(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes)
$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ })
(Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml

或者 开始没有看到官方官方脚本所以写的(使用 OpenSSL 快速生成)

Set-Content -Path "searxng/settings.yml" -Value ((Get-Content -Path "searxng/settings.yml" -Raw) -replace "ultrasecretkey", (openssl rand -hex 32))

2.4 将limiter 配置项改为 false

禁用请求限制器,否则可能触发 too many requests 的问题,如下图

2.5 searxng/settings.yml 最终版本

# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: "你的秘钥"  #这里改变见2.3
  limiter: false  #这里改变见2.4
  image_proxy: true
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0
search: #这里改变见2.2
  formats:
    - html
    - json

3. 修改 docker-compose.yaml

官方的 docker-compose 包含三个内容

NameDescriptionDocker imageDockerfile
Caddy反向代理(自动创建 Lets Encrypt 证书)docker.io/library/caddy:2-alpineDockerfile
SearXNGSearXNG 本身docker.io/searxng/searxng:latestDockerfile
Valkey内存数据库docker.io/valkey/valkey:8-alpineDockerfile

需要做如下修改

  • 首先是删除 caddy 部分,我不需要它的反向代理,所以删除
  • 其次第一次运行时,删除 cap_drop: - ALL,运行完后添加回
  • 最后修改服务设置的端口(默认是 8080)
version: "3.7"

services:
  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_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:
      - "8080:8080"
    volumes:
      - ./searxng:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=http://${SEARXNG_HOSTNAME:-localhost}/
      - UWSGI_WORKERS=${SEARXNG_UWSGI_WORKERS:-4}
      - UWSGI_THREADS=${SEARXNG_UWSGI_THREADS:-4}
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"

networks:
  searxng:

volumes:
  valkey-data2:

4. 为 Docker 配置镜像源(可选)

如果你和我一样拉去镜像超时(下图),可以继续此项配置

在 Docker 配置中增加镜像源(下图红框指示)自行挑选一个国内镜像源

"registry-mirrors":["https://docker.1panel.live"]

5. 启动!!!

docker compose up -d

查看日志

docker compose logs -f searxng

6. 部署完成 🎉

6.1 主界面展示

访问设定的 base url 即可进行搜索

http://192.168.31.105:8018

6.2 验证 json 接口

http://192.168.31.105:8018/search?q=test&format=json

6.3 搜索功能展示

7. 在 Dify 中配置 SearXNG

7.1 安装 SearXNG 插件

在 marketplace 中搜索插件并安装

7.2 配置 SearXNG 插件

在安装的插件中,配置 base url,点击保存即可。
如不成功,可检查 2.x 配置或者检查容器日志。

### DifySearXNG集成指南 为了实现Dify平台SearXNG搜索引擎之间的无缝对接,需遵循一系列特定的操作步骤来确保两个系统的兼容性和高效协作。 #### 配置环境准备 在开始之前,确认已安装并配置好Docker环境。这一步骤对于后续操作至关重要,因为无论是启动SearXNG实例还是其交互都依赖于Docker服务的支持[^2]。 #### 启动SearXNG实例 通过指定挂载路径以及端口映射参数,在本地环境中快速部署一个可访问的SearXNG搜索节点。具体命令如下所示: ```bash docker run --rm -d -p 8081:8080 \ -v "${PWD}/api/core/tools/provider/builtin/searxng/docker:/etc/searxng" \ searxng/searxng ``` 此命令不仅设置了必要的卷绑定以便自定义设置生效,还开放了一个外部可达的服务接口用于接收查询请求。 #### 进阶定制化选项 如果希望进一步调整SearXNG的行为模式或者外观样式,则可以通过额外传递环境变量的方式完成个性化设定。例如修改基础URL地址或是命名当前运行中的容器实例名称等: ```bash -e "BASE_URL=http://yourdomain.com/" -e "INSTANCE_NAME=my_searx_instance" ``` 这些附加项允许管理员更加灵活地控制所创建出来的SearXNG应用特性[^3]。 #### 使用`docker-compose`简化管理流程 考虑到多组件协同工作的复杂度,推荐采用`docker-compose`工具来进行统一编排。借助Composerize在线转换器能够轻松将上述单条指令转化为结构化的YAML格式描述文档,从而降低维护成本的同时提高整体稳定性[^4]: ```yaml version: '3' services: searxng: image: searxng/searxng ports: - "8081:8080" volumes: - ./searxng:/etc/searxng environment: BASE_URL: http://localhost:8081/ INSTANCE_NAME: my_search_engine ``` 以上即为完整的从零构建到实际使用的全过程指导说明,旨在帮助开发者顺利达成目标——使Dify具备强大的私有化搜索能力。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodePhage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值