当前位置: 首页 > news >正文

OpenClaw部署与调用本地部署的大模型

记录一下这个部署过程:不想调云端API,毕竟花钱买Token还是有点肉疼,所以打算在本地部一个大模型。有一台放在内网机房的服务器,用来做大模型的宿主机。有了大模型之后,需要找个终端来运行 OpenClaw 框架,所以去闲鱼淘了台便宜二手旧电脑,安装Ubuntu 24.04 系统,作为物理沙箱。

机房里的服务器本身无法连外网;工位笔记本条件最好,能正常上网,能通过有线SSH连到内网机房的服务器。用来跑龙虾的闲鱼二手电脑,只能通过连接热点获取外部网络,不在内网环境里。

  • 服务器:位于内网机房,运行大模型后端。

  • 电脑 A:能连内网的笔记本,作为网关桥梁。

  • 电脑 B:闲鱼买来的二手本(Ubuntu 24.04),通过热点上网,运行 OpenClaw 客户端。

其实如果能把大模型跟openclaw放到同一台机子上更简单一些,但这样主要是考虑到安全问题,万一龙虾一不高兴删点啥就完蛋了。

ollama与大模型部署

ssh连服务器

官方安装脚本是这样的:

curl -fsSL https://ollama.com/install.sh | sh

这里它相当于先把安更具体的bash脚本给下载下来,然后根据脚本里的步骤去下载完整的ollama。

但是由于我们的服务器是通过远程ssh访问的,且服务器没法直接访问互联网,因此这里需要借助能上网的笔记本作为中转,设置临时代理去下载:

curl -x http://笔记本内网ip:7890 -fsSL https://ollama.com/install.sh | HTTPS_PROXY=http://笔记本内网ip:7890 sh

下完后改它的配置文件:

sudo mkdir -p /etc/systemd/system/ollama.service.d/ sudo vim /etc/systemd/system/ollama.service.d/override.conf

把这一段加上

[Service] Environment="CUDA_VISIBLE_DEVICES=0,1" Environment="HTTP_PROXY=http://笔记本ip:7890" Environment="HTTPS_PROXY=http://笔记本ip:7890"

其中CUDA_VISIBLE_DEVICES主要是指定它可调用的gpu,这里不写也行,因为我希望它的调用局限于两个gpu,不要把服务器上所有gpu全折腾起来。

下面那俩还是代理,因为ollama也需要联网去拉取模型。

wq!保存后,接下来:
告诉系统你修改了配置:sudo systemctl daemon-reload

重启ollama服务:sudo systemctl restart ollama

重启后,我们要检查一下 Ollama 进程是否真的拿到了代理设置,运行下面这行命令:

sudo cat /proc/$(pgrep ollama)/environ | tr '\0' '\n' | grep -E 'PROXY|CUDA'
  • 如果屏幕输出了你设置的那几行Environment内容,说明配置成功!

  • 如果啥也没输出,说明配置还是没生效,那可能需要检查文件权限。

下载模型(这里我们选择Qwen3.5):

ollama pull qwen3.5:35b-a3b

下载完成后在服务器终端运行:

ollama run qwen3.5:35b-a3b

退出聊天界面:>>>提示符处,直接输入/bye然后回车,或者按快捷键Ctrl + D,就可以退出当前的对话界面,回到普通的终端命令行。

强制立刻释放资源:退出聊天界面后,模型默认还会占 5 分钟显存。如果想立刻把显存清空(比如想跑其他任务),可以在终端直接运行这条命令:

ollama stop qwen3.5:35b-a3b

openclaw部署

以下是在电脑B上的操作:

cd sudo apt update sudo apt install -y git curl # 安装 Node.js curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs sudo npm install -g pnpm

我的这个笔记本B没有挂节点,需要走笔记本A上的梯子流量,否则git下载不下来,可以这样搞:

git config --global http.proxy http://192.168.137.1:7890 git config --global https.proxy http://192.168.137.1:7890
git clone https://github.com/OpenClaw/OpenClaw.git cd OpenClaw npm run build pnpm install pnpm run build pnpm run start pnpm run start -- setup pnpm run start -- gateway

内网服务器(运行 Qwen 模型)无法直接暴露在公网,客户端笔记本通过连接手机热点或随身 WiFi 获得外部网络,同时需要访问内网服务器的模型 API。

所以这里需要在电脑A上开一个窗口:

# 假设模型 API 运行在 11434 端口 # 这里相当于我们把服务器的11434端口中转到电脑A的11435端口 # 为啥不也中转到电脑A的11434端口?因为不知道为啥它报错了,总之换个端口中转也行 ssh -N -f -L 0.0.0.0:11435:127.0.0.1:11434 用户名@服务器ip

此时如何验证一下电脑B上能不能走这个接口呢?在B上输入运行curl http://192.168.137.1:11435/api/tags试试。

如果输出是类似这样的一大串:

