☰
本地部署deepseek harness+ollama调用(Linux环境)
2026/10/7 8:13:48 网站建设 项目流程

目录

1.引言

2.基础环境配置

3.ollama部署与配置

4.deepseek harness部署与配置


1.引言

deepseek harness与ollama想必大家都不陌生了,身为一位云计算技术应用专业的大学生,我想跟大家分享一下在我比较熟悉的Linux环境上,如何部署deepseek harness+ollama调用来辅助我们学习和使用Linux,让兄弟们感受一下Agent在Linux上带来的效率与权限风险。

本文档的编写是参考了许多相关技术文档以及AI补充得到的汇总文档,旨在为广大方向的学习者提供一篇Linux环境上的技术测试与参考文档,文档偏实操,理论解释偏少,对初学者可能不太友好。文档只介绍了纯cpu环境下的测试,后续会分享基于GPU环境下的文档,无生产环境考验,只做参考与学习。

2.基础环境配置

我们需要准备两台虚拟机:一台部署deepseek harness,一台部署ollama跑ai模型

配置规格dsh虚拟机ollama虚拟机
CUP8核12核
内存10G12G
网络模式NATNAT
磁盘50G-100G70G-150G
系统版本Rocky9.8Rocky9.8

Rocky9.8是本文档的部署环境,其他系统版本可能有些许差异,基础环境的配置本文档就不过多赘述,确保两台虚拟机的网络配置以及yum源的配置都正常

可能有人会问为什么要用两台虚拟机?其实我一开始是用一台虚拟机使用docker部署以方便工程化管理的,但我遇到了性能不足以及cpu、内存打满的问题,于是我便拆解成双机部署,解决这些问题。各位如果有更好的方法解决,欢迎分享。

3.ollama部署与配置(ollama虚拟机)

Ollama 是一款免费、开源、跨平台的本地大语言模型(LLM)运行时,可在 Windows、macOS、Linux 上通过一条命令(如 ollama run qwen3)直接下载并运行模型,并提供本地 API(默认端口 11434)用于应用集成。 Ollama的介绍想必大家也很熟悉了,我就不过多阐述,我们直接实操!

一键部署(网络好的环境):

# 官方脚本(自动下载+解压+配置服务) curl -fsSL https://ollama.com/install.sh | sh ollama --version

离线部署:

ollama GitHub链接:Release v0.34.4 · ollama/ollamahttps://github.com/ollama/ollama/releases/tag/v0.34.4

# 通过ssh先上传ollama压缩包ollama-linux-amd64.tar # GitHub上获取ollama开源的压缩包 # 安装zstd服务帮助ollama解压 dnf -y install zstd # 解压ollama包 mkdir -p /tmp/ollama-install # 创建独立目录方便管理 tar -xvf ollama-linux-amd64.tar -C /tmp/ollama-install # 解压并指定目录 cp -r /tmp/ollama-install/* /usr/ # 复制到/usr/目录下,ollama会自动配置/bin/ ollama --version # 检验ollama是否正常安装与确认版本

配置systemd方便管理:

# vi /etc/systemd/system/ollama.service cat >> /etc/systemd/system/ollama.service << EOF [Unit] Description=Ollama Service After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/ollama serve Restart=always RestartSec=3 Environment= "HOME=/root" Environment= "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" [Install] WantedBy=multi-user.target EOF # 重载systemd服务并启动ollama服务 systemctl daemon-reload systemctl enable ollama systemctl start ollama

配置完以上内容ollama即可正常使用,ollama的使用可以类比docker:

ollama list :查看已经拉取的模型

ollama pull :拉取需要的ai模型

ollama run :运行需要的ai模型

ollama start :启动指定模型

ollama stop :停止指定模型

ollama rm :删除指定模型

更多的命令使用介绍可以服务ollama官方使用文档学习:

CLI Reference - Ollamahttps://docs.ollama.com/cli拉取小模型测试ollama是否正常工作:

# ollama拉取大模型镜像 ollama pull qwen2:0.2b

后续我们需要拉取Qwen2.5-7B模型来给deepseek harness调用,这个模型有4.7G的大小拉取时间可能需要很长时间。为了解决这个问题我们可以使用wget拉取GGUF并使用Modelfile创建模型,效果与直接pull相同。

# wget 拉取模型(网络差的环境中,但得自己找需要的模型) wget -c https://hf-mirror.com/bartowski/Qwen2.5-7B-Instruct-GGUF/resolve/main/Qwen2.5-7B-Instruct-Q4_K_M.gguf # wget拉取的是gguf文件需要编写Modelfile来创建镜像 # vi Modelfile FROM ./Qwen2.5-7B-Instruct-Q4_K_M.gguf TEMPLATE "" "{{ if .System }}<|im_start|>system\n{{ .System }}<|im_end|>\n{{ end }}<|im_start|>user\n{{ .Prompt }}<|im_end|>\n<|im_start|>assistant\n{{ .Response }}<|im_end|>" "" PARAMETER stop <|im_end|> PARAMETER temperature 0.7 # 创建并启动模型 ollama create qwen2.5-7b-local -f Modelfile ollama run qwen2.5-7b-local

ollama Modelfile 是个很有趣的东西,它的使用方法有点类似Dockerfile,有些许的语法差异,如果想进一步了解Modelfile的使用可以到官方文档:

Modelfile Reference - Ollamahttps://docs.ollama.com/modelfile配置ollama接口的调用:

# vi /etc/profile export OLLAMA_HOST=0.0.0.0:11434 export OLLAMA_ORIGINS=* # 生效环境变量 source /etc/profile # vi /etc/systemd/system/ollama.service # 在[Service] 下添加 2 行: Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_ORIGINS=*" # 重载+重启 systemctl daemon-reload systemctl restart ollama

配置防火墙开放端口:

# 放行11434端口(防火墙) firewall-cmd --zone=public --add-port=11434/tcp --permanent firewall-cmd --reload # 或直接关闭防火墙(测试环境) systemctl stop firewalld systemctl disable firewalld

测试API是否能正常调用:

# 在部署deepseek harness的虚拟机上测试 # curl测试: curl http://部署ollama虚拟机IP:11434/api/generate -d '{"model":"qwen2.5:7b-local","prompt":"你好"}'

能正常看见模型回复则API配置成功,完成以上配置,我们就得到了一台ollama本地部署ai模型且可调用的虚拟机了。

4.deepseek harness部署与配置(dsh虚拟机)

DeepSeek Harness 是一款开源的 AI Agent 运行框架,采用“一切皆插件”架构,可高度定制和扩展,支持本地执行和多模式操作。接下来我们开始在dsh虚拟机上部署deepseek harness吧!

安装Node.js:

Node.js:官方要求 ^22.19.0 或 >=24.0.0。在终端跑 node -v 查看版本,不满足就去 nodejs.org 下载 LTS 以上版本。

# 1. 重置 Node.js 模块流,查看可用版本 dnf module reset nodejs -y dnf module list nodejs # 2. 安装一个较新的版本(比如 Node.js 23),安装可能需要很长的时间,耐心等待下载 dnf module install nodejs:23/common -y # 3. 设置 npm 国内源(至关重要!否则后续安装 dsh 也会卡死) npm config set registry https://registry.npmmirror.com # 4. 验证 node -v npm -v

安装好nodejs后我们就可以部署deepseek harness了

# 1. 全局安装 DeepSeek Harness(必须确保 npm 源已经换成国内淘宝源!) npm install -g @deepseek-ai/dsh

部署完之后问题来了,我该怎么访问dsh呢?

# 执行 dsh web --port 3080 --host 127.0.0.1吗?

那我虚拟机得一直开着一个交互窗口给dsh吗?这会不会太影响我对虚拟机的使用了?

我的解决方案是使用nginx反向代理加给dsh配置systemd自启动,缺点就是虚拟机每次重新启动都得去看一下dsh服务的状态拿访问url。

为什么不直接让dsh直接对外开放?改--host 127.0.0.1不就行了吗?这严重影响到了虚拟机的权限安全问题了,这就跟让权限裸奔了,所以我认为用nginx反向代理只有内网才可以使用,相对来说是比较保险的做法了。

部署nginx服务:

