
1. N5105 四网口 i225 软路由上跑 Openclaw先解决 PVE 6.2 的网卡直通与远程接入N5105 这颗 U 在软路由圈子里热度一直没降四口 2.5G 加 Intel i225 网卡整机功耗低、性能够用拿来跑 PVE 再虚拟一台 Ubuntu 做 Openclaw 是很常见的组合。Openclaw 是一个可以本地部署、通过网页和聊天通道交互的智能体框架适合想把模型能力接到自己设备上、又不想依赖公有云面板的人。这篇面向的是手里已经有 N5105 四口 2.5G V3 机器、装了 PVE 6.2、想从零把 Openclaw 跑起来并接上统一 API 通道的玩家。我试过在 i225 直通这一步卡了挺久PVE 6.2 内核对 i225 的支持和 7.x 有差异网桥配置写错会导致虚拟机拿不到网、或者宿主机自己掉网。所以这篇不会只给你一条qm set就完事而是把 OpenSSH 远程接入、i225 直通、网桥规划、Openclaw 安装、通道配置、远程访问、报错排查整条链路拆开讲。核心检索词就是 N5105、Intel i225、PVE 6.2、Openclaw、OpenSSH 这一串你按顺序跟做基本能复现。先说清楚整体拓扑避免后面配置时迷路。我的规划是N5105 的四个 i225 口eth0 作为 PVE 管理口接上级路由eth1 到 eth3 暂时桥接给虚拟机用或者留着做直通。PVE 管理地址设为 192.168.87.2Openclaw 所在的 Ubuntu 虚拟机地址是 192.168.87.54Openclaw 网页端口 18789。你如果网段不同把后面所有 IP 换成自己的即可命令结构不用改。为什么强调 OpenSSH 先行因为 PVE 的 noVNC 控制台复制粘贴很难用装系统、改配置、看日志都痛苦。先在 Ubuntu 里把 OpenSSH 装好并设成开机自启之后所有操作都能在本地电脑的终端里完成效率差好几倍。这也是很多人装完系统就急着装 Openclaw、结果被控制台折磨的原因。还有一个前置认知Openclaw 本身不绑定某个模型厂商它通过 provider 配置去调用外部 API。所以「装好 Openclaw」和「让它能真正对话」是两件事中间必须有一段通道配置。这篇会把通道配置单独作为一个大节给出可复制的配置片段和验证方法而不是一句「连上后就能用」带过。2. PVE 6.2 下 i225 直通与网桥配置OpenSSH 远程接入软路由虚拟机这一节是整篇的地基。PVE 6.2 默认的 Linux 网桥模式对大多数场景够用但 i225 这块网卡在直通时要注意 IOMMU 分组。先确认你的机器 BIOS 里开了 VT-d然后在 PVE 宿主机上编辑 GRUB。登录 PVE 的 SSH默认 22 端口root 用户执行nano /etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT这一行改成GRUB_CMDLINE_LINUX_DEFAULTquiet intel_iommuon iommupt保存后更新 GRUB 并加载 vfio 模块update-grub echo vfio /etc/modules echo vfio_iommu_type1 /etc/modules echo vfio_pci /etc/modules update-initramfs -u -k all reboot重启后验证 IOMMU 是否生效dmesg | grep -e DMAR -e IOMMU看到DMAR: IOMMU enabled就说明开了。接着查 i225 网卡的 PCI 地址和 IOMMU 分组lspci -nn | grep -i ethernet输出里会看到类似Intel Corporation Device [8086:15f3]的条目记下前面的01:00.0这种地址。然后find /sys/kernel/iommu_groups/ -type l | sort -V确认每个 i225 口是否在独立分组。如果几个口挤在同一组直通会失败这时候要么换口要么用 ACS 补丁PVE 6.2 上比较折腾建议优先换 PCI 插槽或改用网桥模式。网桥配置方面编辑/etc/network/interfacesnano /etc/network/interfaces一个可用的配置长这样auto lo iface lo inet loopback auto vmbr0 iface vmbr0 inet static address 192.168.87.2/24 gateway 192.168.87.1 bridge-ports enp1s0 bridge-stp off bridge-fd 0 auto vmbr1 iface vmbr1 inet manual bridge-ports enp2s0 enp3s0 enp4s0 bridge-stp off bridge-fd 0这里enp1s0是管理口enp2s0到enp4s0是另外三个 i225 口桥到 vmbr1 给虚拟机用。网卡名用ip link确认别照抄。改完重启网络systemctl restart networking如果重启后失联说明网卡名写错了用显示器接机器改回来。虚拟机创建时网卡选 vmbr0 或 vmbr1模型选virtio。如果你确实要直通 i225 给虚拟机在虚拟机硬件里添加 PCI 设备选对应地址勾选「所有功能」。直通后虚拟机里ip link能看到那块网卡但宿主机就不能再用它了这点要想清楚。Ubuntu 系统装好后第一件事是装 OpenSSH。在虚拟机控制台里执行sudo apt update sudo apt install -y openssh-server net-tools sudo systemctl enable ssh sudo systemctl start ssh sudo systemctl status ssh看到active (running)就成功了。然后在本地电脑上ssh viper192.168.87.54viper换成你的用户名。能登进去后面所有操作都可以在本地终端完成。建议顺手配个免密ssh-keygen -t ed25519 ssh-copy-id viper192.168.87.54免密之后后面建 SSH 隧道访问 Openclaw 网页就不用反复输密码。3. Openclaw 安装与 TaoToken 通道配置可复制的 settings 片段远程能连上之后装 Openclaw。先补依赖sudo apt install -y git curl curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs node -v npm -vNode 版本建议 20 以上低于 18 装 Openclaw 容易报错。然后sudo npm install -g openclawlatest装完执行初始化openclaw onboard --install-daemon交互流程里I understand this is powerful and inherently risky. Continue?选 YesOnboarding mode 选 QuickStartModel/auth provider 这一步先随便选一个占位通道我们后面手动改配置文件Select channel 选 Skip for nowConfigure skills 选 NoEnable hooks 可以全选How do you want to hatch your bot 选 Open the Web UIInstall shell completion 选 Yes。初始化完成后配置文件在~/.openclaw/openclaw.json。这里就是接入 TaoToken 通道的关键位置。TaoToken 提供统一的 API 入口把模型调用收敛到一个 Base URL 和一把 Key 上省得每个 provider 单独配。先到 https://taotoken.net/api-keys 生成一把 Key再到 https://taotoken.net/doc 确认当前推荐的模型 ID。编辑配置文件nano ~/.openclaw/openclaw.json在 provider 部分写入下面这段路径和字段名以你本地实际文件为准这里给的是结构参考{ providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, model: claude-sonnet-4-5, type: anthropic } }, defaultProvider: taotoken }三件套必须齐全Base URL 是https://taotoken.net/apiKey 是你在控制台生成的那把Model ID 填文档里列出的可用模型。少任何一个都会在请求时报错。如果你用的是 Claude Code 这类走 Anthropic 协议的工具type填anthropic走 OpenAI 兼容协议的填openai具体看文档说明。改完保存重启 Openclaw 服务openclaw restart openclaw statusstatus显示 running 就说明配置被加载了。这一步做完Openclaw 已经知道该往哪里发请求但还没验证通道是否真的通。4. 验证请求与远程访问 Openclaw 网页确认通道真正打通配置写完不代表通了必须发一次真实请求。Openclaw 自带一个测试命令openclaw chat 你好请回复一句话如果返回了模型输出说明通道打通。如果卡住或报错看下一节的排查。另一种验证方式是直接 curl 打 TaoToken 的接口确认 Key 和网络没问题curl https://taotoken.net/api/v1/messages \ -H x-api-key: sk-你的TaoToken密钥 \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-sonnet-4-5, max_tokens: 64, messages: [{role: user, content: ping}] }返回 JSON 里带content字段就说明 Key 有效、网络可达。这一步能帮你区分是 Openclaw 配置问题还是通道本身问题。接着访问 Openclaw 网页。先拿到登录 tokencat ~/.openclaw/openclaw.json | grep token或者直接看配置文件里的webToken字段。然后在虚拟机本地浏览器访问http://127.0.0.1:18789/?token你的token能打开面板就说明服务正常。但虚拟机通常没桌面所以要在本地电脑建 SSH 隧道ssh -L 18789:127.0.0.1:18789 viper192.168.87.54 -N这条命令把本地 18789 转发到虚拟机的 18789。保持这个终端不关本地浏览器访问http://127.0.0.1:18789/?token你的token就能看到 Openclaw 的 Web UI。在对话框里发一条消息如果模型正常回复整条链路——PVE 网络、Ubuntu、Openclaw、TaoToken 通道——就全部验证通过了。如果你想让 Openclaw 接入聊天通道比如微信可以执行npx -y tencent-weixin/openclaw-weixin-clilatest install装完会出二维码扫码登录即可。注意这类通道属于第三方 CLI稳定性和合规性自己评估生产环境慎用。5. 常见报错排查401、local proxy failed、reading choices、OAuth这一节按真实会遇到的报错来对。第一个高频是 401Error: 401 Unauthorized原因基本是 Key 错了、Key 过期、或者 Base URL 写成了带路径的地址。检查openclaw.json里apiKey有没有多余空格baseUrl是不是https://taotoken.net/api不要写成https://taotoken.net/api/v1再叠加路径。改完openclaw restart。第二个是 local proxy failedError: local proxy failed to connect这通常是网络层问题。先在虚拟机上curl -I https://taotoken.net/api看能不能通。如果虚拟机本身出不了网检查 PVE 网桥和虚拟机网卡是不是接在同一个 bridge 上网关有没有配对。i225 直通后如果虚拟机拿不到 IP多半是直通没生效或者网卡被宿主机占着。第三个是 reading choicesTypeError: Cannot read properties of undefined (reading choices)这个报错说明返回体结构和代码预期不一致常见于type字段填错。走 Anthropic 协议却填了openai或者反过来就会解析失败。对照文档把type改对。另外模型 ID 写错也可能导致返回体异常确认 Model ID 是文档里列出的。第四个是 OAuth 相关Error: OAuth token expired or invalid如果你之前用 OAuth 方式登录过某个 provider配置里残留了 OAuth 字段和 API Key 方式冲突。把配置文件里 OAuth 相关的块删掉只保留apiKey方式。Claude Code 用户如果同时装了 CC Switch 或 Cline MCP注意它们的配置不要和 Openclaw 的 provider 混用各自独立。还有一个隐蔽的坑PVE 6.2 的qm set直通后虚拟机重启偶尔会丢 PCI 设备。如果发现网卡时有时无在虚拟机配置里确认 hostpci 行还在必要时重新添加。排查顺序建议固定成先 curl 验证通道 → 再看 Openclaw 日志openclaw logs→ 最后查 PVE 网络。这样能快速定位是通道、应用还是虚拟化层的问题。6. 通道验证完成后把 Key 和文档收好整条链路跑通后你手里其实就三样东西需要维护PVE 的网桥和直通配置、Openclaw 的openclaw.json、以及 TaoToken 的那把 Key。前两个是本地文件建议备份一份到别的机器Key 如果泄露了直接到 https://taotoken.net/api-keys 吊销重新生成然后更新配置文件重启即可。日常用的时候SSH 隧道那条命令可以写成脚本或者 alias省得每次敲。Openclaw 的日志在~/.openclaw/logs下出问题先看这里。模型 ID 和可用列表以 https://taotoken.net/doc 为准别硬记文档更新比记忆快。如果你后面想把这套东西长期跑起来做编码或 Agent 任务可以了解下 Coding Plan 这类按周期计费的方案比按量调用更适合高频场景。通道配置本身不变还是 Base URL 加 Key 加 Model ID 三件套换的只是计费方式。