Featured image of post ComfyUI VPS 部署指南:自建 Stable Diffusion 图像生成集群

ComfyUI VPS 部署指南:自建 Stable Diffusion 图像生成集群

在 VPS 上部署 ComfyUI 实现低成本 AI 图像生成。对比 RackNerd、Hostinger、Vultr 性能,详解 GPU 加速、工作流自动化、批量生成和成本优化方案。

为什么在 VPS 上运行 ComfyUI

Midjourney 按订阅收费($10–60/月),DALL·E 按次计费。对于高频图像生成需求——电商产品图批量生产、AI 设计工作流、模型微调前置测试——自托管 ComfyUI 的成本优势显著:

方案月成本单次生成成本并发能力
Midjourney Basic$10~$0.03–0.051 通道
Midjourney Standard$30~$0.021 通道
ComfyUI on $6 VPS$6~$0.001受限于显存
ComfyUI on GPU VPS$40–80~$0.0003高并发

ComfyUI 的核心优势在于节点式工作流。不同于 WebUI 的单一线性管线,ComfyUI 允许你将图像生成的每个步骤(提示词编码、采样器迭代、VAE 解码、超分辨率)拆分为独立节点,构建复杂的 DAG 工作流。这种架构天然适合批量处理和自动化集成。

硬件选型:CPU 还是 GPU?

CPU 方案(入门级)

适合原型验证和小规模批量。推荐配置:

  • RackNerd $5.99/月套餐:2 vCPU, 1GB RAM, 10GB NVMe —— 可跑 SD 1.5,SDXL 需 swap
  • Vultr CPU Optimized $12.5/月:2 vCPU, 4GB RAM —— 更稳定的 SD 1.5 体验
  • Hostinger VPS $4.99/月:2 vCPU, 4GB RAM —— 性价比最高的 CPU 方案

CPU 生成一张 512×512 的 SD 1.5 图像约需 15–30 秒。SDXL 需要 60–120 秒,且容易 OOM。

GPU 方案(生产级)

GPU VPS 是真正生产环境的标配。关键指标:

提供商显存月费适用模型
Vultr A10004GB GDDR6~$25–40SD 1.5, SDXL (量化)
Vultr RTX 600024GB~$48–68SDXL, Flux, 所有 LoRA
RackNerd GPU 套餐24GB~$30–50全模型支持
Hostinger GPU取决于区域~$20–40中等规模生成

2026 年 6 月建议:如果生成频率超过每天 50 张,直接上 GPU VPS。RTX 6000 Ada 的 24GB 显存可以无损运行 Flux.1-dev 和 SDXL Turbo。

环境部署:从零到可访问

1. 服务器初始化

# Ubuntu 24.04 LTS(推荐)
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip python3-venv git curl wget

# 创建专用用户
sudo useradd -m -s /bin/bash comfyui
sudo su - comfyui

2. 克隆与安装

cd ~
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 安装核心依赖
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt

# 安装额外节点(关键扩展)
pip install ComfyUI-Manager

3. 下载模型权重

mkdir -p models/checkpoints
mkdir -p models/loras
mkdir -p models/controlnet
mkdir -p models/vae
mkdir -p models/upscale_models

# SDXL(高质量通用模型)
wget -O models/checkpoints/sdxl_v1.0.safetensors \
  "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors"

# Flux.1-dev(2026 年最强开源文生图)
wget -O models/checkpoints/flux1_dev.safetensors \
  "https://huggingface.co/black-forest-labs/FLUX.1-dev/resolve/main/flux1_dev.safetensors"

# 热门 LoRA(根据需求选择)
mkdir -p models/loras
# 例如:RealVisXL, DreamShaper, 等

4. 启动服务

# 基础启动(监听所有接口)
python main.py --listen 0.0.0.0 --port 8188

# GPU 优化参数
python main.py \
  --listen 0.0.0.0 \
  --port 8188 \
  --lowvram \
  --force-channels-last \
  --disable-ipex-optimize

