pages.chenos.dev / workstation

Agent 工作站:总览与路线图

一台不接显示器的 ThinkStation,装 Proxmox VE,跑多台 Ubuntu 虚拟机给调用云端 API 的 coding agent 使用;mihomo 做共享代理,Tailscale 远程访问,T3 Code 做图形界面,共享文件夹里的 pages 通过 Cloudflare Tunnel 公开发布。

2026-10-06按下面的顺序一步步做🗺 先看整体架构图

路线图

1

选硬件

内存和硬盘比 CPU 重要;不要独显;确认 vPro。

必读
2

规划网段和 IP

装 PVE 之前就定好,装好后再改很麻烦。

必读
3

选型:装 PVE 还是 Ubuntu

结论:底层装 PVE,里面开 Ubuntu 虚拟机跑 agent。

了解
4

安装 PVE

制作启动 U 盘(含实际踩过的坑)、BIOS 设置、安装向导、换国内源并更新。

必做
5

代理容器和第一台 Ubuntu 虚拟机

LXC 跑 mihomo 当共享代理;装 agent-01 并让它走代理。

必做
6

共享文件夹

virtiofs 把宿主机目录挂进所有虚拟机。在做模板之前完成,克隆机就都自带。

建议
7

开发环境与模板

装 Node、Docker、Claude Code,搬通用配置,SSH 免密,做成模板,批量克隆 agent。一键脚本见 agent-template.sh 手把手。

必做
8

Tailscale 远程访问

在外面、用手机连回家里的 PVE 和每台虚拟机。只在家里用可以跳过。

按需
9

T3 Code

图形界面操作 agent,电脑和手机都能用。

按需
10

发布 pages 文档

web 容器里跑 Caddy 和 cloudflared,搬迁现有隧道,自动保存历史版本。

按需
11

Windows 虚拟机(含显卡直通)

Windows 11 安装、VirtIO 驱动、RDP 远程;可选直通独立显卡,用 Moonlight 串流或直接接显示器。

按需
12

备份、安全与维护

定时备份和恢复演练、安全加固、容量监控、日常更新。

待写

1. 选硬件

用途是跑虚拟机和调用云端 API 的 agent:模型在云上,这台机器主要是等 API 返回、执行命令(装依赖、构建、跑测试、开浏览器)、维持虚拟机。所以内存决定能同时跑几个 agent,硬盘决定能放多少东西,CPU 够用就行。

以 ThinkStation P3 Tower Gen 2(Core Ultra 9 285)为例:

部件建议
CPUUltra 9 285 够用,不用升级。注意它没有超线程,24 核就是 24 线程;大小核混合架构用 PVE(KVM)没问题,但 ESXi 支持很差
内存128G(2×64G),留出插槽以后加到 192G 或 256G。有 ECC 选项就选 ECC,7×24 开机更稳
硬盘原装 2T 做系统盘,再加一块 4T NVMe 放虚拟机和数据,选 TLC 颗粒,不要 QLC
显卡不要独显,核显就能开机和装系统。别被加一张专业卡抬价
远程管理Ultra 9 285(非 K 版)支持 vPro / Intel AMT,可以远程看 BIOS、开关机、重装系统。下单前确认 vPro 是开启的
网络板载网口就够;有 NAS 或内网大量传文件,再考虑 2.5G/10G 网卡

内存怎么估算

每个 agent 在做什么每个大约占用
只读写代码、跑简单命令2–4G
跑 Node/Java 项目,要构建和测试4–8G
还要开浏览器做自动化测试,或者带数据库8–12G

宿主机自己预留 8G 左右,proxy 和 web 两个容器加起来约 1G。由此估算:64G 约能同时跑 6–8 个中等负载的 agent,128G 约 15 个,192G 20 个以上。像 NocoBase 这样的 monorepo(带数据库,构建也重),按每个 agent 8G 算比较稳妥。

