🥐Ubuntu24.04/Open WebUI+Ollama 本地部署

40 阅读3分钟

官方文档

🏡 首页 | Open WebUI 文档

本地部署

  • Git 拉取项目:

    git clone https://ghfast.top/https://github.com/open-webui/open-webui.git
    
  • 修改配置文件:由于本地已经运行了 Ollama 服务,所以需要修改docker-compose.yaml以及.env文件中关于 Ollama 的配置

    cd open-webui
    cp .env.example .env
    
    # .env
    # Ollama URL for the backend to connect The path '/ollama' will be redirected to the specified 
    # backend URL
    OLLAMA_BASE_URL='http://host.docker.internal:11434'
    
    OPENAI_API_BASE_URL=''
    OPENAI_API_KEY=''
    
    # AUTOMATIC1111_BASE_URL="http://localhost:7860"
    
    # For production, you should only need one host as
    # fastapi serves the svelte-kit built frontend and backend from the same host and port.
    # To test with CORS locally, you can set something like
    # CORS_ALLOW_ORIGIN='http://localhost:5173;http://localhost:8080'
    CORS_ALLOW_ORIGIN='*'
    
    # For production you should set this to match the proxy configuration (127.0.0.1)
    FORWARDED_ALLOW_IPS='*'
    
    # DO NOT TRACK
    SCARF_NO_ANALYTICS=true
    DO_NOT_TRACK=true
    ANONYMIZED_TELEMETRY=false
    
    # docker-compose.yml
    # 删除 Ollama 服务的配置以及 open-webui 的依赖,修改环境变量中的 Ollama 地址
    services:
      open-webui:
        build:
          context: .
          dockerfile: Dockerfile
        image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
        container_name: open-webui
        volumes:
          - open-webui:/app/backend/data
        ports:
          - ${OPEN_WEBUI_PORT-3000}:8080
        environment:
          - 'OLLAMA_BASE_URL=http://host.docker.internal:11434'
          - 'WEBUI_SECRET_KEY='
        extra_hosts:
          - host.docker.internal:host-gateway
        restart: unless-stopped
    
    volumes:
      ollama: {}
      open-webui: {}
    
  • 使用 Docker Compose 封装运行:其中镜像拉取速度比较慢

    docker compose up -d
    
  • 运行页面: 图片.png

  • 连接本地 Ollama 服务:

    • 管理员面板/设置/外部连接图片.png
    • 查看本地模型 ID: 图片.png
    • 修改 Ollama 配置:宿主机 Ollama 服务地址:http://host.docker.internal:11434(我猜你不想一个一个字母敲,就直接大胆使用“cv大法”吧) 图片.png 图片.png
    • 对话中即可选择模型:不过我的硬件不支持,所以就先不做测试了 图片.png
    • 使用服务器测试了下:初次对话耗时较长,后续效率还不错;目前无法联网(废话) 图片.png

联网搜索

  • 本地部署 SearXNG(如有需要或者作者心情好,后续会详细开篇文章;不过根据 Open WebUI 官方文档,相信你也可以);优化部分参考官方文档:SearXNG | Open WebUI 文档 注意

    • 配置 SearXNG 的搜索引擎,禁用 Brave、DuckDuckGo、Google、Wikipedia等国外搜索引擎(莫怪作者懒得“科学上网”),启用 360search、Bing、Sogou、Baidu(百度可能会触发反爬机制,抛出验证码限制搜索访问;一旦被抓,就是同一 IP 被禁 24h;作者目前还没有解禁『悲』)
    • 配置 docker-compose.yaml 中的 Caddy 端口映射以及取消 host 网络模式,否则被 Firefox 浏览器占用端口
      # docker-compose.yaml
      caddy:
          container_name: caddy
          image: docker.io/library/caddy:2-alpine
          # network_mode: host
          restart: unless-stopped
          ports:
            - "8081:8081"
          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}
          logging:
            driver: "json-file"
            options:
              max-size: "1m"
              max-file: "1"
      
  • 配置 Open WebUI 的页面搜索配置:注意开启最上面的联网搜索、配置宿主机中的 SearXNG 访问地址:http://host.docker.internal:8080/search?q=<query>;否则在对话窗口中无法开启联网搜索、无法连接到 SearXNG 的服务 图片.png

  • 开启联网搜索:由于硬件以及模型的限制,虽然进行了联网搜索,但是结果不尽人意;换了好设备和模型,效果就很好了(旧的呢,继续用呗,还能撇了?) 图片.png 图片.png
    图片.png

注意事项

  • 每次启用 Docker 容器时,需要一些加载时间,当出现下图最后几段日志的时候就是加载完成了: 图片.png
  • 使用 SearXNG 联网时,注意按照官方文档配置搜索引擎以及添加 json 格式
  • 所有系统级配置均在管理员面板/设置中管理
  • 连 1.7B 的大模型都运行乏力,哈基机你这家伙,这就燃尽了么