{"models":[{"name":"glm-4.7-flash:latest","model":"glm-4.7-flash:latest","modified_at":"2026-03-18T08:30:20.430865628Z","size":19019270852,"digest":"d1a8a26252f18eb157e01321222","details":{"parent_model":"","format":"gguf","family":"glm4moelite","families":["glm4moelite"],"parameter_size":"29.9B","quantization_level":"Q4_K_M"}},{"name":"qwen3.5:35b-a3b","model":"qwen3.5:35b-a3b","modified_at":"2026-03-12T16:00:38.591154269Z","size":23869191742,"digest":"3460ffeede5453ea30971993babdb2165221f7","details":{"parent_model":"","format":"gguf","family":"qwen35moe","families":["qwen35moe"],"parameter_size":"36.0B","quantization_level":"Q4_K_M"}}]}

说明跑通了。

回到电脑B,我们再打开一个窗口,配置一下model提供方

cd OpenClaw pnpm run start -- configure

配置时这样选:

◇ Where will the Gateway run? │ Local (this machine) │ ◇ Select sections to configure │ Model │ ◇ Model/auth provider │ Ollama │ ◇ Ollama base URL │ http://电脑A的局域网ip:11435 #例如http://192.168.137.1:11435,一般是这个,可以ipconfig看一下 #然后等着它在服务器上下载一个glm-4.7-flash(我也不知道为啥它非得下这个,没有提供一个直接的qwen3.5的接口)

启动openclaw

cd ~/OpenClaw pnpm run start -- tui

此时就可以用了,但是它用的模型api默认是那个glm-4.7-flash,这个算是一个轻量化的小模型,如何把它切换成qwen3.5:35b-a3b或者其他模型?

修改配置文件,如下流程

rm -rf ~/.openclaw/agents/main #把之前那个对话给扬了,避免留下缓存 vim ~/.openclaw/openclaw.json #这里要修改以下参数: #"primary": "ollama/qwen3.5:35b-a3b", #意思是把它作为主要的模型api

然后重启服务

pnpm run start -- gateway stop pnpm run start -- tui

每次电脑关机后重新启动应该怎么办呢

#在电脑A上 ssh -N -f -L 0.0.0.0:11435:127.0.0.1:11434 用户名@服务器ip
#在电脑B上开第一个窗口 cd ~/OpenClaw pnpm run start -- gateway #第二个窗口 cd ~/OpenClaw pnpm run start -- tui
http://www.jsqmd.com/news/658781/

相关文章:

  • 混合储能蓄电池、超级电容三相并网+电池管理simulink仿真模型
  • 构建智能能源管理系统的7个关键技术突破:OpenEMS实战指南
  • 简单理解:M-Bus (Meter-Bus,仪表总线)
  • mysql如何配置监听IP_mysql bind-address多地址设置
  • PeerConnection深度解析一:CreateOffer
  • 对比分析DeerFlow和Hermes的记忆/技能进化系统
  • 别再手动炒股了!清华博士教你用 AI Agent 搭建量化交易系统(附源码)
  • 对话开发者:除了爆款,我们还能拿出什么样来对抗大环境的冷?
  • Fastjson的AutoType:从‘得力助手’到‘安全噩梦’,我们该如何用SafeMode优雅收场?
  • noi-2026年4月14号作业
  • 实操分享:为什么【灵智AI站群】能实现百万收录?亲自测试
  • 手把手拆解记分牌(Scoreboard)硬件:如何用Python模拟一个简单的ILP调度器?
  • 单片机串口通信入门:手把手教你配置TMOD、SCON和SBUF寄存器(附代码)
  • 从“完全或无”到IND-CCA2:公钥加密安全模型的演进与实战解析
  • 解决‘找不到.so文件’:GCC动态链接库编译成功后运行报错的三种终极解决方案
  • 苏州2026年,探秘苏州灌装机工厂的智造新篇章
  • 简单理解:NFC(近场通信)
  • ESP BLE 安全实战:从配对到加密的代码实现与场景解析
  • 从零到一:手把手教你用conda与pip实现开发环境的无缝迁移与国内源加速
  • 从BUUCTF一道RSA难题看e与φ不互素问题的AMM算法实战解析
  • Unity中Dropdown与TMP_Dropdown的OnValueChange事件优化:解决单选项点击无响应问题
  • 从零到一:基于Keil uVision5与LPC17XX的嵌入式工程构建实战
  • Kafka: 一条消息的完整“生命之旅”
  • 基于EOF分析的PDO指数计算与Python实践指南
  • 简单理解:MTK(联发科)、中兴微(中兴微电子)、ASR(翱捷科技)
  • [Simulink实战] 基于STM32的永磁同步电机无传感FOC控制:从模型到代码的完整开发流程
  • 炉石传说HsMod插件:55项功能深度解析与架构实现
  • Joy-Con Toolkit深度解析:开源手柄控制技术的架构与实现
  • 时序抖动:概念、测量与系统设计优化
  • 保姆级避坑指南:Ubuntu 20.04 LTS源码编译Qt 5.15.2全流程