
ComfyUI 云端部署前要先摆正好预期本地一键整合包在 Windows 上能双击启动不代表把它整个文件夹传到云服务器也能马上工作。ComfyUI 的工作流编辑器运行在浏览器里真正执行生图的是后端进程。跑在云端后瓶颈不再是本地显卡和内存而是远程服务器的 GPU、显存、目录权限、端口安全组和上传链路。本文围绕 ComfyUI 云端整合版 1.7 的部署主线从环境初始化、服务启动、模型上传、LoRA 识别到生成视频的保存位置完整走一遍整个部署和排错流程。这篇教程的读者是已经能在本地用 ComfyUI 组合出基础工作流、现在想把生图或视频生成搬到云端服务器的人。你不需要是多厉害的运维但要会用命令行、能看懂 Linux 报错、知道怎么打开云服务商的安全组。读完以后你应该能在一台全新 Ubuntu 服务器上自己装一套 ComfyUI上传 checkpoint 和 LoRA跑通包含 LoRA 节点的文生图工作流并且明确生成视频去了哪里、怎么下载、怎么改成自定义目录。1. ComfyUI 云端部署前要先想清楚的事1.1 为什么选择云端而不是继续用本地整合包本地整合包最大的优势是开箱即用。秋叶一键整合包这类方案把 Python、PyTorch、ComfyUI 主程序、模型目录、常用自定义节点都塞进一个文件夹双击启动脚本就能跑。缺点是显卡性能被锁死在本地硬件上显存不足时只能降低分辨率、缩小批次或者靠--lowvram参数硬撑。云端部署解决的是资源上限问题GPU 显存可以从 8GB 换成 24GB 甚至 80GB。多张显卡之间可以并行跑多个任务。生成任务不占用本地电脑可以挂机排队。多人协作时只需要分享 Web 地址不需要各自装环境。代价也很明显环境不再是一键双击端口、安全组、驱动、目录权限、日志排查都要自己处理。整合包 1.7 这类带预设目录结构的方案到了云端后能复用的是models、custom_nodes、workflows这些数据目录而不是 Windows 下的启动脚本和可执行文件。1.2 ComfyUI 云端部署的基本架构一套可用的 ComfyUI 云端服务由四部分组成GPU 服务器承载显卡、驱动、CUDA 运行时和 ComfyUI 后端进程。模型存储models目录里的 checkpoint、LoRA、VAE、ControlNet 等权重文件。Web 服务ComfyUI 自带的前端页面监听端口通常是 8188。网络访问链路通过安全组或 SSH 隧道让本地浏览器能访问云端 8188 端口。这个架构里最容易乱的地方是目录。ComfyUI 启动时不会扫全盘找模型它只按固定目录加载文件。如果你把 LoRA 传到了checkpoints目录界面上 LoRA 列表自然为空如果你把视频输出节点的保存路径写成本地盘符云端进程会直接报错。后面所有问题其实都指向同一件事路径是否对齐。1.3 服务器选型和资源需求参考ComfyUI 对硬件的要求取决于模型规模和生成类型。SD1.5 系列 8GB 显存可以跑SDXL 建议 12GB 以上视频生成模型如 Wan、LTX、AnimateDiff 通常 16GB 起步才舒服。下面是常用参考场景CPU内存显存磁盘示例配置SD1.5 文生图4 核16GB8GB50GBRTX 3060 12GBSDXL 文生图8 核32GB16GB100GBRTX 4070 Ti SUPER 16GBFlux 文生图8 核64GB24GB 以上150GBRTX 4090 24GB视频生成16 核64GB 以上24GB 以上200GB多卡或 A 系列卡选服务器时还要注意两个隐性条件操作系统建议选 Ubuntu 20.04 或 22.04不要选带复杂桌面环境的版本。磁盘空间要看模型大小预估。一个 SDXL checkpoint 大约 5GB 到 7GB一个视频模型可能 10GB 到 30GB加上临时文件200GB 不是一个夸张的数值。带宽也要预估。云端第一次上传模型最痛苦5GB 的 checkpoint 用普通宽带上传可能要几个小时。如果服务器带宽是 100Mbps下载模型会明显更快建议优先从 Hugging Face、Civitai 这类模型站直接下发到服务器而不是先在本地下载再传一次。1.4 学习环境与生产环境的差异刚接触云端部署时可以用最低配显卡跑通流程目的只是验证环境是否正常。这时建议只装 ComfyUI 主程序不装大量自定义节点也不上传大模型先用 ComfyUI 自带的示例工作流跑一次随机生成。进入生产环境后至少还要具备服务守护ComfyUI 崩溃后能自动重启。日志持久化启动日志和错误报告能在本地留存。存储隔离模型、输出、临时文件分目录存放。权限控制不能所有人都能改工作流目录或删除模型。备份策略重要模型和 workflow JSON 定期备份。学习环境可以容忍“删了重装”生产环境不能。所以后面的实操过程每一步我都会区分哪些是一次性命令哪些是进入生产环境后必须保留的配置。2. 云端环境准备从裸机到可运行目录2.1 系统初始化和基础软件安装拿到一台全新 Ubuntu 服务器后先用高权限账号登录。服务器默认用户通常是root或ubuntu这里建议不要直接用 root 跑 ComfyUI否则权限过大一旦 Web 接口被暴露或被上传恶意工作流风险很高。先更新系统并安装基础工具sudo apt update sudo apt upgrade -y sudo apt install -y build-essential git wget curl unzip zip \ net-tools htop screen tmux这一步的作用是补齐编译依赖和运维工具。ComfyUI 在安装依赖时部分 Python 包需要本地编译缺少build-essential会报gcc: command not found或error: command x86_64-linux-gnu-gcc failed。接着确认 Python 版本python3 --versionComfyUI 对 Python 3.10、3.11 的兼容性最好。如果系统默认版本过低先安装对应版本sudo apt install -y python3.10 python3.10-venv python3.10-dev python3-pipPython 版本不一致是云端部署最常见的坑之一。Python 3.9 在部分自定义节点上会出现类型语法报错Python 3.12 又会让部分包含 C 扩展的依赖安装失败。这里先统一到 3.10后续问题最少。2.2 GPU 驱动与 CUDA 环境验证ComfyUI 依赖 PyTorch 的 CUDA 后端而 PyTorch 依赖 NVIDIA 驱动。先执行nvidia-smi如果命令不存在说明驱动未安装。如果命令存在会显示类似输出----------------------------------------------------------------------------- | NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 | ----------------------------------------------------------------------------- | GPU Name Persistence-M | Bus-Id Disp.A Volatile Uncorr. ECC | | 0 GeForce RTX 4090 On | 00000000:00:01.0 Off 0 |这里有个容易混淆的点nvidia-smi显示的 CUDA Version 是驱动支持的最高 CUDA 运行版本不是系统里已经装好的 CUDA Toolkit。ComfyUI 真正关心的是 PyTorch 是否能用 CUDAPyTorch 会自带 CUDA runtime通常不需要单独装整套 CUDA Toolkit。只要驱动版本够新比如 535 以上就可以直接安装对应 CUDA 版本的 PyTorch这一步会省掉很多麻烦。千万别在云服务器上一上来就装 CUDA Toolkit它不是必须的。驱动没装时可以用 Ubuntu 官方源安装sudo apt install -y nvidia-driver-535 sudo reboot重启后重新验证nvidia-smi。如果显示No devices were found说明驱动和云主机 GPU 不匹配需要检查云服务商是否提供了 GPU 直通或规格挂载。2.3 创建专用用户和目录结构生产环境建议单独建一个系统用户避免所有模型和生成文件都堆在 root 目录下sudo useradd -m -s /bin/bash comfy sudo passwd comfy sudo usermod -aG sudo comfy之后的 ComfyUI 统一安装在/home/comfy/ComfyUI。输出目录独立成/data/comfyui-output这样重装主程序时不会误删生成结果。sudo mkdir -p /data/comfyui-output sudo chown -R comfy:comfy /data/comfyui-output这里的数据隔离是很重要的工程习惯。把输出目录挪到数据盘上既能避免系统盘写满也方便做快照备份。3. 部署 ComfyUI 1.7 整合包并启动服务3.1 获取 ComfyUI 1.7 整合包内容并重组目录“云端整合版”的合理落地方式不是把 Windows 整合包整个上传而是把整合包里的数据目录提取出来合并到 Linux 版 ComfyUI 中。整合包里真正有价值的是models目录下的模型文件。custom_nodes目录里的自定义节点。workflows目录里的 JSON 工作流文件。output目录里的历史生成结果。先在服务器上克隆官方源码cd /home/comfy git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI如果云端整合包版本是 1.7而 GitHub 主分支已经继续前进本地工作流或自定义节点菜单如果有兼容问题可以固定到对应 tag。常见做法是查看本地整合包里ComfyUI目录的版本号然后git tag git checkout v0.3.x版本号可能随发布周期变化这里的关键是云端版本要和本地整合包工作流保持一致否则会出现“这个节点能在本地打开云端打不开”的怪问题。然后创建虚拟环境python3.10 -m venv venv source venv/bin/activate pip install --upgrade pip安装 PyTorch 的 CUDA 版本。CUDA 12.1 系列可以使用pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121再安装 ComfyUI 依赖pip install -r requirements.txt验证 PyTorch 是否识别到 GPUpython -c import torch; print(torch.cuda.is_available(), torch.cuda.device_count(), torch.cuda.get_device_name(0))预期输出应该类似True 1 NVIDIA GeForce RTX 4090如果输出False说明 PyTorch 装成了 CPU 版或者驱动没被正确识别。这时不要继续往下走先解决 CUDA 链路。3.2 复制整合包中的模型、自定义节点和工作流确保目录存在mkdir -p models/checkpoints models/loras models/vae models/controlnet mkdir -p custom_nodes workflows output如果你之前已经把整合包压缩包上传到了服务器解压后把对应目录内容复制过来unzip ComfyUI_1.7_archive_xxx.zip -d ~/comfy_merge cp -r ~/comfy_merge/models/checkpoints/* /home/comfy/ComfyUI/models/checkpoints/ cp -r ~/comfy_merge/models/loras/* /home/comfy/ComfyUI/models/loras/ cp -r ~/comfy_merge/custom_nodes/* /home/comfy/ComfyUI/custom_nodes/ cp -r ~/comfy_merge/workflows/* /home/comfy/ComfyUI/workflows/复制custom_nodes后需要重新安装这些节点的依赖。因为很多自定义节点是独立 git 仓库里面有自己的requirements.txtfor d in custom_nodes/*/; do if [ -f $d/requirements.txt ]; then echo Installing requirements for $d pip install -r $d/requirements.txt fi done这里尤其容易踩坑只复制了节点代码没安装节点依赖启动后会在日志里看到ImportError或ModuleNotFoundError随后前端会提示某个节点加载失败。3.3 前台启动验证确认无误后再跑后台服务第一次启动不要加nohup先前台运行这样能直接看到日志cd /home/comfy/ComfyUI source venv/bin/activate python main.py --listen 0.0.0.0 --port 8188 --output-directory /data/comfyui-output启动成功的标志是看到这样一段日志Starting server To see the GUI go to: http://0.0.0.0:8188如果看到的是OSError: [Errno 98] Address already in use说明 8188 被占用先排查占用进程ss -lntp | grep 8188确认没有其他实例后再启动。前台运行确认没问题后切到后台。最稳妥的方式是用tmux保持会话tmux new -s comfy cd /home/comfy/ComfyUI source venv/bin/activate python main.py --listen 0.0.0.0 --port 8188 --output-directory /data/comfyui-output按CtrlB再按D脱离会话服务继续运行。重新进入用tmux attach -t comfy这种方式适合开发和调试阶段但服务器一旦重启tmux 会话不会自动恢复所以生产环境要用 systemd 管理后面的章节会专门讲。3.4 通过安全组和浏览器访问 Web UI云服务器只监听端口还不够云服务商的安全组也要放行 8188。这里分两种情况说明。如果是本地 SSH 隧道方式无需开放安全组在本地电脑执行ssh -L 8188:127.0.0.1:8188 comfy服务器IP然后浏览器访问http://127.0.0.1:8188。如果希望通过服务器公网 IP 访问要确认云控制台的安全组规则里放行了TCP 8188。阿里云、腾讯云、AWS 等平台的位置不同但含义相同入方向规则、TCP、端口 8188、来源 IP。公网访问有安全风险尤其是 ComfyUI 默认没有认证机制。尽量不要把 8188 端口直接暴露给整个互联网。推荐方案是用 SSH 隧道或者在前面加一层带密码的反向代理。学习环境可以临时开放生产环境一定要收敛访问来源。一个很常见的现象是客户端访问不了页面但服务器本地用curl却能访问。这个现象基本能说明服务没挂问题出在安全组、防火墙或--listen参数上。检查顺序先看--listen 0.0.0.0再看安全组再看服务器防火墙sudo ufw status如果防火墙开启需要放行sudo ufw allow 8188/tcp4. 模型上传与目录组织4.1 云端的模型目录先对齐否则界面上什么都不显示ComfyUI 的模型选择下拉框是从固定目录动态读取的。目录对不上刷新多少次都没有用。下面是 1.7 整合包的默认目录结构目录存放内容前端对应位置models/checkpoints主模型如 SD1.5、SDXL、Flux 的.safetensors文件CheckpointLoaderSimple 的 checkpoint 列表models/lorasLoRA 权重文件LoraLoader 的 lora_name 列表models/vaeVAE 权重文件VAELoader 的 vae_name 列表models/controlnetControlNet 模型ControlNetLoader 的 control_net_name 列表models/clipCLIP 文本编码模型CLIPLoader 的 clip_name 列表models/embeddings文本嵌入或负面嵌入Text Encoder 中的 embedding 引用models/unet独立 UNet 模型文件UNETLoader 的 unet_name 列表output生成图片和视频的默认目录前端 Download 按钮对应位置上传模型前先在服务器确认目录cd /home/comfy/ComfyUI ls -la models/checkpoints models/loras models/vae显示为空时说明之前没有复制过模型文件接下来按需上传。4.2 使用 SCP 或 SFTP 上传模型文件本地如果已经有模型用scp上传是最直接的方式scp -P 22 -r D:\models\sd_xl_base_1.0.safetensors comfy服务器IP:/home/comfy/ComfyUI/models/checkpoints/一次性上传整个目录scp -P 22 -r D:\models\loras comfy服务器IP:/home/comfy/ComfyUI/models/loras/如果你习惯图形界面也可以直接用 WinSCP、FileZilla 或 FinalShell。注意连接协议选择 SFTP端口保持 22。上传大文件时比较建议先上传到临时目录校验通过后再移动到模型目录。因为直接传到模型目录如果中途断网会留下半个文件。ComfyUI 下次启动时尝试加载损坏文件可能出现ModelLoadError或前端直接报错。例如先用scp传到/home/comfy/tmp/完成后移动到正式目录mv /home/comfy/tmp/sd_xl_base_1.0.safetensors /home/comfy/ComfyUI/models/checkpoints/这里的关键是移动文件比断点继续上传更可靠。断点续传建议用rsyncrsync -avP -e ssh D:\models\loras comfy服务器IP:/home/comfy/tmp/-P表示支持断点续传和进度显示。4.3 在服务器命令行直接下载模型模型比较大的时候本地下载再上传效率很低。更推荐直接在服务器上用wget或curl下载。以 Hugging Face 上的模型为例cd /home/comfy/ComfyUI/models/checkpoints wget -O model_name.safetensors https://huggingface.co/作者/仓库名/resolve/main/model_name.safetensors从 Civitai 下载时需要注意下载链接里可能带签名参数建议先把浏览器里的直链复制出来再拼到命令里wget -O lora.safetensors https://civitai.com/api/download/models/xxx?typeModel下载较大的文件时建议使用支持断点续传的wget -cwget -c -O model.safetensors 下载链接下载完成后检查文件大小是否符合预期。.safetensors文件通常有几 GB如果只有几 KB大概率下载到了错误页面或需要登录的提示页。4.4 上传后验证模型是否被识别文件放好后不需要重启 ComfyUI。前端界面上下拉框通常在每次打开工作流或重新刷新页面时重新扫描目录。但也存在浏览器缓存导致列表不更新的情况这时强制刷新页面一次。更可靠的验证方法是读取启动日志或直接在 Python 环境里扫描目录cd /home/comfy/ComfyUI source venv/bin/activate python -c import os; pmodels/loras; print([f for f in os.listdir(p) if f.endswith((.safetensors, .pt, .ckpt))])如果文件在列表里但前端看不到优先怀疑浏览器缓存或节点缓存不要先怀疑目录。另外要注意文件名编码问题。Windows 下上传的中文文件名、空格、特殊符号到 Linux 后可能变成乱码。虽然 ComfyUI 能处理常见 UTF-8 文件名但为了稳定建议模型文件名统一改成小写英文字母加下划线例如sd_xl_lora_style_v1.safetensors。5. LoRA 识别和工作流配置深度排查5.1 LoRA 识别依赖的两个条件LoRA 显示不到列表里核心只有两个原因文件没有放在models/loras目录。文件放在目录里了但前端或后端没有重新扫描。第一个原因最常见。很多人把 LoRA 下载后习惯性地放到了models/checkpoints或其他自定义目录。ComfyUI 的 LoraLoader 节点只读取models/loras不会自动识别其他目录里的文件。第二个原因出现在云端场景比较多。浏览器页面长时间不刷新或者后端是后台进程列表不会实时更新。处理方式很简单在浏览器里强制刷新页面刷新后重新加载工作流。如果是通过整合包目录复制过来的 LoRA还需要确认文件格式。ComfyUI 能识别的 LoRA 格式主要是.safetensors.pt.ckpt不建议用.bin文件直接改名有些.bin是 PyTorch 旧格式不是标准 LoRA 权重。改名后文件后缀对了但内部结构不匹配加载时会出现Error(s) in loading state_dict for LoraLayer。5.2 LoRA 加载节点和基础模型匹配目录正确后工作流里必须有一个 LoRA 加载节点前端才会把列表内容暴露出来。在默认工作流中添加 LoRA 节点的过程是右键画布搜索LoraLoader然后把它插入到模型加载与采样器之间。一个标准流程是CheckpointLoaderSimple加载基础模型。LoraLoader接收来自CheckpointLoaderSimple的 model 和 clip。LoraLoader输出新的 model 和 clip 给 KSampler。一个常见工作流的 JSON 片段类似{ 4: { class_type: CheckpointLoaderSimple, inputs: { ckpt_name: sd_xl_base_1.0.safetensors } }, 5: { class_type: LoraLoader, inputs: { model: [4, 0], clip: [4, 1], lora_name: my_style_lora.safetensors, strength_model: 0.8, strength_clip: 0.8 } } }这里有两个关键参数strength_model控制 LoRA 对模型权重的影响强度。strength_clip控制 LoRA 对文本编码器的影响强度。不是所有 LoRA 都需要同时调这两个值。如果 LoRA 主要改变画风可以保持strength_clip与strength_model相同如果 LoRA 主要影响图像结构建议单独调strength_model。注意LoRA 必须和基础模型匹配。SD1.5 的 LoRA 不能直接接到 SDXL checkpoint 上。加载时如果模型结构不匹配日志会出现size mismatch或missing keys。云端部署时这个问题会被误判成“LoRA 文件损坏”实际上是对应的基础模型选错了。5.3 云端常见的 LoRA 识别失败原因下表汇总了云端环境里最常见的几种 LoRA 问题问题现象常见原因检查方式处理建议下拉框里没有 LoRA 名称文件未放到models/loras用ls models/loras检查移动到正确目录刷新后还是不显示浏览器缓存或后台进程缓存强制刷新页面重新加载工作流确认后端日志无报错加载时报size mismatchLoRA 与基础模型不匹配查看错误日志中的 key 名称换用匹配的基础模型加载时报dtype mismatch模型精度与 LoRA 精度不一致查看 PyTorch dtype 信息在加载节点前插入 cast 节点文件名是乱码Windows 上传导致编码问题ls -la查看文件名重命名为小写英文名页面能识别但生成无效果strength_model设成 0 或过小检查节点参数调整权重通常从 0.6 到 1.0出现size mismatch时不要急着重下载。先看报错里的全称比如size mismatch for down.1.weight: copying a param with shape torch.Size([4, 128, 1, 1]) from checkpoint, the shape in current model is torch.Size([4, 160, 1, 1])这个例子说明当前模型的维度是 160LoRA 写的是 128两者不是同一套基础模型结构。换基础模型比修模型更快。5.4 LoRA 调试工作流示例为了快速验证一个 LoRA 是否生效可以做一个最小工作流加载与 LoRA 匹配的基础模型。接一个 LoraLoader。接一个空 Latent。接一个 KSampler。接一个 VAEDecode 和 SaveImage。把strength_model和strength_clip都设成 1.0先跑一次。如果出图明显带有 LoRA 风格说明加载链路正常。再逐步降低权重直到效果合适。如果这个最小工作流能跑通但完整工作流无法加载 LoRA问题通常出在完整工作流里出现了多个 LoRA 加载器或插入了不兼容的自定义节点。排查时把所有自定义节点去掉只保留官方案例逐个加回来。云端调试时建议每次改动只保留一个变量不要同时调整 LoRA 权重、采样器和自定义节点否则很难定位是哪一步导致失败。6. 视频生成保存位置与下载6.1 ComfyUI 的输出目录逻辑ComfyUI 默认把所有生成结果写入ComfyUI/output目录。图片和视频在这个目录下按时间或文件名保存前端界面里的 Download 按钮可以直接下载。但视频生成和图片生成有一点不同。很多视频工作流不是由官方SaveImage节点完成的而是由自定义节点完成的比如 VideoHelperSuite 的VHS_VideoCombine、Wan 工作流里的视频保存节点、LTX 工作流里的输出节点。这些节点的保存位置并不一定都受output目录控制。在云端部署时最稳妥的做法是在工作流里先看保存节点的输出路径参数。如果保存节点填写的是绝对路径比如/root/generated/video.mp4那这个文件不会出现在output目录而是出现在该绝对路径下。常见视频保存节点路径说明节点类型默认保存路径是否受--output-directory影响官方 SaveImageoutput/是官方 SaveAnimatedWEBPoutput/是VHS VideoCombineoutput/或自定义路径取决于参数Wan Video 保存节点output/通常是LTX Video 保存节点output/通常是--output-directory参数可以整体改变输出根目录python main.py --listen 0.0.0.0 --port 8188 --output-directory /data/comfyui-output启动后所有受默认逻辑控制的图片和视频都会写入/data/comfyui-output。这样做的价值是重装 ComfyUI 或清理源码目录时输出文件不会丢失。6.2 自定义视频保存位置的两种方式第一种是启动参数级别。适合统一管理所有输出python main.py --listen 0.0.0.0 --port 8188 \ --output-directory /data/comfyui-output \ --temp-directory /data/comfyui-temp--temp-directory指定临时文件目录。视频生成往往伴随大量中间帧文件如果临时目录设在系统盘可能把磁盘写满。单独挂数据盘后把临时目录指过去能避免很多磁盘空间告警。第二种是节点参数级别。适合单条工作流精细控制。以 VHS_VideoCombine 为例在节点参数里把video_path指定为/data/comfyui-output/videos把filename_prefix指定为wan_style_01这样生成结果会带前缀写入指定目录。需要注意节点参数里的绝对路径在云端必须存在而且运行 ComfyUI 的用户要有写权限。很多人把本地 Windows 路径直接填进去比如D:\output\video在 Linux 上自然报错。错误表现是FileNotFoundError: [Errno 2] No such file or directory: D:\\output\\video正确的做法是先在服务器创建目录并授权sudo mkdir -p /data/comfyui-output/videos sudo chown -R comfy:comfy /data/comfyui-output然后节点路径填/data/comfyui-output/videos。6.3 从云端下载大型视频文件视频文件动辄几百 MB直接使用 Web 界面下载连接不稳定就会中断。推荐用命令行下载或同步。在本地执行scp comfy服务器IP:/data/comfyui-output/videos/wan_style_01.mp4 ./download/体积大、需要断点续传时用rsyncrsync -avP comfy服务器IP:/data/comfyui-output/videos/ ./download/如果视频生成后发现文件丢了优先检查临时目录清理机制。有些在工作流中把中间帧写到/tmp任务结束或服务器重启后被系统清理。如果你把最终视频保存节点也指向了/tmp自然会丢。生产环境始终把最终输出指向/data/comfyui-output。7. 常见错误报告与排查路径7.1 学会读 Node Error ReportComfyUI 在工作流执行失败时前端会弹出一段错误报告。云端部署时错误报告的第一行信息量最大比如node 41 has failed with error: ComfyUI error report ## error details - **node**: 41 - **node_type**: KSampler - **exception_type**: torch.cuda.OutOfMemoryError - **exception_message**: CUDA out of memory. Tried to allocate 512.00 MiB - **traceback**: ...读这段报告的顺序应该是先看node_type确认哪个节点失败。再看exception_type确认是显存不足、文件不存在还是类型错误。再看exception_message确认具体原因比如分配了多少显存失败。最后看 traceback 中与main.py或自定义节点相关的行。如果错误报告中出现自定义节点名称比如VHS_VideoCombine优先检查该节点版本与 ComfyUI 版本是否兼容。云端复制的整合包自定义节点可能和最新源码不匹配这是“本地能跑云端报错”的高频原因。7.2 CUDA 显存不足排查现象torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 2.00 GiB可能原因单张显卡显存小于工作流所需的最低值。多个后台任务同时占用显存。工作流分辨率或 batch size 设置过大。自定义节点存在显存泄漏多次运行后显存不释放。检查方式nvidia-smi重点看Memory-Usage列和Processes部分。如果进程列表里出现多个 Python 进程说明上次任务没退出或用nohup启动了多个实例。解决方案减少 batch size从 1 开始测试。降低分辨率先把工作流跑通再提品质。启动参数加上--lowvram或--novram降低显存占用。python main.py --listen 0.0.0.0 --port 8188 --lowvram但要注意--lowvram会降低性能不是解决显存不足的首选而是临时方案。长期方案是选更大显存的实例或拆分任务。处理显存不足的优先级是先看是否有僵尸进程占显存再降低 batch size再降低分辨率最后才上--lowvram。这个顺序能避免性能无谓下降。7.3 虚拟内存不足和峰值内存问题ComfyUI 在加载大型模型、切换模型或视频生成时CPU 内存也可能暴涨。服务器物理内存不够时会出现进程被系统杀死的现象比如Killed日志里看不到 Python 报错直接退出。解决方式是配置 swap 交换分区。在 Ubuntu 上创建 swapsudo fallocate -l 32G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile写入/etc/fstab让重启后仍然生效echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab激活后查看free -h看到Swap一栏从 0 变成 32G 就说明成功。这里要说明swap 只是兜底不是解决方案。如果模型和视频任务经常需要 swap说明物理内存确实不够。交换分区放在机械盘或网络盘上性能会很差有条件时放在 SSD 数据盘上。7.4 工作流节点找不到或前端异常现象Cannot find node type: VHS_VideoCombine或前端加载工作流时提示缺少节点。可能原因自定义节点目录没有复制到云端。节点代码复制了但依赖没安装。ComfyUI 版本低于工作流要求的节点 API 版本。自定义节点在启动时加载失败被静默跳过。检查方式ls /home/comfy/ComfyUI/custom_nodes看是否包含对应节点目录。没有就去 GitHub 单独克隆cd /home/comfy/ComfyUI/custom_nodes git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git cd ComfyUI-VideoHelperSuite pip install -r requirements.txt安装完成后重启 ComfyUI 进程不要只在浏览器刷新页面。很多节点加载必须先重启后端。重启前后端进程的方式pkill -f python main.py cd /home/comfy/ComfyUI source venv/bin/activate nohup python main.py --listen 0.0.0.0 --port 8188 \ --output-directory /data/comfyui-output \ /home/comfy/ComfyUI/logs/comfyui.log 21 检查日志中的加载项grep -i cannot import logs/comfyui.log grep -i failed to load logs/comfyui.log出现IMPORT FAILED时说明某个自定义节点导入失败前端才会报找不到节点。8. 生产环境建议与可复用清单8.1 学习环境与生产环境的关键差异维度学习验证环境生产使用环境服务管理tmux 手动启动systemd 守护进程日志前台或日志文件持久化日志并定时清理输出目录ComfyUI/output独立数据盘目录临时目录系统默认独立数据盘目录模型上传scp 临时上传目录分区管理带校验端口暴露公网临时访问SSH 隧道或反向代理备份不备份模型目录和 workflow 定期快照学习环境可以随时重启、重装、删模型生产环境要在稳定性上多花时间。8.2 使用 systemd 管理 ComfyUI 服务tmux 方式会在服务器重启后丢失服务。生产环境建议写成 systemd 服务。创建服务文件sudo vim /etc/systemd/system/comfyui.service内容示例[Unit] DescriptionComfyUI Service Afternetwork.target [Service] Usercomfy Groupcomfy WorkingDirectory/home/comfy/ComfyUI EnvironmentPATH/home/comfy/ComfyUI/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin ExecStart/home/comfy/ComfyUI/venv/bin/python main.py --listen 0.0.0.0 --port 8188 --output-directory /data/comfyui-output Restartalways RestartSec5 [Install] WantedBymulti-user.target重新加载并启动sudo systemctl daemon-reload sudo systemctl enable comfyui sudo systemctl start comfyui查看状态和日志sudo systemctl status comfyui journalctl -u comfyui -fRestartalways保证进程崩溃后自动重启。Usercomfy保证进程以专用用户运行模型目录和数据目录的权限要提前授权。8.3 云端部署检查清单每次部署或迁移到新服务器时按下面清单逐项检查系统版本是否 Ubuntu 20.04/22.04。nvidia-smi是否正常显示 GPU 型号和显存。Python 版本是否能被 ComfyUI 支持。virtualenv 是否激活PyTorch 是否识别 GPU。ComfyUI 源码目录是否和数据目录分离。models/checkpoints、models/loras、models/vae目录是否存在。模型文件是否上传完整文件大小是否与源文件一致。custom_nodes的每个节点依赖是否安装完成。首次启动是否用前台模式观察日志。8188 端口是否能访问安全组和防火墙是否都放行。LoRA 是否能被 LoraLoader 节点识别。视频输出目录是否为绝对路径运行用户是否有写权限。是否配置了 systemd 服务是否设置了开机自启。是否配置 swap 和独立临时目录。是否对workflows目录做了备份。这套清单也适合写到自己的部署脚本里。先跑检查再启动服务能避免大多数“启动失败后一头雾水”的困境。回到本文的主线ComfyUI 云端部署最核心的技术判断是目录、版本、权限三者一致环境才算真正可用。模型上传也好LoRA 识别也好视频保存位置也好最后都能归结到这三个问题上。整合版的便利性在于数据目录组织规范云端部署时只要把数据目录和运行环境拆分清楚把服务交给 systemd 守护把输出指向数据盘整个流程就会趋于稳定。下一步值得继续做的是把常用工作流统一导出到workflows目录加一层反向代理做访问控制并给模型和输出目录写定期备份任务。