犀牛派X1一键部署DeepSeek Harness

在犀牛派X1上一键部署DeepSeek Harness

适用场景:在 ARM64 Linux 设备上(如犀牛派 X1)一键部署 DeepSeek Harness(dsh),并通过局域网 HTTPS 反代访问。

适合人群:希望在本地设备上快速跑通一个带 Web UI 的 AI Agent,并支持局域网访问、便于开发和调试。


1. 先说结论

本方案适合在 犀牛派X1 设备上直接部署,不依赖 Docker。

核心思路很简单:

  • 在设备上安装 Node 24 与 dsh
  • 配置 Anthropic 兼容网关地址
  • 让 dsh 监听本地 127.0.0.1:3080
  • 通过 nginx 做局域网 HTTPS 反代
  • 再加一层 Basic Auth 做访问控制

2. 适用环境

建议满足以下条件:

  • ARM64 Linux(如 aarch64 / arm64)
  • Ubuntu 22.04 / Debian 系发行版或类似
  • 已安装 curl、tar、xz
  • 可以访问外网,用于下载 Node / npm 包
  • 已拿到模型网关地址和 API Key

查看架构:

uname -m

如果输出为 aarch64arm64,说明可以直接用此方案。


3. 目录说明

整个部署逻辑被收敛到一个脚本里,请点击下载:

它会自动完成以下工作:

  • 安装 Node 24
  • 安装 dsh
  • 写入 ~/.dsh/settings.yaml
  • 写入 ~/.dsh/.credentials.yaml
  • 注册 systemd 服务
  • 可选配置 nginx 局域网 HTTPS 反代

4. 先准备好两个关键参数

部署前,先确认这两个关键信息:

4.1 设备 IP

用于 SSH / 局域网访问:

hostname -I | awk '{print $1}'

例如:

192.168.112.185

4.2 模型网关地址

这是 dsh 调用模型时真正的入口,必须是 Anthropic 兼容接口。

例如:

http://192.168.110.22:28080

注意:

  • 这是模型网关,不是本地 18080 反代端口
  • 如果地址填错,最终很容易出现 404 / 403
  • 不能把本地 18080 反代地址当成模型网关地址

5. 一键部署

5.1 上传脚本到设备

scp deploy.sh aidlux@<设备IP>:~/

注意:

  • 犀牛派 X1 的 aidlux 用户密码:aidlux

5.2 登录设备并授权执行

ssh aidlux@<设备IP>
chmod +x deploy.sh

5.3 执行部署

5.3.1 检查运行环境

最简方式:

./deploy.sh install --lan-proxy

如果你的模型网关不是默认值,可以加:

--base-url http://你的网关IP:端口

例如:

./deploy.sh install --lan-proxy --base-url http://192.168.110.22:28080

注意:

  • 脚本第 237 239 行代码自动给baseURL拼接了v1,如不需要请自行修改

5.3.2 输入API Key后自动配置

5.3.3 配置局域网密码后部署完成


6. 部署完成后如何访问

6.1 本机访问

curl -I http://127.0.0.1:3080

6.2 局域网访问

部署脚本会自动生成 HTTPS 反代:

https://<设备IP>:18080

默认用户名:

aidlux

默认密码:

你设置的 DSH_PROXY_PASS,或者是 5.3.3 步骤中输入的局域网密码

首次访问时浏览器可能提示“连接不是私密连接”,选择“高级 → 继续前往”即可。


7. 常用命令

查看状态

./deploy.sh status

手动重启服务

sudo systemctl restart dsh-web

image

查看日志

sudo journalctl -u dsh-web -f

命令行单次对话

~/.local/node/bin/dsh --profile headless "你好"


8. 部署中最容易踩的坑

8.1 502:反向代理访问不到上游

表现:

  • 127.0.0.1:3080 无响应
  • 局域网访问返回 502

原因:

  • dsh Web 没有真正启动
  • 或者 3080 端口未监听
  • 或者 --trusted-host 配置错误

典型错误:

--trusted-host 192.168.112.185:18080

正确写法:

--trusted-host 127.0.0.1 --trusted-host localhost --trusted-host 192.168.112.185

注意:

  • –trusted-host 后面只能放 IP / Host
  • 不能带 :PORT
  • 不能混用 IPv4 和 IPv6 乱拼

8.2 403:网关收到了请求,但拒绝执行

表现:

dsh: AUTH: 403 { ... "This group does not allow /v1/messages dispatch" ... }

原因:

  • API Key 不是该组/租户可用的
  • 网关不允许该账号访问 /v1/messages
  • 或者 key 绑定的权限不正确

解决:

  • 确认 API Key 属于正确 group
  • 确认网关支持 Anthropic messages API
  • 确认 baseURL 指向正确的网关地址

8.3 404:网关地址或路由不对

表现:

dsh: PI_AI_ERROR: 404 404 page not found

原因:

  • baseURL 填错了
  • 网关实际上不支持 /v1/messages
  • 你把本地 18080 反代地址当成了模型网关地址

解决:

  • 先确认真实模型网关地址
  • 再确认是否支持 Anthropic 兼容消息接口

9. 关键配置说明

脚本默认会写入如下配置:

llm-pi-ai:
  providers:
    deepseek-anthropic:
      api: anthropic-messages
      baseURL: http://你的网关地址

它是按 Anthropic 兼容接口来设计的,所以:

  • 如果拿到的是 OpenAI 风格网关,可能不兼容
  • 如果拿到的是不支持 /v1/messages 的网关,照样会 403 / 404

因此,最稳妥的方式是:

  • 先确认提供网关的人说的是 Anthropic compatibility API
  • 再填入真正能调通的 baseURL 和 API Key

10. 推荐的最终部署命令

如果你要在 ARM64 设备上直接部署,推荐用下面这套:

./deploy.sh install \
  --base-url http://你的网关IP:端口 \
  --api-key 你的APIKey \
  --lan-proxy \
  --proxy-user guo \
  --proxy-pass 你的局域网密码 \
  -y

如果部署完成后出现异常,再用:

./deploy.sh status
./deploy.sh proxy --port 18080 --user guo --pass 你的密码 --web-port 3080 -y

11. 结论

这套部署方案的核心价值在于:

  • 不依赖 Docker
  • 适用于 ARM64/Linux 设备
  • 一键安装、便于维护
  • 支持本机访问和局域网访问
  • 适合在边缘设备或工业场景中快速落地

如果你已经确认了真实的模型网关地址、API Key 和权限,这套方案完全可以稳定跑通。


1 个赞