先别急着往下翻,我给你交个底:这篇不是"三分钟部署成功"的那种爽文。我是真的在绿联 NAS 上,用雷电4 显卡坞外接一块 RTX 4070 Ti Super,前前后后折腾了挺久,中间经历了"创建失败""镜像拉不动""端口进不去"一堆幺蛾子,最后才把 ComfyUI 跑起来,并且真的用它生成了两段 MiniMax H3 视频。
为什么值得说?因为这块卡只有 16G 显存——按跑视频模型的标准,这真不算高配,甚至有点"低显存试水"的意思。很多人一听到"视频生成"就觉得得 24G 起步,我这篇就想用真实过程告诉你:低显存,照样能生图、能出片,关键是把显卡和 NAS 这条路打通。
所以这篇我尽量按"我自己重新走一遍会怎么走"来写:先把硬件条件说清楚,再给能直接抄的部署步骤,然后是实拍成效(截图和视频都有),最后是我踩过的坑和原因。语言就大白话,不整书面腔。
太长不看:绿联 DXP6800 Pro(16G 内存)+ 雷电4 坞 + RTX 4070 Ti Super(16G 低显存),UGOS 里装好 NVIDIA 驱动并验证nvidia-smi,然后用yanwk/comfyui-boot:cu126-slim这个镜像跑 docker compose(宿主机端口 8289),ComfyUI 就跑起来了;MiniMax H3 图生视频、日常出图都能跑,视频成片实测成功。最大的坑不是配置,是那个 6GB 的镜像在界面上拉不动/被终止,以及 GPU 怎么顺利"送"进容器。
一、先说硬件:这套玩法到底需要什么条件
我理解很多人看标题第一反应是:绿联 NAS 还能接显卡?这玩意儿不是个存储设备吗?对,普通 NAS 确实不行,但绿联 DXP6800 Pro 带了雷电4 接口,可以外接显卡坞,插上 NVIDIA 显卡之后,就变成了一台能跑本地 AI 的小主机。我这边具体环境是这样:
- NAS:绿联 DXP6800 Pro(UGOS Pro 系统,16G 内存)
- 显卡:RTX 4070 Ti Super,16G 显存,通过雷电4 显卡坞外接——出图很富余,跑视频属于"低显存试水",这篇就是来证明低显存也能玩的
- 驱动:NVIDIA 570.181(宿主系统里
nvidia-smi能正常看到显卡) - 部署方式:Docker Compose,镜像用
yanwk/comfyui-boot:cu126-slim(CUDA 12.6 版)
如果你也想照抄,先把下面几个条件对一遍:
- NAS 得有雷电/USB4 口,而且系统支持外接 GPU 授权。不是所有型号都行,买之前先确认,别像我一样差点以为插上就能用;
- 一张 NVIDIA 显卡 + 显卡坞。我用的 4070 Ti Super 16G,显存越大的型号跑视频模型越从容,8G 以下建议别碰视频生成,玩玩 SDXL 可以;
- 内存至少 16G。我部署时给容器限了 10G(含 4G 共享内存),系统和其他服务还要留空间,16G 属于"刚好够",有条件上 32G 更舒服;
- 存储预留 30G 以上。镜像解压完就十几个 G,加上 ComfyUI、模型、出片文件,再大都不嫌多;
- NAS 能连上 Docker Hub,或者你愿意配加速器/镜像站。这条很重要,我后面踩的坑一半都在这。
还有一个容易忽略的前提,必须放在部署前面:先把雷电4 授权和显卡驱动在宿主机上弄好。具体来说就是:让系统授权这个雷电设备、把 nvidia-uvm 之类的内核模块加载上,最后 nvidia-smi 能在 NAS 本机看到你的显卡。这一步不做,后面容器里永远看不到 GPU,你会在"到底是不是我 compose 写错了"里怀疑人生。
二、快速部署:照着抄就行
1. 建目录,放 compose 文件
SSH 登录 NAS,找个地方建项目目录(路径随意,记得放数据盘别放系统盘):
mkdir -p /volume1/docker/comfyui
cd /volume1/docker/comfyui然后新建 docker-compose.yml,内容用下面这份。我把我最终跑通的版本直接给你,注释也保留了:
services:
comfyui:
# 国内用得比较多的 ComfyUI 全家桶镜像,含 CUDA 12.6 + Python + 全套依赖
image: yanwk/comfyui-boot:cu126-slim
container_name: comfyui
# 宿主机 8289 → 容器 8188(8288 我这边被占了,就换成了 8289)
ports:
- "8289:8188"
# 数据持久化:全部落到本地目录,容器重建不丢配置/插件
volumes:
- ./comfyui-data:/root
- ./models:/root/ComfyUI/models
- ./output:/root/ComfyUI/output
- ./input:/root/ComfyUI/input
- ./custom_nodes:/root/ComfyUI/custom_nodes
- ./logs:/root/logs
- ./cache:/root/.cache
environment:
- CLI_ARGS=--fast
- TZ=Asia/Shanghai
- NVIDIA_VISIBLE_DEVICES=all
- NVIDIA_DRIVER_CAPABILITIES=compute,utility,graphics
# GPU 透传(NVIDIA Container Toolkit 方式)
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
limits:
memory: 10G
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8188/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped
shm_size: '4g'
hostname: comfyui-prod
init: true几个配置我在部署时反复确认过,直接说结论:
./comfyui-data:/root这个挂载是这个镜像的标准玩法,别觉得奇怪,首次启动它会自己把 ComfyUI 初始化到里面;shm_size: 4g是给 AnimateDiff、视频生成这类吃共享内存的节点用的,limits.memory记得把它算进去;restart: unless-stopped让容器异常退出能自愈,但雷电坞如果断电断连,容器不会自己找回 GPU,得手动处理;init: true在这种 eGPU 场景建议开着,不然 PID 1 处理信号容易出幺蛾子。
2. 先手动拉镜像(别跳过,能少踩一半坑)
这个镜像压缩包大概 6GB,是我这次最大的"敌人"。强烈建议先单独拉一次,别让 compose 在创建项目时边拉边建:
docker pull yanwk/comfyui-boot:cu126-slim国内网络如果拉不动或者慢到怀疑人生,三个办法任选:
- 在 UGOS 的 Docker「镜像 → 设置」里配一个能用的加速器;
- 换镜像站地址拉,拉完再打个原标签:
docker pull docker.xuanyuan.run/yanwk/comfyui-boot:cu126-slim,然后docker tag docker.xuanyuan.run/yanwk/comfyui-boot:cu126-slim yanwk/comfyui-boot:cu126-slim; - 实在不行,镜像列表里也有专门面向国内优化的 tag,比如 cu124 时代的
cu124-cn,4070 Ti Super 一样能跑,就是 CUDA 版本低一档。
3. 启动容器
docker compose up -d这一步别在 NAS 的网页界面里干,老老实实 SSH 里跑,能看到完整输出。第一次启动会比较久,因为容器要在空的 /root 里初始化 ComfyUI、装依赖,期间别关终端、别 Ctrl+C。
跑完以后验证三件事:
# 1. 容器起来了
docker ps | grep comfyui
# 2. 容器里能看到显卡(这步过了才算 GPU 真正通了)
docker exec -it comfyui nvidia-smi
# 3. 看启动日志有没有报错
docker logs comfyui --tail 50浏览器打开 http://NAS的IP:8289,能看到 ComfyUI 界面就说明成了。记得如果 NAS 开了防火墙/安全策略,把 8289 放行,不然内网其他设备访问不了。
4. 跑 MiniMax H3 图生视频工作流
ComfyUI 界面起来之后,用 Manager 装好缺失节点,然后导入 MiniMax H3 的图生视频工作流(社区模板里有,官方仓库在 Comfy-Org/MiniMax-H3)。它需要把 H3 相关的几个 safetensors 模型放进 ./models 对应目录,工作流里的说明文档会写得很清楚,照着放就行。
我的配置是 16:9、0.9MP,实际分辨率约 1280×736。提示词写了个"雨夜都市屋顶追逐"的预告片分镜,点运行,剩下的就是等。
三、成效展示:16G 低显存,真的出片了
下面这些截图就是我在 16G 显存的 4070 Ti Super 上跑 ComfyUI + MiniMax H3 的真实画面。工作流长这样,左边是模型说明和分辨率选择,中间是图生视频主节点,提示词可以直接在节点里改:

