尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux 服务器源码部署 DeepSeek Harness Web:从零到远程访问保姆级教程

Linux 服务器源码部署 DeepSeek Harness Web:从零到远程访问保姆级教程 没有桌面环境也能跑 Harness一台 Linux 服务器、七条命令、一个 systemd 服务就能把 DeepSeek Harness 的 Web UI 跑起来还能从任何地方远程访问。前面几篇我们聊过 DeepSeek Harness 的定位、桌面版体验、二次开发与场景实战。这次聊一个很多团队实际遇到的问题公司只有一台 Linux 服务器没有图形界面怎么把 Harness 跑起来答案其实很简单DeepSeek Harness 目前只有源码一种 Linux 形态桌面安装包仅提供 macOS / Windows。源码拉取 → 安装依赖 → 构建 → 启动 Web UI → 反向代理五步搞定。本文以 Ubuntu 22.04 为例完整演示一遍末尾附 systemd 开机自启与远程访问的完整配置全部命令都经过实测。一、为什么要源码部署先明确 Harness 是什么Agent Model Harness模型负责思考Harness 负责动手——读写文件、执行命令、调用工具、调度子智能体。DeepSeek Harness简称 dsh是 DeepSeek 开源的Agent 运行时框架GitHubdeepseek-ai/deepseek-harness24 万 Star。官方把它定位为连接模型与真实环境的那层中介所有能力模型、工具、会话、沙箱、UI都由插件组合而成底层基于 Cordis 微内核。为什么要源码部署而不是等安装包对比项桌面安装包Linux 源码部署支持平台macOS / Windows任何 Linuxx86_64 / arm64界面形态桌面 GUIWeb UI浏览器访问部署位置个人电脑服务器 / 内网主机远程访问不支持天然支持反向代理版本掌控跟随官方节奏自己拉分支、改源码对团队来说源码部署最大的价值是把 Harness 变成服务而不是应用一台低配服务器常年在线团队浏览器即开即用定时任务不关机也会执行数据全部落在自己的DSH_HOME目录里。二、环境准备一台服务器 三个工具硬件要求其实很低实测一台 2 核 4G 的 Ubuntu 22.04 足够流畅运行系统Ubuntu 20.04/22.04/24.04Debian、CentOS 同理CPU / 内存2 核 4G 起步构建时峰值约 2G 内存磁盘20G 以上源码 node_modules 构建产物约 6G网络能访问 GitHub 与 npm registry。软件依赖只有三个软件版本要求说明Node.js^22.19 || 24运行时本文实测 v24.17.0pnpm11.7.0仓库锁定包管理器用 corepack 启用git任意较新版本拉取源码# 验证环境node--version# v24.17.0 或更高git--version# git version 2.xNode.js 建议直接用官方二进制安装免编译curl-fsSLhttps://nodejs.org/dist/v24.17.0/node-v24.17.0-linux-x64.tar.xz|sudotar-xJ-C/usr/local --strip-components1node--version三、获取源码应用代码与数据目录分离部署目录建议用/opt/deepseek-harness应用代码与/var/lib/deepseek-harness数据目录DSH_HOME分离之后升级代码不影响用户数据sudogitclone https://github.com/deepseek-ai/deepseek-harness.git /opt/deepseek-harnesssudochown-R$(whoami)/opt/deepseek-harnesscd/opt/deepseek-harness进入仓库后先启用 pnpm项目通过packageManager锁定 pnpm 11.7.0corepack 会自动识别corepackenablepnpmcorepack prepare pnpm11.7.0--activatepnpm--version# 11.7.0四、安装依赖一条命令约 4 分钟仓库是 pnpm workspaces 单仓几十个包之间用workspace:*相互引用。安装严格按锁文件进行保证可复现pnpminstall--frozen-lockfile⚠️ 注意事项首次安装会下载几百 MB 依赖实测约 4 分钟装完node_modules约 2-3G属正常现象。结束时会自动执行postinstall钩子lefthook git hooks、subprocess 助手看到Done in ...即成功。五、构建一条命令产出 lib distpnpmrun build构建依次执行 tsc 类型编译host 与 client 双编译器、tsdown 打包、Web 前端 bundle 构建结束时输出✓ built in 9.10s build: recorded 347 client artifact(s) with 2 public value(s)产物分布packages/*/*/lib各包的 ESM 编译产物apps/cli/libCLI 可执行入口apps/web/distWeb UI 静态资源浏览器加载的部分。 构建常见坑若内存不足host 编译需要约 4G 上限设NODE_OPTIONS--max-old-space-size4096再跑不要同时开多个终端构建。六、启动 Web UI一行命令Web 端立起构建完成后用源码启动器直接跑 Web 模式pnpmdsh--profileweb --no-open--host127.0.0.1--port3080启动成功的标志是一行带 token 的 URLdsh web: http://127.0.0.1:3080/?token随机字符串默认绑定127.0.0.1:3080只允许本机访问。先本地 curl 验证curl-s-o/dev/null-w%{http_code}\nhttp://127.0.0.1:3080/# 4016.1 服务化systemd 开机自启正式部署建议用 systemd 托管。创建/etc/systemd/system/dsh-web.service[Unit] DescriptionDeepSeek Harness Web UI Afternetwork.target [Service] Typesimple Userubuntu WorkingDirectory/opt/deepseek-harness EnvironmentDSH_HOME/var/lib/deepseek-harness EnvironmentPATH/usr/local/bin:/usr/bin:/bin ExecStart/usr/local/bin/node --import tsx/esm apps/cli/src/bin.ts --profile web --no-open --host 127.0.0.1 --port 3080 Restarton-failure RestartSec3 [Install] WantedBymulti-user.targetsudosystemctl daemon-reloadsudosystemctlenable--nowdsh-web.servicesudojournalctl-udsh-web.service-f# 跟踪日志两个关键点DSH_HOME/var/lib/deepseek-harness所有用户数据会话、凭证、配置文件落在独立数据目录与应用代码分离--import tsx/esmdsh 的 CLI 源码启动走 tsx 的 ESM 钩子systemd 里直接给 Node 传这个参数即可。七、远程访问nginx 反向代理含 WebSocket / SSE这是最多人卡住的一步。先泼一盆冷水--host 0.0.0.0是被源码主动拒绝的。项目在packages/bundle/web-app/src/startup.ts里明确报错--host 0.0.0.0 is intentionally not supported yet for safety: it would expose remote code execution to the network。原因很直白Harness 能执行 Shell、读写文件、调度任务直接裸奔到公网等于把远程代码执行RCE的门敞开。正确的远程姿势是服务永远绑定 127.0.0.1由 nginx 做反向代理。7.1 信任围栏–trusted-hostWeb UI 的/api有一道浏览器信任围栏防御 DNS 重绑定与跨站攻击。本机访问走 loopback 豁免远程访问时浏览器发来的 Host 必须落在trustedHosts里否则一律 401/403# 假设服务器内网 IP 是 10.11.1.113ExecStart...--profileweb --no-open--host127.0.0.1--port3080--trusted-host10.11.1.113说明--trusted-host接受host或host:port。不带端口写10.11.1.113表示该主机名任意端口都信任写10.11.1.113:8796则精确到端口。以后反代端口随意换都不用改服务。7.2 nginx 配置模板在/etc/nginx/sites-available/dsh-web写入map $http_upgrade $dsh_connection_upgrade { default upgrade; close; } server { listen 8796; server_name _; client_max_body_size 256m; location / { proxy_pass http://127.0.0.1:3080; proxy_http_version 1.1; proxy_set_header Host $http_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; # WebSocket 升级 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $dsh_connection_upgrade; # SSE 流式输出关缓冲、拉长超时 proxy_buffering off; proxy_cache off; proxy_read_timeout 3600s; proxy_send_timeout 3600s; } }sudoln-s/etc/nginx/sites-available/dsh-web /etc/nginx/sites-enabled/sudonginx-tsudosystemctl reload nginx三个必须点proxy_set_header Host $http_host把浏览器访问的 Host 原样透传。Web UI 的登录 Cookie 会绑定Host 端口Host 转错会导致浏览器拿到的 Cookie 永远对不上一直 401WebSocket 升级Web UI 的消息流走Upgrade头必须透传SSE 流式模型输出是 text/event-streamproxy_buffering off关掉缓冲否则打字机效果会变成憋半天吐一屏。八、首次访问token 一次认证Cookie 30 天有效Web UI 的认证设计很特别——没有静态密码每次进程启动会随机铸造一个 token。流程是浏览器访问http://10.11.1.113:8796/→ 返回 401从服务日志拿到带 token 的 URLsudo journalctl -u dsh-web.service | grep -o token[A-Za-z0-9_-]*访问http://10.11.1.113:8796/?tokentoken→ 服务校验后303跳回首页并种下一枚30 天有效、HttpOnly、SameSiteStrict的 Cookie之后同一浏览器直接访问即可无需再输 token。# 全链路验证在服务器上模拟远程访问curl-s-o/dev/null-w%{http_code}\nhttp://10.11.1.113:8796/# 401curl-s-c/tmp/jar-o/dev/nullhttp://10.11.1.113:8796/?tokentoken# 303curl-s-b/tmp/jar-o/dev/null-w%{http_code}\nhttp://10.11.1.113:8796/# 200⚠️ 注意token 会随服务重启轮换。把它看成一次性开门钥匙Cookie 才是常驻通行证千万别把带 token 的 URL 发到群里。九、接入模型没有 KeyHarness 只是空壳Web UI 起来了但先别急着欢呼——Harness 本身不含模型。打开对话第一步就是配置模型 API。Harness 原生支持 DeepSeek API一行环境变量即可# 在 systemd 服务里追加后重启EnvironmentDEEPSEEK_API_KEYsk-xxxxxxxx问题来了Agent 任务往往要来回迭代几十轮Token 消耗比普通聊天高出一个量级模型成本才是跑 Harness 的真正大头。怎么把成本打下来答案是通过向量云获取字节跳动火山方舟官方 API 和 Key官方真实 Keyark-****-****-****-****-****-88888格式请求直连ark.cn-beijing.volces.com火山方舟官方接口不经中转延迟、稳定性、计费标准与官方完全一致低折扣 Token 价格注册即享按量计费、即用即扣、不设账期低门槛起步注册、充值10 元、创建 Key三步搞定几分钟就能把 Harness 跑起来。一把 Key 就能覆盖 Harness 的多种模式复杂推理用DeepSeek V4 Prodeepseek-v4-pro-ga-260813日常快速任务用DeepSeek V4 Flashdeepseek-v4-flash-ga-260731——开源框架搭配低成本官方 API才是 Agent 玩家的省钱正道。获取 API Key打开https://ark.tokenrize.cn/注册充值创建 Key 后填入 Harness 的模型配置即可。写在最后从源码到远程可用的 Harness Web拢共就五步装环境 → 拉源码 → 装依赖 → 构建 → 启动 → 反代 → 配模型。最难的不是命令是理解三条安全红线永远127.0.0.1 反向代理绝不0.0.0.0裸奔--trusted-host声明信任的访问域名Cookie 绑定 Host 不能错token 是开门钥匙、Cookie 是常驻通行证两者都别外泄。服务器常年在线、团队浏览器即开即用、数据掌握在自己手里——这就是源码部署的回报。至于模型 Token 成本交给向量云。你在 Linux 上部署 Harness 遇到过哪些坑欢迎在评论区聊聊。向量云南京科技有限公司
返回列表