deepseek内网离线部署手册
前言
在当下 AI 浪潮汹涌的时代,DeepSeek 以其卓越的性能和出色的表现,迅速成为了众多专业人士和科技爱好者热议的焦点工具。在众多AI大模型的比拼中,DeepSeek 展现出了优越的实力。然而,对于许多企业和组织而言,出于数据安全、网络稳定性以及合规性等多方面的考量,将 DeepSeek 进行内网离线部署成为了一项紧迫且极具挑战性的任务。近期,因工作需要,完成了 DeepSeek 的内网离线部署,现在将部署经验分享给大家。
1. ollama安装部署
1.1 下载ollama的部署包
|
https://github.com/ollama/ollama/releases/download/v0.5.8/ollama-linux-amd64.tgz |
1.2 将部署包上传到服务器,然后进行解压
|
sudo tar -C /usr -xzf ollama-linux-amd64.tgz |
提示输入当前用户的密码
|
[sudo] password for XXX: |
然后等待解压缩文件,1-2分钟。
然后在/usr/bin目录下找到解压缩后的ollama文件
|
ls -lrt /usr/bin/ollama |

1.3 解压后,查看ollama的版本
|
ollama -v |

1.4 前台启动ollama
|
ollama serve |
启动成功后记录ollama服务的端口:127.0.0.1:11434,后续关联UI服务用到。

