以下文章来源于DataSpeed ,作者codephage
[
DataSpeed .
慢慢积累,稳稳前行,用数据说话,为成长助力
](#)
导读:
开发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 包含三个内容
Name
Description
Docker image
Dockerfile
Caddy[1]
反向代理(自动创建 Lets Encrypt 证书)
docker.io/library/caddy:2-alpine[2]
Dockerfile[3]
SearXNG[4]
SearXNG 本身
docker.io/searxng/searxng:latest[5]
Dockerfile[6]
Valkey[7]
内存数据库
docker.io/valkey/valkey:8-alpine[8]
Dockerfile[9]
需要做如下修改
- 首先是删除 caddy 部分,我不需要它的反向代理,所以删除
- 其次第一次运行时,删除 cap\_drop: - ALL,运行完后添加回
- 最后修改服务设置的端口(默认是 8080)
version: "3.7" services: redis: container_name:redis image:docker.io/valkey/valkey:8-alpine command:valkey-server--save301--loglevelwarning 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
如果你有兴趣,或者已经在用Dify了,欢迎添加作者微信,我们组织了一个Dify交流群,欢迎来提问或者分享你的经验。
7.1 安装 SearXNG 插件
在 marketplace 中搜索插件并安装
7.2 配置 SearXNG 插件
在安装的插件中,配置 base url,点击保存即可。 如不成功,可检查 2.x 配置或者检查容器日志。
引用链接
[1]
Caddy: https://github.com/caddyserve...
[2]
docker.io/library/caddy:2-alpine: https://hub.docker.com/\_/caddy
[3]
Dockerfile: https://github.com/caddyserve...
[4]
SearXNG: https://github.com/searxng/se...
[5]
docker.io/searxng/searxng:latest: https://hub.docker.com/r/sear...
[6]
Dockerfile: https://github.com/searxng/se...
[7]
Valkey: https://github.com/valkey-io/...
[8]
docker.io/valkey/valkey:8-alpine: https://hub.docker.com/r/valk...
[9]
Dockerfile: https://github.com/valkey-io/...
关于作者
作者拥有5年大数据开发经验,现任某车企大数据架构师,数据治理工程师(CDGA)。日常关注大数据组件和大模型应用,期待与您交流。
DataSpeed聚焦“大数据+AI”实战与资讯,技术干货和行业消息一网打尽。期待与你同行,欢迎扫码添加作者微信。
关于社区
PowerData社区是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。
社区群内会定期组织模拟面试、线上分享、行业研讨(涉及金融、医疗、能源、工业、互联网等)、线下Meet UP、城市聚会、求职内推等。同时,在社区群内您可以进行技术讨论、问题请教,届时更多志同道合的数据朋友。
社区整理了一份每日一题汇总及社区分享PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您自我提升,成功上岸。可以添加作者微信(Y0T0W02020),进入PowerData官方社区群。
往期推荐
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。