# 安装yum-utils dnf -y install yum-utils # 配置nginx官方源,保证nginx版本够新 # vi /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=https://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true # 清理并生成新的缓存 dnf clean all && dnf makecache # 安装nginx dnf -y install nginx # 设置开机自启动 systemctl enable --now nginx

配置nginx反向代理:

# vi /etc/nginx/conf.d/dsh.conf server { listen 7860; # Nginx 监听 7860,不要用 3080 server_name 192.168.11.174; # 你的实际 IP 或域名 location / { proxy_pass http://127.0.0.1:3080; # 代理到 DSH 默认端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # DSH 需要 WebSocket,以下两行确保长连接不被过早关闭 proxy_read_timeout 86400s; proxy_send_timeout 86400s; } }

配置防火墙端口开放:

# 放行7860端口(防火墙) firewall-cmd --zone=public --add-port=7860/tcp --permanent firewall-cmd --reload # 或直接关闭防火墙(测试环境) systemctl stop firewalld systemctl disable firewalld

配置systemd:

# vi /etc/systemd/system/dsh.service [Unit] Description=Dsh Service After=network.target [Service] Type=simple User=root WorkingDirectory=/root/ ExecStart=/usr/bin/dsh web --port 3080 --trusted-host 192.168.11.174:7860 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target

# 这里的192.168.11.174是我本虚拟机配置的IP,7860是nginx监听的端口

重载并设置自启动:

# 重载systemd服务 systemctl daemon-reload # 设置dsh开机自启动 systemctl enable --now dsh

本地浏览器访问deepseek harness:

# 查看dsh服务拿服务url systemctl status dsh ● dsh.service - Dsh Service Loaded: loaded (/etc/systemd/system/dsh.service; enabled; preset: disabled) Active: active (running) since Tue 2026-10-06 14:48:00 CST; 2h 31min ago Main PID: 8762 (node) Tasks: 11 (limit: 75182) Memory: 136.4M (peak: 159.0M) CPU: 23.116s CGroup: /system.slice/dsh.service └─8762 node /usr/bin/dsh web --port 3080 --trusted-host 192.168.11.174:7860 Oct 06 14:48:00 Renzo systemd[1]: Started Dsh Service. Oct 06 14:48:05 Renzo dsh[8762]: dsh web: http://127.0.0.1:3080/?token=5PbNsvJsnLbYA_yhxZngwP95DTCkBQblw5TsvNwGo_Y Oct 06 14:48:05 Renzo dsh[8762]: dsh web: opening the default browser; pass --no-open to disable

复制systemd信息里的url到浏览器

例如:

http://127.0.0.1:3080/?token=5PbNsvJsnLbYA_yhxZngwP95DTCkBQblw5TsvNwGo_Y

成功访问找到设置,添加自定义模型,填写相关信息如下图:

  • Provider ID:ollama(或者ollama-local,必须以小写字母开头,只能包含字母和数字)

  • 显示名称:Ollama 本地模型(随便起,你自己看得懂就行)

  • API 地址:http://ollama虚拟机IP:11434/v1(注意:末尾的/v1不能少)

  • API 协议:保持你选的OpenAI Chat Completions不变。

  • API 密钥:随便填,输入ollama即可。(Ollama 本身不校验,但 DSH 这里可能不允许为空)

由于qwen2.5:7b模型的限制,我们只能使用极简模式,各模式对ai模型的能力需求都有标准,但整体配置过程基本一样,各位可根据自己的硬件选择ai模型。

5.总结

我觉得部署到服务器的意义在于“远程、持续、协作、直接操作真实环境、离线、数据可控”。如果需要这些能力,它就很有价值;如果只是本地个人临时用,服务器部署不是必须的。再者说,在服务器上部署agent是很危险的一件事,但我觉得这很有学习和个人测试的意义,或许在解决权限等安全问题后,才能真正享受agent所带来的效率。

到这我们的整套部署流程就结束了,这是我在博客上发的第一份文档,其实关于这些内容的文档不计其数,我也是抱着分享和记录才编写了这份文档,漏洞和不足还是很多的,大家多反馈,也请各位多担待我这位新人,谢谢你的阅读!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询