跳至正文
首页 » ComfyUI 模型下载与配置完整指南(在云端GPU VPS上搭建服务)

ComfyUI 模型下载与配置完整指南(在云端GPU VPS上搭建服务)

近年来,AI 生成图像和视频的技术发展迅猛,开源生态越来越成熟。ComfyUI 凭借其节点化的工作流设计,成为许多创作者的首选工具。与此同时,Ollama 让本地运行大语言模型变得极其简单,Open WebUI 则提供了友好的聊天界面。

然而,将这些服务整合在一起并安全地暴露到公网,并不是一件容易的事。尤其是当你想在外网访问 ComfyUI 生成视频,又不想让 Open WebUI 这类涉及隐私的服务被随意扫描时,配置反向代理、端口映射和 SSH 隧道就成了必须掌握的技能。

本文基于作者在 Ubuntu 24.04 服务器上的实际操作,完整记录了:

  • 使用 Docker Compose 部署 ComfyUI、Ollama 和 Open WebUI

  • 配置 Nginx 反向代理,实现 /comfyui//ollama/ 路径统一访问

  • Open WebUI 的安全访问方案(本地端口绑定 + SSH 隧道)

  • 从 Hugging Face 下载开源的 Wan2.2 视频生成模型到正确的目录

  • 16GB 显存下运行 5B 模型的优化参数建议

无论你是想把服务器改造成家庭 AI 创作中心,还是想在自己的云主机上搭建一套可远程访问的 AI 工具链,这篇文章都能为你提供一份完整的、可以直接上手的参考。

一、环境说明

本文基于 Ubuntu 24.04 系统,使用 Docker Compose 部署 ComfyUI、Ollama 和 Open WebUI,通过 Nginx 反向代理统一管理访问入口。

服务器配置文件

创建/Comfyui目录,新建 compose.yml 和 nginx.conf两个文件。

administrator@Newt:mkdir comfyui/
administrator@Newt:nano compose.yml  
administrator@Newt:nano nginx.conf

administrator@Newt:~/comfyui$ ls
compose.yml nginx.conf
compose.yml
services:
  nginx:
    image: nginx:latest
    container_name: nginx-proxy
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - ollama
      - open-webui
      - comfyui

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    volumes:
      - ollama_data:/root/.ollama
    environment:
      - OLLAMA_HOST=0.0.0.0
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:8080"
    volumes:
      - webui_data:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_SECRET_KEY=your-super-secret-key-change-this
      - ENABLE_SIGNUP=true
    depends_on:
      - ollama

  comfyui:
    image: yanwk/comfyui-boot:cu128-slim
    container_name: comfyui
    restart: unless-stopped
    ports:
      - "8188:8188"
    volumes:
      - comfyui_storage:/root
      - comfyui_models:/root/ComfyUI/models
      - comfyui_output:/root/ComfyUI/output
      - comfyui_input:/root/ComfyUI/input
    environment:
      - CLI_ARGS=--listen 0.0.0.0 --port 8188
      - NVIDIA_VISIBLE_DEVICES=all
      - CUDA_VISIBLE_DEVICES=0
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

volumes:
  ollama_data:
    external: true
    name: ollama-data
  webui_data:
    external: true
    name: open-webui-data
  comfyui_storage:
    name: comfyui_storage
  comfyui_models:
    name: comfyui_models
  comfyui_output:
    name: comfyui_output
  comfyui_input:
    name: comfyui_input
nginx.conf
Copy to clipboard
events {
    worker_connections 1024;
}

