部署DeepSeek模型,进群交流最in玩法!
立即加群
发布
社区首页 >专栏 >容器环境下部署Open-webui、One-api、Ollama、Deepseek

容器环境下部署Open-webui、One-api、Ollama、Deepseek

原创
作者头像
用户2141488
发布2025-03-07 19:41:53
发布2025-03-07 19:41:53
820
举报
  • Open-webui 是一种友好的 Web 用户界面,专为大语言模型(LLM)设计,支持包括 Ollama 和 OpenAI 兼容的 API。它旨在简化客户端(如浏览器)与 Ollama API 之间的交互。(官网github中文文档
  • One-api:一个统一的编程模型和编程接口,旨在简化、加速和扩展跨异构计算设备的开发。它提供了一个统一的开发环境和工具集,使开发者能够使用相同的代码同时利用多种不同类型的处理器,如CPU、GPU、FPGA等,实现高性能计算和数据处理。(gitbub
  • Ollama:一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。(官网github中文文档ollama中文网
  • Deepseek:是一款由杭州深度求索人工智能基础技术研究有限公司开发的人工智能模型。(官网github

部署环境

系统:Ubuntu 22,8C16G,50G存储硬盘,香港地域云主机

选择香港地域的机器主要是为了pull镜像方便,此次部署只是对流程做介绍,不考虑性能,要好的性能选gpu机器

安装

docker、docker-compose

代码语言:txt
复制
apt-get update apt-get install -y docker.io sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

~# docker --version

Docker version 26.1.3, build 26.1.3-0ubuntu1~22.04.1

~# docker-compose --version

Docker Compose version v2.33.1

ollama

设置配置文件 ollama-config.yaml

代码语言:yaml
复制
# 监听的主机地址,默认情况下,Ollama 会监听所有可用的网络接口
host: 0.0.0.0
# 监听的端口号,这里设置为 11434,你可以根据需要修改
port: 11434
# 模型相关配置
models:
  - name: deepseek-r1:1.5b
    path: /root/.ollama/models/deepseek-r1-1.5b
    # 模型的参数配置,可根据具体模型调整
    parameters:
      temperature: 0.7
      top_p: 0.9
  - name: deepseek-r1:7b
    path: /root/.ollama/models/deepseek-r1-7b
    parameters:
      temperature: 0.6
      top_p: 0.85
# 日志配置
log:
  level: info
  format: json
# 缓存配置
cache:
  enabled: true
  size: 10GB

pull 并运行ollama容器

代码语言:txt
复制
docker run --name my-ollama  -d  -p 11434:11434  -v /root/ollama-config.yaml:/root/.ollama/config.yaml  -v /home/models:/root/.ollama/models  ollama/ollama

下载deepseek-r1:1.5b模型

  • 直接进到ollama容器 pull
代码语言:txt
复制
~# docker exec -it 38d2ab396811 /bin/sh
# ollama serve
Error: listen tcp 0.0.0.0:11434: bind: address already in use
# ollama run deepseek-r1:1.5b
pulling manifest
pulling aabd4debf0c8... 100%  1.1 GB
pulling 369ca498f347... 100%  387 B
pulling 6e4c38e1172f... 100%  1.1 KB
pulling f4d24e9138dd... 100%  148 B
pulling a85fe2a2e58e... 100%  487 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)
# ollama list                                
NAME                ID              SIZE      MODIFIED     
deepseek-r1:1.5b    a42b25d8c10a    1.1 GB    2 minutes ago

  • 用请求api的方式pull
代码语言:txt
复制
~# curl http://localhost:11434/api/pull -d '{"model": "deepseek-r1:1.5b"}'
{"status":"pulling manifest"}
{"status":"pulling aabd4debf0c8","digest":"sha256:aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc","total":1117320512}
......
......
{"status":"verifying sha256 digest"}
{"status":"writing manifest"}
{"status":"success"}

One-api

代码语言:txt
复制
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api

浏览器访问 http://ip:3000 (注意:首次登录不要去注册,直接登录,默认超管账号:root,密码:123456),登录后直接跳转到更新用户信息界面修改后再重新登陆,如下截图:

## 添加渠道

可以是在线的模型,比如deepseek官方注册后拿到sk能直接用,也可以是自己本地的模型,这里我们添加自己本地的模型

#### 渠道》》添加新的渠道

## 测试渠道是否可以正常联通

## 添加令牌

#### 令牌》》添加新的令牌

## 拿到令牌

## 测试通过 one-api 请求模型

#### curl 方式

代码语言:txt
复制
~# curl http://127.0.0.1:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-MQWo7iWhmSKVEwSrxxxxxxxx64aD098A08b464bCcC9C4" \
-d '{
  "model": "deepseek-r1:1.5b",
  "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ],
  "stream": false
}'
{"id":"chatcmpl-13","object":"chat.completion","created":1741342162,"model":"deepseek-r1:1.5b","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":"\u003cthink\u003e\n\n\u003c/think\u003e\n\n你好!很高兴见到你,有什么我可以帮忙的吗?无论是学习、工作还是生活中的问题,都可以告诉我哦!😊"},"finish_reason":"stop"}],"usage":{"prompt_tokens":4,"completion_tokens":31,"total_tokens":35}}

#### api请求工具(如postman、apipost等等,这里我用的是apipost工具)

#### 查看 token 消耗

可以看到上面有2次请求,已经消耗了一些token

Open-webui

代码语言:txt
复制
docker run  --name open-webui  -d -p 8080:8080 --add-host=host.docker.internal:host-gateway -v /home/ubuntu/data/open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

## 访问web界面(http://127.0.0.1:8080/)

#### 登录后界面

这次测试ollama、deepseek和webUI都是在一台机器上,且端口都是默认的,所以webUI能自动识别到deepseek-r1:1.5b 模型

#### 如果webUI和模型不在一台机器上需要添加外部模型链接

点击左下角的管理员图标:设置》管理员设置》外部链接

#### 由于11435非标准ollama端口,加上外部链接后webUI就能识别到这个模型(为了测试效果,11435端口对应的模型是deepseek-r1:7b)

#### 同理,加上配置了One-api 鉴权的模型再来看看效果

总结

通过上面的部署我们可以看到,Open-webui 提供了一个非常友好的web交互界面,让用户可以不用懂代码、不用懂开发就能体验私有化大模型,One-api 提供了一个非常优秀的安全鉴权措施,2个工具都是拿来开箱即用,非常方便;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 部署环境
  • 安装
    • docker、docker-compose
    • ollama
    • One-api
    • Open-webui
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档