# 指定自定义节点目录
python main.py --listen 0.0.0.0 --port 8188 --extra-model-paths-config extra_paths.yaml

工作流自动化:批量生成管线

API 驱动的批量生成

ComfyUI 提供完整的 REST API,可通过 HTTP 调用工作流:

import requests
import json
import time

COMFYUI_URL = "http://your-vps-ip:8188"

def load_workflow(workflow_file="workflow.json"):
    """加载保存的工作流定义"""
    with open(workflow_file, 'r') as f:
        return json.load(f)

def generate_batch(prompts, workflow=None, batch_size=4):
    """批量生成图像"""
    if workflow is None:
        workflow = load_workflow()

    results = []
    for i, prompt_text in enumerate(prompts):
        # 替换提示词语义节点
        workflow["3"]["inputs"]["text"] = prompt_text

        # 提交生成请求
        response = requests.post(
            f"{COMFYUI_URL}/prompt",
            json={"prompt": workflow}
        )
        prompt_id = response.json()["prompt_id"]

        # 等待完成
        while True:
            history = requests.get(
                f"{COMFYUI_URL}/history/{prompt_id}"
            ).json()
            if prompt_id in history:
                # 获取输出图像
                outputs = history[prompt_id]["outputs"]
                for node_id, node_output in outputs.items():
                    if "images" in node_output:
                        for img in node_output["images"]:
                            img_url = f"{COMFYUI_URL}/view?filename={img['filename']}&subfolder={img['subfolder']}&type={img['type']}"
                            results.append(img_url)
                break
            time.sleep(1)

    return results

# 使用示例:电商产品图批量生成
products = [
    "white ceramic coffee mug, studio lighting, minimalist background, 4k",
    "glass water bottle with condensation, product photography, white background",
    "leather wallet, luxury product shot, dark background, dramatic lighting"
]

images = generate_batch(products)
print(f"Generated {len(images)} images")

ComfyUI Manager 工作流导入

# 从社区导入成熟工作流
# 1. 打开 ComfyUI Manager
# 2. 点击 "Install Custom Nodes"
# 3. 搜索并安装:
#    - ComfyUI-Impact-Pack(分割和检测)
#    - ComfyUI-VideoHelperSuite(视频生成)
#    - ComfyUI-FaceAnalysis(人脸分析)
#    - ComfyUI-AnimateDiff-Evolved(动画生成)

网络暴露:Cloudflare Tunnel 安全接入

生产环境中,不建议直接将 ComfyUI 端口暴露在公网。使用 Cloudflare Tunnel 实现零信任访问:

# 安装 cloudflared
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

# 认证(首次运行)
cloudflared tunnel login

# 创建隧道
cloudflared tunnel create comfyui-tunnel

# 配置路由
cat > ~/.cloudflared/config.yml << EOF
tunnel: comfyui-tunnel
credentials-file: /home/comfyui/.cloudflared/<tunnel-id>.json

ingress:
  - hostname: comfyui.yourdomain.com
    service: http://localhost:8188
  - service: http_status:404
EOF

# 启动隧道
cloudflared tunnel run

这样你的 ComfyUI 实例通过 comfyui.yourdomain.com 访问,经过 Cloudflare CDN 加密,无需开放任何入站端口。

性能调优

显存优化策略

# 方法 1:使用 --lowvram 模式(显存 < 8GB)
python main.py --lowvram

# 方法 2:使用 --normalvram 模式(8–12GB 显存)
python main.py --normalvram

# 方法 3:使用 --highvram 模式(12GB+ 显存)
python main.py --highvram

# 方法 4:量化模型(4-bit)
# 下载 GGUF 量化模型或使用 comfyui-quantize 工具

模型量化加速

# 使用 bitsandbytes 进行 4-bit 量化推理
pip install bitsandbytes

# 在 ComfyUI 中使用量化模型
# 下载 .gguf 格式的量化模型到 models/checkpoints/
# ComfyUI 会自动检测并使用量化加载

并发控制