http {
    client_max_body_size 100M;
    
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log warn;
    
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    gzip on;
    gzip_types text/css text/javascript application/javascript application/json;
    
    server {
        listen 80;
        server_name _;
        
        # ComfyUI 配置
        location /comfyui/ {
            proxy_pass http://comfyui:8188/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_buffering off;
        }
        
        # Ollama API 配置
        location /ollama/ {
            proxy_pass http://ollama:11434/;
            proxy_set_header Host $host;
            proxy_buffering off;
        }
        
        # 首页
        location / {
            return 200 '<!DOCTYPE html>
<html>
<head><title>AI Services Gateway</title>
<style>
body { font-family: Arial; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
.container { max-width: 800px; margin: 50px auto; background: white; border-radius: 20px; padding: 40px; }
.service { margin: 20px 0; padding: 20px; background: #f8f9fa; border-radius: 10px; }
.service a { font-size: 20px; color: #667eea; text-decoration: none; }
.status { color: green; }
</style>
</head>
<body>
<div class="container">
<h1>🚀 AI Services Gateway</h1>
<div class="service"><a href="/comfyui/">🎨 ComfyUI</a><div class="status">✅ AI 图像生成</div></div>
<div class="service"><a href="/ollama/">🤖 Ollama API</a><div class="status">✅ 大模型 API</div></div>
</div>
</body>
</html>';
            add_header Content-Type text/html;
        }
    }
}

二、重要配置说明

Open WebUI 端口映射说明

Open WebUI 必须使用 127.0.0.1:3000:8080 而非 3000:8080,原因如下:

  • 127.0.0.1:3000:8080:只绑定到本地回环地址,仅服务器本机和 SSH 隧道可访问

  • 3000:8080:绑定到所有网络接口,公网可直接访问

访问方式:

# SSH 隧道连接(在本地电脑执行)
ssh -L 3000:localhost:3000 administrator@38.xx.xx.xx

# 本地浏览器访问
http://localhost:3000

这样做既保证了 Open WebUI 的可用性,又避免将端口暴露到公网造成安全隐患。

服务访问地址汇总

服务访问地址说明
ComfyUIhttp://服务器IP/comfyui/通过 Nginx 代理
Ollama APIhttp://服务器IP/ollama/通过 Nginx 代理
Open WebUIhttp://localhost:3000需要 SSH 隧道

三、ComfyUI 模型下载

3.1 查看模型存储位置

ComfyUI 的模型存储在 Docker 卷中:

# 查看卷的实际路径
administrator@Newt:~/comfyui$ docker volume inspect comfyui_models
[
    {
        "CreatedAt": "2026-05-25T05:32:33Z",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.config-hash": "c3de70f920783d374da1310c211df4b73ed5cef1c564c0ab580bfae1d842ed2d",
            "com.docker.compose.project": "comfyui",
            "com.docker.compose.version": "5.1.3",
            "com.docker.compose.volume": "comfyui_models"
        },
        "Mountpoint": "/var/lib/docker/volumes/comfyui_models/_data",
        "Name": "comfyui_models",
        "Options": null,
        "Scope": "local"
    }
]

#进入当前目录
root@Newt:cd /var/lib/docker/volumes/comfyui_models/_data

#查看当前目录
root@Newt:/var/lib/docker/volumes/comfyui_models/_data# ls
audio_encoders      configs           frame_interpolation    model_patches  unet
background_removal  controlnet        gligen                 optical_flow   upscale_models
checkpoints         diffusers         hypernetworks          photomaker     vae
clip                diffusion_models  latent_upscale_models  style_models   vae_approx
clip_vision         embeddings        loras                  text_encoders

3.2 寻找开源模型:以 Wan2.2 为例

Wan2.2 是阿里巴巴开源的视频生成模型,在 Hugging Face 上发布。

访问 Hugging Face 模型页面:

  • 官方仓库:https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged

  • 国内镜像加速:https://hf-mirror.com/Comfy-Org/Wan_2.2_ComfyUI_Repackaged

Wan2.2 模型版本选择:

版本显存需求适用场景
5B FP1622-24GB高画质
5B FP812-14GB16GB 显卡推荐
14B 版本24GB+专业级

三个必备文件(缺一不可):

  1. 扩散模型(Diffusion Model)- 核心生成模型(约 9-10GB)

  2. 文本编码器(Text Encoder)- 理解提示词(约 6GB)

  3. VAE(变分自编码器)- 图像压缩(约 1-2GB)

3.3 下载模型到对应目录

方法一:使用 wget 直接下载(推荐)

cd /var/lib/docker/volumes/comfyui_models/_data

# 使用国内镜像加速
export HF_ENDPOINT=https://hf-mirror.com

# 下载扩散模型(5B FP8 版本,适合 16GB 显存)
wget -O diffusion_models/wan2.2_ti2v_5B_fp8_scaled.safetensors \
  https://hf-mirror.com/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_ti2v_5B_fp8_scaled.safetensors

# 下载文本编码器
wget -O text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors \
  https://hf-mirror.com/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors

# 下载 VAE
wget -O vae/wan2.2_vae.safetensors \
  https://hf-mirror.com/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan2.2_vae.safetensors
# 查看文件大小
ls -lh /var/lib/docker/volumes/comfyui_models/_data/diffusion_models/
ls -lh /var/lib/docker/volumes/comfyui_models/_data/text_encoders/
ls -lh /var/lib/docker/volumes/comfyui_models/_data/vae/

# 重启 ComfyUI 使模型生效
docker restart comfyui

四、模型目录结构说明

下载完成后的完整目录结构:

/var/lib/docker/volumes/comfyui_models/_data/
├── diffusion_models/
│   └── wan2.2_ti2v_5B_fp8_scaled.safetensors  (9.31G)
├── text_encoders/
│   └── umt5_xxl_fp8_e4m3fn_scaled.safetensors (6.27G)
├── vae/
│   └── wan2.2_vae.safetensors                 (1.31G)
├── checkpoints/        # Stable Diffusion 检查点
├── loras/             # LoRA 模型
├── controlnet/        # ControlNet 模型
├── upscale_models/    # 超分辨率模型
└── ...                # 其他模型目录

五、常见问题

Q1:为什么要用 SSH 隧道访问 Open WebUI?

Open WebUI 作为对话界面,包含用户隐私数据。将其绑定到 127.0.0.1:3000 配合 SSH 隧道,可以:

  • 防止公网扫描和攻击

  • 数据通过加密传输

  • 无需额外配置 HTTPS 证书

Q2:如何确认模型被 ComfyUI 识别?

  1. 访问 http://服务器IP/comfyui/

  2. 在 Load Checkpoint 或 Load Diffusion Model 节点中查找模型名称

  3. 或者查看 ComfyUI 启动日志:

docker logs comfyui | grep -i "model"

六、总结

本文完成了以下配置:

  1. Docker Compose 配置:Nginx 反向代理 + ComfyUI + Ollama + Open WebUI

  2. Nginx 代理规则:统一通过 /comfyui/ 和 /ollama/ 路径访问

  3. Open WebUI 安全配置:绑定到本地端口,通过 SSH 隧道访问

  4. 模型下载:从 Hugging Face 获取 Wan2.2 开源模型到正确目录

现在你可以:

  • 访问 http://服务器IP/comfyui/ 使用 ComfyUI

  • 访问 http://服务器IP/ollama/ 调用 Ollama API

  • 通过 SSH 隧道访问 http://localhost:3000 使用 Open WebUI

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注