1.5 创建 Ollama 的用户和组并且指定该用户的主目录
|
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama sudo usermod -a -G ollama $(whoami) |
|
注释:命令解释 1. sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
这是用于在 Linux 系统中创建新用户的命令。
该参数表示创建一个系统用户。系统用户通常用于运行系统服务或守护进程,它们一般不用于交互式登录,其 UID(用户标识符)通常小于 1000(在某些系统中可能规则略有不同)。
该参数会自动创建一个与用户名相同的用户组,并将该用户添加到这个组中。例如,这里会创建一个名为
此参数表示在创建用户时,自动为该用户创建主目录。主目录是用户在系统中的个人工作空间,通常包含用户的配置文件、文档等。
这是要创建的新用户的用户名。 2. sudo usermod -a -G ollama $(whoami)
这是一个用于修改用户账户信息的命令。可以对已存在用户的各种属性进行修改,比如用户名、用户 ID、主目录、所属用户组等。
这是一个命令替换的语法。 |
1.6 配置系统自启动
先在 `/etc/systemd/system/` 目录下创建一个名为 `ollama.service` 的服务文件。
|
sudo vim /etc/systemd/system/ollama.service |
然后在打开的 `vim` 编辑器中,输入以下示例内容:
|
[Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=$PATH" Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=*" [Install] WantedBy=default.target |
在 `vim` 编辑器中,按下 `Esc` 键,然后输入 `:wq` 并按下回车键,即可保存并退出编辑器。
1.7 系统的方式启动ollama
|
1,重新加载 `systemd` 管理器配置 sudo systemctl daemon-reload 2,启动服务 sudo systemctl start ollama.service 3,查看服务状态 sudo systemctl status ollama.service 4,设置服务开机自启 sudo systemctl enable ollama.service 5,重启服务 sudo systemctl restart ollama.service 6,停止服务 sudo systemctl stop ollama.service |
查看服务状态,确定ollama服务处于运行中。

2. 下载模型文件
2.1 下载模型
|
可以访问https://www.modelscope.cn/models网址进行模型下载 |
2.2 下载deepseek蒸馏过的模型,找到以GGUF为结尾的模型

|
比如:DeepSeek-R1-Distill-Qwen-7B-GGUF:选择合适机器的模型。 https://www.modelscope.cn/models/unsloth/DeepSeek-R1-Distill-Qwen-7B-GGUF |

2.3 下载好的模型,需要上传到ollama部署的服务器
2.4 导入模型
|
1.模型文件同级目录下创建一个文件,这里命名叫做
|

2.5模型导入完成后,查看导入的模型
|
ollama list |
2.6 运行导入的模型
|
ollama run <上一步定义的模型名称> ollama run |

到这步deepseek模型已经部署好了,但是只能后台命令运行,不方便,需要再部署一个UI前台服务方便使用。
3. 部署ollama-ui(docker方式部署)
3.1 下载ollama-ui的部署包
|
1.找一台可以科学联网的linux服务器,且该服务部署了docker 参考网址:https://github.com/jakobhoeg/nextjs-ollama-llm-ui 2.使用docker的方式拉取镜像 docker pull jakobhoeg/nextjs-ollama-ui 3.镜像拉取成功,打包镜像 docker save -o jakobhoeg_nextjs-ollama-ui.tar jakobhoeg/nextjs-ollama-ui:latest |
3.2 将上面打包好的镜像包,上传到内网环境
|
1.内网环境,找一台安装了docker的服务器 2.加载镜像包 docker load -i jakobhoeg_nextjs-ollama-ui.tar 3.查看镜像 docker images |

3.3 启动ollama-ui
|
1.ollama和ollama-ui没有部署在同一台服务器 (example.com需要更改为部署了ollama的服务器ip) docker run -d -p 3000:3000 --add-host=host.docker.internal:host-gateway -e OLLAMA_URL=http://example.com:11434 --name nextjs-ollama-ui --restart always jakobhoeg/nextjs-ollama-ui:latest 2.ollama和ollama-ui部署在同一台服务器 docker run -d -p 3000:3000 --add-host=host.docker.internal:host-gateway -e OLLAMA_URL=http://host.docker.internal:11434 --name nextjs-ollama-ui --restart always jakobhoeg/nextjs-ollama-ui:latest --修改ollama-ui默认监听端口 先查看端口是否被占用 netstat -tuln | grep 8000 没占用的话,即可修改UI监听端口 这里 8000 是宿主机的端口,3000 是容器内部服务监听的端口。 docker run -d -p 8000:3000 --add-host=host.docker.internal:host-gateway -e OLLAMA_URL=http://host.docker.internal:11434 --name nextjs-ollama-ui --restart always jakobhoeg/nextjs-ollama-ui:latest |

3.4 打开浏览器,访问ollama-ui
http://host:8000/,选择模型,对话测试下

deepseek内网离线部署手册的更多相关文章
- kubernetes 内网节点部署笔记(一)
在Centos7上部署kubernetes时,碰到很多坑,特别在摸拟在内网部署时,有来自GFW的障碍,有来自Firewalld的阻塞,反正是各种不服,终于慢慢理顺了思路,自己记录一下,防止遗忘. 环境 ...
- yum仓库配置与内网源部署记录
使用yum的好处主要就是在于能够自动解决软件包之间的依赖.这使得维护更加容易.这篇文章主要就是记录部署内网源的操作过程以及yum工具如何使用 因为需要.数据库要从Oracle迁移至MySQL.在部署M ...
- k8s内网安装部署(二)
续上篇 https://www.cnblogs.com/wangql/p/13397034.html 一.kubeadm安装 1.kube-proxy开启ipvs的前置条件 modprobe br_n ...
- Gradle AndroidStudio内网离线构建配置踩坑记录
最近一家新公司,由于办公环境都是在内网机上,导致在Unity导出android工程后,gradle离线构建也是第一次搞,花了一天时间也踩了一些坑,最后也终于构建成功了,这里记录下,方便大家少走些弯路. ...
- Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务
如何在离线环境或纯内网环境的Linux机器上安装部署Docker服务或其他服务.本次我们以Docker服务和Ansible服务为例. 获取指定服务的所有rpm包 保证要获取rpm包的机器能够上网. 本 ...
- Microsonf visual c++ 14+ 离线内网安装
内网离线安装方法:先下载官方的visualcppbuildtools: <br href=http://go.microsoft.com/fwlink/?LinkId=691126 >& ...
- 工具篇:使用natapp工具映射内网到外网访问
一.环境说明 开发基于微信公众号的应用最大的痛苦之处就是调试问题,每次实现一个功能后都需要部署到一个公网服务器进行测试,因为微信用户每次向公众号发起请求时,微信服务器会先接收到用户的请求,然后再转发到 ...
- 内网网络摄像机(RTSP/IPC/NVR)如何能在公网进行RTMP/HLS/HTTP-FLV直播
一.背景需求 传统监控行业里不管是设备端.服务器端亦或是客户端都在一个内网里面.而且现在的大部分监控方案都是这样的格局,小到一个公司范围内的监控,再到一个园区.一个仓库监控.一个农业园林监控.一个养殖 ...
- frp 用于内网穿透的基本配置和使用
frp 用于内网穿透的基本配置和使用 今天是端午节,先祝端午安康! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便 ...
- Hyperledger Fabric 1.0 从零开始(三)——环境构建(内网/准离线)
有公网环境的服务器可以直接看 Hyperledger Fabric 1.0 从零开始(二)--环境构建(公网) ,本篇内容与上篇相似,只不过环境搭建需要在内网下,也就是网络被限制的情况下. 1:环境构 ...
随机推荐
- IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的
1.引言 好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程. 文章中,我将从如 ...
- 微信小游戏直播在Android端的跨进程渲染推流实践
本文由微信开发团队工程师"virwu"分享. 1.引言 近期,微信小游戏支持了视频号一键开播,将微信升级到最新版本,打开腾讯系小游戏(如跳一跳.欢乐斗地主等),在右上角菜单就可以看 ...
- Solution Set -「NOIP Simu.」20221014
\(\mathscr{A}\sim\)「Unknown」tothecrazyones 有 \(n\) 堆石子, 第 \(i\) 堆有 \(a_i\) 个. Alice 和 Bob 轮流抓取, Al ...
- neo4j存储数据-图数据库
1. 简介 本文主要介绍neo4j是如何将图数据保存在磁盘上的,采用的是什么存储方式.分析这种存储方式对进行图查询/遍历的影响. 2. 图数据库简介 生产环境中使用的图数据库主要有2种,分别是带标签的 ...
- 理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多 不同的地方.很多人在 ...
- SM9-密钥交换
算法过程 代码实现 ///************************************************************************ // File name: ...
- VS中无法识别unistd.h的问题
问题 VS 无法打开源文件 unistd.h 参考:链接 方法 许多在Linux下开发的C程序都需要头文件unistd.h,但VC中没有个头文件,所以用VC编译总是报错.把下面的内容保存为unistd ...
- Kotlin:反引号中的函数命名、匿名函数、函数类型与隐式返回
- Spaghetti pg walkthrough Intermediate
nmap ┌──(root㉿kali)-[~] └─# nmap -p- -A 192.168.170.160 Starting Nmap 7.94SVN ( https://nmap.org ) a ...
- Matplotlab显示OpenCV读取到的图像
Matplotlab显示OpenCV读取到的图像 一. 确认图像的数组类型 在使用 OpenCV 的 cv2.imread() 函数读取图像时,第二个参数(标志)决定了图像的读取方式.具体来说,0.1 ...