云服务器用Linux+Docker+Ollama+OpenWebUI部署DeepSeek-R1大语言模型(LLMs),DeepSeek本地化部署教程(在自己电脑上部署也可以参考此教程)。超详细教程,手把手。
在当今数字化时代,大型语言模型(LLMs)的应用越来越广泛。本文将详细介绍如何在云服务器上使用 Docker、Ollama 和 OpenWebui 部署 DeepSeek-R1 大型语言模型,实现其本地化部署,让你能够更便捷地使用这一强大的语言模型。
视频教程:https://www.bilibili.com/video/BV1GpNee9EPJ/
- 雨云GPU云服务器搭建SD(Stable Diffusion)的教程,搭建自己的AI绘画网站,AIGC:https://blog.zeruns.com/archives/768.html
- 雨云GPU云服务器搭建"ChatGPT"—GPT4All本地部署:https://blog.zeruns.com/archives/767.html
站长交流群:767557452
Ollama简介
Ollama是一款开源的大型语言模型(LLMs)本地化运行工具,支持通过命令行交互快速部署AI模型。其核心优势包括:
- 轻量化部署:无需复杂环境配置,单条命令即可启动模型服务
- 多模型支持:内置HuggingFace模型库,支持Llama 2、Mistral、DeepSeek等主流模型
- 跨平台运行:提供Linux/macOS/Windows全平台支持
- Docker集成:支持容器化部署,保障环境隔离与一致性
- REST API:提供标准化接口,方便与各类前端UI集成
Ollama官网:https://url.zeruns.com/Ollama
DeepSeek简介
DeepSeek-R1是深度求索(DeepSeek)公司研发的新一代开源大语言模型,具备以下特性:
- 复杂推理能力:在数学推导、代码生成等场景表现优异
- 长上下文支持:最高支持128k tokens的上下文窗口
- 多轮对话优化:采用RLHF技术提升对话连贯性
- 企业级适配:提供量化版本(4-bit/8-bit)满足不同硬件需求
- 灵活部署:支持本地私有化部署与API云端调用
DeepSeek官网:https://url.zeruns.com/DeepSeek
准备服务器
接着需要一台服务器来搭建(也可以用自己电脑,要Linux系统),我这里推荐皓量云擎的轻量应用服务器,8核16G 才60元/月:
皓量云擎优惠注册地址:https://www.haoliangyun.com/?aff=zeruns&source=blog
邀请码:zeruns(走链接或邀请码注册送5折和8折优惠券)
其他性价比高的服务器推荐: https://blog.zeruns.com/archives/383.html
- 皓量云擎 宁波 轻量应用服务器 性能测评:https://blog.vpszj.cn/archives/2390.html
- 莱卡云 宁波电信云服务器 性能测评,IPv4&IPv6双栈:https://blog.zeruns.com/archives/807.html
- 雨云 宁波E5-2650v4独服测评,48核64G 300兆 588元/月:https://blog.vpszj.cn/archives/2364.html
注册完账号后进到皓量云擎控制台,点击 轻量应用服务器→立即购买,套餐建议选8核16G(选4核8G也可以,但最多只能部署7B的模型),系统选Debian12,然后点击下一步
确认信息然后提交订单
点击管理进入到服务器控制台
点击 安全组→添加规则→入口 设置开放全部端口(也可以只开放用到的端口)
连接服务器
下载安装并打开ssh客户端软件,ssh客户端软件推荐putty或mobaxterm。
SSH客户端软件下载地址:https://www.123pan.com/ps/2Y9Djv-UAtvH.html
我这里用mobaxterm,在SSH客户端中输入你的服务器的IP地址(控制台获取),还有SSH端口(默认是22),然后点击好的或者打开。
然后输入账号并按回车,账号一般默认为root,接着输入密码(密码在控制台获取)并按回车确定,输入密码时不会显示出来。
温馨提示:在SSH终端中按住鼠标左键选择文字,然后松开鼠标,再在空白处单击一下,这样就把选中的文字复制了;在SSH终端单击右键即为粘贴。
APT换源
系统默认apt软件下载源是国外服务器,所以需要换国内镜像源,使用chsrc来换源。
在SSH终端,输入下面的指令(#开头的是注释,不用输入)。
# 下载安装chsrc
curl https://chsrc.run/posix | bash
# 自动测速,寻找最快者,换源
chsrc set debian
设置SWAP
SWAP(交换空间)是磁盘上的一块区域,它在物理内存(RAM)不足时,作为虚拟内存来使用。当系统的物理内存被耗尽时,操作系统会将一些暂时不用的内存数据交换到 SWAP 空间中,从而为当前正在运行的程序腾出物理内存。这有助于避免因物理内存不足而导致系统崩溃或程序无法正常运行的问题。
# 使用一键脚本设置swap,按照提示设置4096Mb的swap
wget --no-check-certificate https://gitee.com/zeruns/Linux-shell/raw/master/setup_swap.sh && chmod +x setup_swap.sh && ./setup_swap.sh
# 检查内存大小看看是否设置成功
free -m
安装Docker
在SSH终端,输入下面的指令。
用apt包管理器来安装:
# 安装docker,如果遇到问是否继续的就输入y来确定
apt update && apt -y install docker.io
# 设置docker开机自启和启动docker
systemctl enable docker && systemctl start docker
# 检查是否安装成功,若安装成功会显示 Docker version x.x.x
docker -v
若没安装成功就试试下面的安装脚本:
# 国内需要执行这步
export DOWNLOAD_URL=https://mirrors.ustc.edu.cn/docker-ce
# Docker安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh
# 检查是否安装成功,若安装成功会显示 Docker version x.x.x
docker -v
如果还是不行就尝试下面链接的手动安装教程吧
docker手动安装教程:https://www.runoob.com/docker/ubuntu-docker-install.html
Docker换国内源
# docker换源
echo '{"registry-mirrors": ["https://docker.1ms.run","https://docker.1panel.live","https://docker.zeruns.vip","https://9uy9qgvj.mirror.aliyuncs.com"]}' | sudo tee /etc/docker/daemon.json > /dev/null
# 使用chsrc给docker换源(如果上面的不行再用这个)
chsrc set dockerhub
# 重启Docker
systemctl daemon-reload && systemctl restart docker.service
安装Ollama
本教程用Docker来安装Ollama,只支持调用CPU,不支持GPU。
可以将下面命令中的 /data/ollama
改成其他目录,这个目录是用于存放模型数据的,不改也行,保证空间足够就行。如果想调用GPU,docker run -d
后面直接加上 --gpus=all
(未验证能不能行)
# 创建Ollama容器
docker run -d -v /data/ollama:/root/.ollama -p 11434:11434 --name ollama --restart=always ollama/ollama
如果出现报错 error: exec: "apparmor_parser": executable file not found in $PATH
,就去SSH终端执行 apt -y install apparmor apparmor-utils
,然后再执行一次上面创建Ollama容器的命令即可(如果提示容器已存在就运行 docker start ollama
)。
部署DeepSeek-R1模型
本教程以部署 DeepSeek-R1-14B 为例,14B
代表该模型的参数数量为 140 亿(B 是 “Billion” 的缩写,意为十亿),建议16G内存或以上,如果只有8G内存建议部署 1.5B 或 7B 版本的(可以简单理解为每1B需要1G内存)。
还有14B版本需要占用10GB左右的硬盘空间,需保证你服务器剩余硬盘空间足够!
# 下载并运行deepseek-r1:14b模型
docker exec -it ollama ollama pull hf.co/lmstudio-community/DeepSeek-R1-Distill-Qwen-14B-GGUF:Q6_K
# 如果上面的不行可以尝试这个
docker exec -it ollama ollama pull deepseek-r1:14b
# 7b模型(8G内存建议这个)
docker exec -it ollama ollama pull hf.co/lmstudio-community/DeepSeek-R1-Distill-Qwen-7B-GGUF:Q4_K_M
# 如果上面的不行可以尝试这个
docker exec -it ollama ollama pull deepseek-r1:7b
将上面命令中的 pull
改成 run
,这样可以直接运行模型,直接在命令行里对话。
安装OpenWebUI
Open WebUI 是一种可扩展的、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。它支持各种LLM运行器,包括 Ollama 和与 OpenAI 兼容的 API。
下面代码框命令整个复制到SSH终端运行,不要逐行!
docker run -d \
-p 8186:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
--name openwebui \
--restart=always \
-v /data/open-webui:/app/backend/data \
dyrnq/open-webui:main
打开浏览器,访问 http://服务器公网IP:8186
,即可开始使用 Open WebUI。用邮箱注册下就可以了
如果没有下载模型需要先下载模型,如果前面在ollama上下载过了,这里直接就选择模型就能用了。可以开始对话了。
还可以开启联网搜索功能
如果想要通过域名访问可以自己搭个nginx来反代。
推荐阅读
- 高性价比和便宜的VPS/云服务器推荐: https://blog.zeruns.com/archives/383.html
- 我的世界开服教程:https://blog.zeruns.com/tag/mc/
- 海口-北京-澳门 旅行记录和照片分享:https://blog.zeruns.com/archives/849.html
- 苹果 Mac Mini M4 迷你主机简单测评和拆解,最强单核性能的小主机:https://blog.zeruns.com/archives/851.html
- 云服务器搭建Typecho个人博客网站,保姆级建站教程:https://blog.zeruns.com/archives/749.html
English Version of the Article: https://blog.zeruns.top/archives/41.html
47 条评论
是不是还需要备案ヾ(´・ ・`。)ノ"我这里到浏览器访问公网ip8186的时候说网站无法访问
国内有部分机房限制了IP访问HTTP服务,这种就需要备案域名来访问
[root@ecm-40ad ~]# docker run -d \ -p 8186:8080 \ --add-host=host.docker.internal:host-gateway \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ --name openwebui \ --restart=always \ -v /data/open-webui:/app/backend/data \ dyrnq/open-webui:main
docker: invalid reference format.
See 'docker run --help'.
这个错误如何解决
看着像是命令格式问题,你不是直接复制进去的?自己手打?
直接复制进去的,然后把他们直接放在一行了,把换行都去了,其它的都没动
为什么要擅自改...,本来就是多行的命令,你强行改一行又不把 \ 换行符去掉,不懂就别做改动,直接回车...
[root@ecm-40ad ~]# docker run -d \
-p 8186:8080 \--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
--name openwebui \
--restart=always \
-v /data/open-webui:/app/backend/data \
dyrnq/open-webui:main
Unable to find image 'dyrnq/open-webui:main' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 174.37.243.85:443: connect: connection timed out.
See 'docker run --help'.
现在又提示连接超时,怎么解决呀
看看上一个 小林 的评论,同样的问题!能不能好好看清楚教程!一步一步来!又是docker没换源...
哦哦哦,好的
echo '{"registry-mirrors": ["https://docker.1ms.run","https://docker.1panel.live","https://docker.zeruns.vip","https://9uy9qgvj.mirror.aliyuncs.com"]}' | sudo tee /etc/docker/daemon.json > /dev/null
使用chsrc给docker换源(如果上面的不行再用这个)chsrc set dockerhub
重启Dockersystemctl daemon-reload && systemctl restart docker.service
我用的这个换源,还是一样的超时,我用的是cen os,这个没有影响吧,docker也按照上面的方法重启了
教程明确说了用Debian12,centos我没测试过,你自己解决吧
好的
搭建成功了,发送消息过去返回这个内容,【SyntaxError: Unexpected token 'd', "data: {"id"... is not valid JSON】是啥问题呀?
提示这个Unable to find image 'ollama/ollama:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
国内服务器无法正常搭建呀
跳步奏了?docker没换源?好好看清楚教程再来说话,我就是用国内服务器搭的
latest: Pulling from ollama/ollama
d9802f032d67: Already exists
161508c220d5: Already exists
6b78c8d09c74: Already exists
e0c387d586cc: Pulling fs layer
完了一直卡在这里不动了
换源了呀他就是无法正常创建Ollama容器一直提示超时
换完源要重启docker的啊,你这报错信息明显就是没换!
感谢感谢可以了
你好,创建服务器之后可以,供多人 使用吗?
可以的
如果想调用GPU,docker run直接加上--gpus=all就可以吗?
这个没试过,应该可以吧
感觉CherryStudio也很棒,可以绑定Ollama
看了一下,不错的软件,还可以把其他各个大模型的api也接进去方便切换
最近DeepSeek真就挺火的,我群里,和朋友都在聊。
确实很火,连我爸妈都知道这个东西了
Open WebUI 注册完管理员帐号登陆之后,加载不出来,该怎么办啊?
多等一会就可以了
刷新了好多次都不行,然后看网页请求,models那个接口【 504 Gateway Time-out】 了
不要刷新,白屏状态一直等待,它好像有一个请求链接是境外服务器,非常慢
他是不是只有国外的服务器才可以使用呢?国内访问不了。有没有什么其他的方法吗?
我教程就是用的国内服务器,可以用
我是等那个请求超时,才刷新的一直出不去(´இ皿இ`)
部署了一套,可惜配置不给力,跑不动
升级配置,加几张H100