替代方案:不需要品牌机的上门保修和 vPro 的话,自己组 Ryzen 9 9950X(16 核 32 线程,全是同一种核心,虚拟化更省心)加 128G 内存和 4T 硬盘,通常更便宜。缺少的远程管理,可以另外买一个 IP-KVM(PiKVM、JetKVM 等)补上。

2. 规划网段和 IP

所有教程里的地址都按这台工作站实际的网络来写。你家的网段不一样的话,按下面的表对应替换:

入户光纤 → 光猫(192.168.100.x)
              └── 路由器 WAN 口
                    └── 家庭局域网 192.168.50.0/24(网关 192.168.50.1)
                          ├── Mac          192.168.50.59
                          └── 工作站 PVE   192.168.50.205
网线插路由器的 LAN 口,不要插光猫。实际第一次安装时工作站插在了光猫上,PVE 拿到的是 192.168.100.2,和 Mac 不在同一个网段,后来改插路由器重装。判断方法:电脑和 PVE 的 IP 前三段要一样。电脑的 IP 在 Mac 终端里用 ipconfig getifaddr en0 查。
网段冲突:192.168.50.x 是华硕路由器的默认网段,不算少见。在外面通过 Tailscale 连回家时,如果所在网络恰好也是这个网段,就会冲突。真遇到了,再考虑把家里改成更少见的网段,比如 10.10.0.x。

推荐的 IP 规划

机器示例 IP说明
路由器(网关)192.168.50.1
Mac(笔记本)192.168.50.59DHCP 自动获取
PVE 宿主机192.168.50.205安装程序按 DHCP 自动填入的地址,直接用;装好后在路由器上绑定
proxy 容器(mihomo)192.168.50.101创建容器时设为静态 IP
web 容器(Caddy + cloudflared)192.168.50.102创建容器时设为静态 IP
agent-01、agent-02 …192.168.50.111、.112 …虚拟机用 DHCP,在路由器里按 MAC 地址绑定

路由器上要做的设置

以华硕路由器为例:浏览器打开 http://192.168.50.1 → 高级设置 → 内部网络(LAN)→ DHCP 服务器:

  1. IP 池起始地址改成 192.168.50.150:.2~.149 不再自动分配,留给容器和虚拟机用固定 IP
  2. 启用手动指定 IP,把 PVE 网卡的 MAC 地址绑定到 192.168.50.205(它在自动分配范围里,必须绑定)。MAC 在 PVE Shell 里用 ip -br link show vmbr0 查
  3. agent 虚拟机也在这里按 MAC 绑定 .111、.112…(有的路由器只允许绑定范围内的地址,被拒绝的话改用范围内的地址,或者在虚拟机里设固定 IP)

换了网段,这些地方要跟着改

位置要改什么
PVE 安装向导的网络设置IP、网关、DNS
每个 LXC 容器的网络设置IPv4/CIDR、网关
mihomo 的 config.ymlrules 里的内网 IP-CIDR 直连规则(192.168.0.0/16、10.0.0.0/8 已经覆盖了常见内网段)
虚拟机的 /etc/environment代理地址,以及 no_proxy 里的内网网段。用 10.x 网段时要把 10.0.0.0/8 加进 no_proxy,否则访问内网也会绕到代理
Docker 的代理配置同上,NO_PROXY 加上你的网段
Tailscale--advertise-routes= 后面的网段,以及后台批准的子网
你电脑的 ~/.ssh/config每台虚拟机的 HostName
cloudflared 的 config.yml如果转发到其他机器的内网 IP

使用 Claude 的合规提醒

待实机确认

这些教程是按官方文档和经验写的,以下几处建议在真机上确认,如果和实际不一样,以实际为准:

已在实机上确认(2026-10-07,PVE 9.2.21):安装向导、换源、“CT 模板”下载与上传、创建 CT(含“嵌套”选项)的菜单名称和流程,与教程一致。