TL;DR
主要注意第一次运行SearXNG时需注释掉docker-compose.yml中的cap_drop部分,以及修改settings.yml的formats部分以支持接收json格式请求。
背景
虽然Open-WebUI一早支持了SearXNG,Open-WebUI官方也有详细部署教程 SearXNG | Open WebUI。
但实际操作过程中,可能有些文档维护者看来理所当然的部分,遇上楼主这种外行,就难免走些许弯路。
虽然google_pse的免费层量大管饱,配置简单(楼主此前一直在用),但秉着折腾、可以不用但不能没有,同时出于隐私考虑,还是决定尝试自己部署一次。在此期间还是得感谢C老师的大力支持,ai改变生活。
实验材料
毕竟是外行,此前的Open-WebUI也是通过1Panel部署,遂决定在此基础上修改compose配置统一部署SearXNG,也对应了官方教程中的第二种替代方法。代码也基本上是最简单方式。
在面板中进入1panel的安装目录可以看到文件docker-compose.yml和.env。
实验方法
主要思路还是跟着官方文档来
1. 在Open-WebUI的目录下创建一个searxng-docker的文件夹(到最后发现好像没什么用,但反正就创建了放在那)
在面板复制目录后,譬如说是/opt/1panel/apps/ollama-webui/ollama-webui
# ssh进入服务器后定位到上述路径,复制执行以下命令
cd /opt/1panel/apps/ollama-webui/ollama-webui
# 再创建文件夹
mkdir searxng-docker
2. 修改.env文件,因为之前1panel部署Open-WebUI时,即已经有了.env文件,直接在此基础上末尾添加即可
# 进入编辑.env文件
nano .env
# 复制变量到最后一行,端口尽量避开常见端口如8080,我这里选了8700
# 但实际上我最后是没有把SearXNG映射到公网ip的,所以改不改其实没影响
# 因为我仅需要让它被Open-WebUI调用而不想被外界通过ip+端口扫到
SEARXNG_HOSTNAME=localhost:8700/
# 复制好后ctrl + o, ctrl + x保存并退出
3. 在现有基础上修改docker-compose.yml文件(其实直接在1Panel面板改更方便),下面直接放出完整的文件内容
- 针对Open-WebUI的部分,之前部署好了完全可以不动,后面在WebUI的面板修改
- docker-compose.yml中的环境变量,在.env文件中都可以找到即可
- 主要修改就是在原来文件的基础上粘贴进SearXNG的部分,注意缩进与原文件对齐
networks:
1panel-network:
external: true
services:
OpenWebUI:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:
- ENABLE_OLLAMA_API=false
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- OPENAI_API_BASE_URL=你的api链接
- OPENAI_API_KEY=你的api密钥
- TASK_MODEL_EXTERNAL=gpt-4o
- RAG_EMBEDDING_ENGINE=openai
- RAG_EMBEDDING_MODEL=text-embedding-ada-002
- RAG_OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL}
- RAG_OPENAI_API_KEY=${OPENAI_API_KEY}
- RAG_EMBEDDING_OPENAI_BATCH_SIZE=2048
- ENABLE_RAG_WEB_SEARCH=true
- ENABLE_SEARCH_QUERY=true
- WEB_SEARCH_ENGINE=searxng
- SEARXNG_QUERY_URL=http://searxng:8080/search?q=<query>
- ENABLE_IMAGE_GENERATION=true
- IMAGE_GENERATION_ENGINE=openai
- IMAGES_OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL}
- IMAGES_OPENAI_API_KEY=${OPENAI_API_KEY}
- IMAGE_GENERATION_MODEL=dall-e-3
image: ghcr.io/open-webui/open-webui:v0.6.14
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTP}:8080
restart: unless-stopped
volumes:
- ./data:/app/backend/data
searxng:
container_name: searxng
image: searxng/searxng:latest
#这里我直接注释掉了到服务器本机的端口映射,外部也就无从访问了
#ports:
# - "8700:8080"
volumes:
- ./searxng:/etc/searxng:rw
env_file:
- .env
restart: unless-stopped
networks:
- 1panel-network
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: json-file
options:
max-size: "1m"
max-file: "1"
4. 但第一次运行SearXNG,参考官方教程,需要先将cap_drop部分注释掉
在上述docker-compose.yml文件中,找到相关部分,并在前面加上两个#
#cap_drop:
# - ALL
如果当前Open-WebUI正在运行,则将其停止后运行。
docker compose up -d ; sleep 10 ; docker compose down
运行完毕,在/opt/1panel/apps/ollama-webui/ollama-webui/searxng目录下看到uwsgi.ini文件后,则在docker-compose.yml文件中将两个#删掉。
5. 修改相同目录下settings.yml配置,使SearXNG能够接收Open-WebUI的json格式调用
为方便就直接在1panel上修改了,找到formats相关部分,加上接收json。
6. 最后再次运行docker compose,在Open-WebUI确认下配置就可以正常搜索了
启动docker,还是在/opt/1panel/apps/ollama-webui/ollama-webui目录下
docker compose up -d
在Open-WebUI面板确认下搜索参数,搜索数量和并发也不是越多越好,搜索多了vps性能不行会很慢。结果搜多了很多时候ai也不会读这么多内容,感觉和embedding模型有关。
新盘 上车集合 留下 我要发发 立马进裙
新车即将上线 真正的项目,期待你的参与
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com