# 通过修改 server.py 调整并发限制
# 默认单请求串行,启用并发:

# 启动时添加:
python main.py --port 8188 --concurrency-limit 4

# 或在代码中设置:
import server
server.PromptServer.instance.max_concurrent_requests = 4

成本分析:月度账单拆解

以 Vultr RTX 6000 ($55/月) 为例:

项目月成本
Vultr GPU VPS (RTX 6000)$55.00
域名$10.00/年 (~$0.83/月)
Cloudflare Tunnel$0
合计~$56/月

对比 Midjourney Standard ($30/月):

  • Midjourney:$30/月,1 通道,每次 4 张图,无 LoRA 训练,无 ControlNet
  • ComfyUI on GPU VPS:$56/月,无限并发,完整模型生态,可微调 LoRA,可运行 ControlNet/IP-Adapter

回本点:如果你每月需要超过 1500 张高质量图像,自托管即开始省钱。对于电商卖家、设计师工作室或 AI 创业公司,这个量级很容易达到。

推荐 VPS 方案

预算方案(CPU 生成)

RackNerd $5.99/月:

  • 2 vCPU, 1GB RAM, 10GB NVMe
  • 适合 SD 1.5 快速原型
  • Affiliate: RackNerd 优惠

Hostinger VPS $4.99/月:

  • 2 vCPU, 4GB RAM, 50GB NVMe
  • 充足的 RAM 应对 SDXL CPU 推理
  • Referral: JZ1ZL8465QCG

生产方案(GPU 生成)

Vultr RTX 6000 Ada $55/月:

  • 24GB 显存,支持所有主流模型
  • 按小时计费,随时启停
  • Ref: Vultr GPU

RackNerd GPU 套餐 $30–50/月:

  • 24GB 显存选项
  • 长期套餐折扣大
  • Affiliate: RackNerd GPU

故障排查

常见问题

问题原因解决方案
OOM 错误显存不足使用 --lowvram,加载量化模型
生成速度极慢CPU 推理确认 CUDA 版本正确,检查驱动
节点缺失自定义节点未安装使用 ComfyUI Manager 安装
工作流加载失败版本不兼容更新 ComfyUI 到最新
内存泄漏长时间运行定期重启服务,监控 htop

监控脚本

#!/bin/bash
# 监控 ComfyUI 服务健康状态
while true; do
    STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8188/)
    if [ "$STATUS" != "200" ]; then
        echo "$(date): ComfyUI 服务异常,状态码 $STATUS"
        systemctl restart comfyui
    fi
    sleep 60
done

进阶:模型微调管线

在 VPS 上不仅运行推理,还可以微调模型:

# 安装 diffusers 和 trl
pip install diffusers transformers accelerate datasets

# 使用 LoRA 微调 SDXL
accelerate launch train_text_to_image_lora.py \
  --pretrained_model_name_or_path="stabilityai/stable-diffusion-xl-base-1.0" \
  --dataset_name="your_dataset" \
  --resolution="1024" \
  --train_batch_size="1" \
  --gradient_accumulation_steps="4" \
  --learning_rate="1e-4" \
  --lr_scheduler="constant" \
  --lr_warmup_steps="0" \
  --max_train_steps="1000" \
  --checkpointing_steps="200" \
  --output_dir="lora_outputs"

微调后的 LoRA 模型放入 models/loras/ 目录,即可在工作流中调用。

总结

在 VPS 上部署 ComfyUI 的核心价值在于可控性可扩展性。相比 SaaS 方案,你可以:

  1. 使用任意开源模型(SD 1.5、SDXL、Flux、Stable Video)
  2. 运行自定义节点和工作流
  3. 批量 API 调用集成到生产管线
  4. 微调专属 LoRA 模型
  5. 通过 Cloudflare Tunnel 安全暴露服务

对于高频图像生成需求,从第一个月起就能收回成本。选择 RackNerd、Hostinger 或 Vultr 的合适方案,配合 ComfyUI 的灵活架构,构建属于你的 AI 图像生成基础设施。