默认分类

重复造轮子之docker部署Open-WebUI + SearXNG

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面板改更方便),下面直接放出完整的文件内容

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模型有关。

Done

本文著作权归作者 [ RenartLinden ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。

发表留言

读者留言4

  1. 新盘 上车集合 留下 我要发发 立马进裙

  2. 新车即将上线 真正的项目,期待你的参与

  3. 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

  4. 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