分辨率这边我用的是 16:9、0.9MP,生成尺寸 1280×736,H3 原生画布是 768 短边,会自己对齐到 32 的倍数:

提示词按"动作片预告片"来写的:雨后的黄昏都市、屋顶追逐、跳跃楼宇、追兵逼近,每一镜都踩在音乐鼓点上。图生视频节点里的完整提示词可以直接看这张:

点运行之后是真的会跑很久。这个是生成过程中的画面,能看到任务进度(当时整体跑到 57%):

跑完第一段,媒体资产里就出现了 MiniMax_H3_00002_:

第二段也出来了,资产面板里两条成片记录都在,可以直接在界面里播放:

两段成片直接放这里,点下面的画面就能打开视频播放(都是 NAS 本地跑的,画面那种电影感还挺足,H3 连音效和音乐都是一起生成的):
▶ 第一段成片:屋顶打斗/追逐戏(文件 MiniMax_H3_00002_.mp4),点击画面即可播放或下载
▶ 第二段成片:屋顶跳跃追逐戏(文件 MiniMax_H3_00003_.mp4),点击画面即可播放或下载
说实话,16G 显存跑这类视频模型不算轻松,一段视频要等挺久,生成的时候整机负载不低。但你想啊,这些全在自家 NAS 上跑,不烧 API 的钱、素材不出门,而且 4070 Ti Super 跑 SDXL 日常出图那真是又快又稳,视频属于"能跑、要耐心"的范畴。
四、失败复盘:我踩过的坑和真正的原因
这部分是重点,因为我知道肯定有人和我一样卡在半路。我按时间线把问题一个个列出来,每个都讲清楚"表面现象 → 真正原因 → 怎么解决"。
坑 1:界面创建项目一直失败,报 "Project creation was manually terminated"
最开始我是在 NAS 的 Docker 编排页面里直接创建项目,结果弹窗就是"创建失败",下面一行英文:Error: Project creation was manually terminated。我当时一脸懵:我啥也没干啊,怎么就"手动终止"了?
原因:这个报错的意思不是你的 YAML 写错了,而是"创建这个项目的动作被中止了"。这类网页编排界面在拉镜像时会弹一个进度弹窗,如果你把弹窗关了、或者操作超时、或者浏览器请求断了,后台就把它当成"手动终止"。界面又不会把真正的原因吐给你,所以你会看到一个没头没尾的报错。
解决:别在网页界面里反复试了,SSH 到 NAS,直接 docker compose up -d,让真正的错误露出来。这也是我后面所有排查的基本功:能命令行就别点界面。
坑 2:镜像拉不动/拉一半卡死
换成命令行之后,镜像开始拉了,但进度走得极慢,层数半天不动,几百秒过去了还没拉完。
原因:cu126-slim 压缩包约 6GB,国内直连 Docker Hub 就是又慢又不稳,拉一半断掉很正常。
解决:上面部署步骤里写了,配加速器、走国内镜像站、或者干脆用国内优化 tag。另外重要提醒:前台拉镜像时别关 SSH、别 Ctrl+C,关了就是白拉;怕断线就挂后台跑,nohup docker compose up -d > compose.log 2>&1 &,日志随时 tail -f 看。
坑 3:端口进不去/被占用
一开始 compose 里写的宿主机端口是 8288,结果创建失败之后各种排查,最后发现这台 NAS 上 8288 已经有别的服务(我这边 1Panel 里还留着一套老 ComfyUI)占了。
原因:端口冲突,容器自然起不来;就算起来了,你要是忘了放行防火墙,浏览器也打不开。
解决:先查占用:docker ps、ss -ltnp | grep 8288 看谁占着,然后把 compose 里宿主机端口换成没被占的(我换成了 8289),容器内 8188 不用动。换完记得防火墙放行新端口。
坑 4:宿主能看到显卡,容器里就是没有 GPU
这是 eGPU 场景最经典的坑:宿主机 nvidia-smi 明明能看到 4070 Ti Super,但容器起来之后 docker exec comfyui nvidia-smi 直接报找不到设备,或者 compose 报 could not select device driver "nvidia"。
原因:宿主能看到显卡 ≠ Docker 能透传显卡。compose 里 driver: nvidia 这套写法,要求宿主机的 dockerd 注册了 NVIDIA Container Toolkit 的 runtime。没注册,它根本不认识什么叫 nvidia 设备。
解决:两个路子,任选一个:
- 装好
nvidia-container-toolkit,在 Docker 的daemon.json里加上 runtime 配置,然后重启 Docker 服务;这是"正规军"路线,compose 的 deploy 段不用动; - 偷懒路线:把 deploy 段注释掉,改成直接把
/dev/nvidia*设备节点挂进容器(前提是宿主nvidia-uvm已经加载),用注释里那套 devices 直挂方案。
验证标准只有一个:容器里能跑出 nvidia-smi,并且能看到 RTX 4070 Ti SUPER,这才算 GPU 真的通了。
其他几个小问题,一句话带过
- compose 提示
the attribute version is obsolete:删掉version: '3.8'那行就行,纯提示,不影响; - 健康检查一直 unhealthy:确认镜像里有没有 curl,有些精简镜像没带,可以把 healthcheck 换成
wget或干脆去掉; - 第一次启动很久没反应:它在一本正经地初始化
/root里的 ComfyUI,不是卡死,看docker logs确认在动就行; - 跑视频 OOM:把分辨率降一档、时长缩短,或者把
shm_size提到 6G、内存限制相应降一点,自己找平衡。
五、总结:这套组合到底值不值
如果让我重新选一次,我还是会这么搭。理由很简单:绿联 NAS 本来 7×24 小时开机,给它配一块 4070 Ti Super 之后,ComfyUI 随叫随到,SDXL 出图舒服,视频模型能跑,而且数据、模型、成片全在自己手里。唯一的心理准备是:折腾成本不低,雷电4 授权、驱动、容器 toolkit、镜像网络,每一个环节都可能卡你一下,但卡完一次,后面就是熟路。
这篇和之前那篇《绿联 NAS + 1Panel 部署 ComfyUI(570 驱动 × cu128 PyTorch 修复)》正好凑成一套:那边讲 1Panel 商店镜像的版本匹配问题,这边讲 UGOS Docker + 雷电4 eGPU 的完整部署。如果你两台设备都要跑,或者想对比两条路线,可以一起看。
最后说句大实话:网上教程很多都是"成功了才发出来",中间的失败没人写。我这篇把失败也写全了,就是希望后来的人别再对着 "manually terminated" 发懵。遇到问题记住三句话:先 SSH、看完整报错、再对症下药。
也别再被"16G 显存带不动视频"吓住:我这台 4070 Ti Super 就是 16G,图照出、片照生。速度别拿去跟 4090 比,但路是通的,玩是能玩的——低显存跑 ComfyUI,真不是只能看图。祝你也早日出片。





