一键模板(最快路径)
预构建镜像启动时就准备好被智能体面板驱动 —— ComfyUI + 智能体面板 + ComfyUI-Manager v2 已经烤进去,不用再配置:- 点 Deploy on RunPod 并选一块 GPU(RTX 5090 / 任何 Blackwell 或 Ada 卡都能用 —— 镜像带 cu128 torch)。
- 保持模板默认:暴露 HTTP 端口 3000,并把网络卷挂在
/workspace。 - 等实例起来。一张会自动刷新的「ComfyUI is starting…」页面会一直服务到准备好 (ComfyUI 初始化大约 30–60 秒)。
从智能体面板部署并控制(v0.44+)
从 comfyui-mcp 0.44 起,你完全不用碰 RunPod 控制台,也不用跑 CLI —— 智能体面板 里有一块 RunPod 控制面板,替你部署、连接、监视和停止 实例,同一张控制表也随 移动端 App 一起发货。- 密钥设一次。 在面板的 API 密钥 卡片里粘贴你的
RUNPOD_API_KEY。它保存在 服务端的~/.comfyui-mcp/.env—— 绝不会进浏览器。 - 从面板工具栏的主机指示打开 RunPod 控制面板(一开始读作 🟢 本地 · 你的机器)。
- 部署或连接。 点部署做一键实例(它走模板的部署链接,容量紧时会在 GPU 类型 / COMMUNITY→SECURE 之间回退),或从下拉框按名称选一台已有实例再点连接。
- 实时看着。 状态卡片显示 GPU / VRAM / 运行时长 / /hr —— 渲染跑在哪永远不会 含糊。智能体会把你的自定义节点 + LoRA 装上,并把模型下载到实例上,于是你得到和本地 机器完全一致的画布。
- 切回去并停止。 使用本地会立刻把渲染改回你自己的机器;停止会关掉实例。
空闲自动停止(
RUNPOD_IDLE_STOP_MINUTES,默认 15;只在你真的在实例上渲染时计数) 是你忘了关时的费用兜底。
/workspace 还在。启动后 45 分钟没有心跳,之后
心跳间隔 20 分钟;RUNPOD_DEADMAN_BOOT_GRACE_S / RUNPOD_DEADMAN_BEAT_GRACE_S)。
「照看」会熬过使用本地和取消监视 —— 那些只改 UI 显示什么;监视狗只有在
comfyui-mcp 自己没了(或实例退出)时才会开火。监视狗用 RunPod 自动注入到每台实例的
实例作用域 API 密钥 停掉实例 —— 你的账户级密钥永远不离开本机,凭据上也没有什么需要
退出的。不想武装它,就在 runpod / action: "create" 上设 deadman:false
(或 RUNPOD_DEADMAN=0),或把 DEADMAN_DISABLE=1 当作实例环境变量。控制台部署的
实例从不带心跳令牌,自定义模板部署(RUNPOD_TEMPLATE_ID)默认关闭 —— 只有那份
镜像带了我们的监视狗时才传 deadman:true。
第一次租 GPU 跑 ComfyUI?博客把整条流程从头走到尾:
在租来的云 GPU 上运行 ComfyUI。
从你的机器连接
实例起来之后,拿到它的公网代理 URL(RunPod → 你的实例 → :3000 HTTP 端点,例如https://<pod-id>-3000.proxy.runpod.net),在笔记本上跑一条命令:
connect 会自动打开一条安全加密的 wss:// 隧道
(经 Cloudflare)连到你机器上的智能体桥接,并把那个 URL 交给实例的面板 —— 于是实例的
HTTPS 页面到达智能体时没有浏览器提示、不用复制任何东西,任何浏览器都行。对
本地 ComfyUI 它用普通的 ws://127.0.0.1:9180 回环桥接。无论哪种,智能体 —— 以及
你的 Claude/ChatGPT 登录 —— 只跑在你的机器上;实例上什么都不会安装。
收尾:让 connect 继续在你自己的机器上跑着,在浏览器里打开实例的 ComfyUI,打开
智能体面板侧边栏,点连接。
然后用自然语言驱动节点图。
为什么要隧道? 实例页面通过
https:// 提供,浏览器会阻止安全页面打开一条到你机器
的不安全 ws:// 套接字(混合内容 / Private Network Access)。隧道给桥接一个有效 TLS
的 wss:// URL —— 由每个会话的随机令牌把门 —— 于是到处都能用,不用提示。如果实例在认证后面,在本地
connect 命令上设置 COMFYUI_AUTH_TOKEN(可选再加上
COMFYUI_AUTH_HEADER / COMFYUI_AUTH_SCHEME)。对挡在 Cloudflare Access 前面的
实例,创建一把 Access 服务令牌 并设置 CF_ACCESS_CLIENT_ID +
CF_ACCESS_CLIENT_SECRET —— 两者会骑在每一次 ComfyUI 请求上(HTTP + 队列监视器
WebSocket),于是连接器能过门,而给人看的登录页仍然留给浏览器。全部留在你的机器上(不用 Cloudflare)
不想让桥接走 Cloudflare?用你自己的 SSH 端口转发 到达实例,让页面变成回环源 (普通ws:// 就能用,不用隧道):
--insecure-bridge 强制普通回环桥接(然后你自己安排实例页面到达
ws://127.0.0.1:9180 的路径)。
想要默认 Cloudflare 快速隧道之外的稳定、自建替代 —— 你自己的域名、没有临时主机名、
完全拥有那一跳 —— 而不是上面两种?见 自建中继。
拓扑:智能体跑在哪
什么会持久化(什么不会)
镜像为快速停 / 启做了优化。重的软件 —— ComfyUI、它的 venv、Manager v2 —— 烤进 不可变镜像并从/opt/ComfyUI 运行,而 custom_nodes 住在 /workspace 卷上
(符号链接),所以你的安装会留下来。热重启不做完整安装 / 同步 / 种子,只是重新拉起
ComfyUI。
运行时安装的自定义节点能熬过重启。
custom_nodes 符号链接到
/workspace/custom_nodes;每次启动时镜像里烤好的节点(智能体面板 + 内置)会被种子 /
刷新进去(于是镜像升级会带上当前面板,同时保留你自己的节点),每个节点的 Python
依赖会从卷上的持久 pip 缓存重新装进 venv —— 第一次之后很快。模型也会留下。要把
一个节点烤进去、启动时零工作,把它加到 Dockerfile 并重新构建镜像(见下)。构建并部署你自己的镜像
一键模板就是预构建镜像。还有一份精简预构建镜像 —— 同样的 ComfyUI + 智能体面板 + Manager,但没有可选的捐赠附加(runpod-uploader/croc/app-manager),也没有烤进去
的 SDXL 抽查 checkpoint,在 CI 里持续构建 —— 同样公开在
ghcr.io/artokun/comfyui-mcp-runpod:cu128-lean,
如果你只想把 RunPod 模板指过去、自己什么都不构建。
要定制它 —— 钉版本、烤进额外自定义节点、改模型布局 —— 从
docker/runpod/
自己构建并推送:
/workspace 挂网络卷。
docker/runpod/README.md
是完整的构建参考 —— 多阶段 Dockerfile、确切的 ComfyUI 启动标志、
extra_model_paths.yaml 卷映射、Manager 远程安装门、环境变量,以及体积 / 钉死的取舍。
其他云端目标
connect 流程不是 RunPod 专用 —— 它对任何能提供智能体面板、且能到达的 ComfyUI
都有效(另一家云主机、VPS、局域网上的盒子)。把 connect 指向它的 URL,并打开外部
编排器开关: