# plx1029/comfyui-qwen — prebaked ComfyUI image (H100 / RunPod) Everything from the manual setup is baked in — **no reinstalling on new pods**: - Base: `runpod/pytorch:1.0.2-cu1281-torch280-ubuntu2404` (torch 2.8.0+cu128, Python 3.12) - **v3: everything lives in `/workspace`:** - ComfyUI @ `35c1470935044be5610a81d46e57922a8a598c6c` at **`/workspace/ComfyUI`** - workflows at **`/workspace/workflows/`** (`qwen-loras-very-good-nsfw.json`, `qwen-edit-nsfw.json`, `head-swap-flux-klein.json`) — also baked into the ComfyUI workflow browser - **`/workspace/download_missing_models.sh`** — pick workflows, it fetches their missing models from `hf.co/aleph65/ComfyUI` into place (prompts for HF token or reads `$HF_TOKEN`); still on PATH via symlink - **v4: ComfyUI does NOT auto-start** (was the default in v3). Run `comfy` in a terminal, or set `COMFY_AUTOSTART=true` in the pod env to re-enable (port **7865**, log `/workspace/comfyui.log`, auto-restart loop). - **v5: fresh workflows + downloader on every boot** — `refresh-workspace.sh` re-pulls `workflows/` (mirrored, deletions included), `download_missing_models.sh`, and `README.md` from `hf.co/aleph65/ComfyUI` at startup, using `HUGGING_FACE_ACCESS_TOKEN`/`HF_TOKEN` if set. On any failure the existing copies stay. Set `WORKSPACE_REFRESH=false` to disable. - **v5: `claude` alias** — in interactive shells `claude` runs `IS_SANDBOX=1 claude --dangerously-skip-permissions` (via `/root/.bash_aliases`). - **v6: launcher scripts in `/workspace`** — `start_comfy` (frees port 7865 then runs `cd /workspace/ComfyUI && python main.py --listen 0.0.0.0 --port 7865 --enable-manager`) and `claude_start.sh` (`IS_SANDBOX=1 claude --dangerously-skip-permissions`). Both are re-pulled from `hf.co/aleph65/ComfyUI` on every boot by `refresh-workspace.sh`. - rgthree-comfy @ `27b4f4c` in `custom_nodes/` - comfyui-manager 4.2.2 + all pip deps preinstalled system-wide - Manager config baked: `security_level = weak`, `network_mode = personal_cloud` - `huggingface_hub` + `hf_transfer` preinstalled for fast model downloads - [Claude Code](https://claude.com/claude-code) CLI preinstalled (`claude`), on PATH, with `bypassPermissions` as the default permission mode - The old image-root `/ComfyUI` copy is **removed** (whiteout) — `/workspace` is the single source of truth. Models are NOT in the image (keep them on the network volume, as before). No secrets are baked in either (the image is public). ## Network volumes If a network volume is mounted at `/workspace` it shadows the baked-in files. On boot, `seed-workspace.sh` restores whatever is missing (`ComfyUI/`, `workflows/`, `download_missing_models.sh`) from a compressed seed at `/opt/workspace-seed.tar.gz` — **never overwriting existing files**, so models and outputs already on the volume are untouched. ## Using it on RunPod 1. Create a template with container image `plx1029/comfyui-qwen:v6`. 2. Expose HTTP port **7865** (plus 8888/22 as usual). 3. Set `HUGGING_FACE_ACCESS_TOKEN` in the template env (used for the boot-time workflow/script refresh and by `download_missing_models.sh`). 4. (Optional) attach your network volume at `/workspace`. 5. In a terminal: `download_missing_models.sh` to fetch models for your workflows, then `comfy` to start ComfyUI (or set `COMFY_AUTOSTART=true`). `COMFY_PORT` overrides the port. `COMFY_AUTOSTART=true` enables auto-start (otherwise run `comfy` manually). `WORKSPACE_REFRESH=false` skips the boot refresh. ## How the image was built No Docker daemon exists on RunPod pods (or the build sandbox), so images are assembled daemonlessly: v1 with [`crane`](https://github.com/google/go-containerregistry) (pip-delta + git clones appended as one OCI layer); v2 with `skopeo` + `umoci`; **v3 with `crane append`** — a single layer holding `/workspace` (ComfyUI + workflows + downloader), the seed tarball, the new startup scripts, and a whiteout of the old `/ComfyUI`, appended on top of v2 (the ~11 GB base is never re-uploaded); **v4 with `crane append` on top of v3** (no-auto-start `start-comfy.sh`, boot refresh of the downloader, updated seed tarball); **v5 with `crane append` on top of v4** — a small layer holding `refresh-workspace.sh`, the updated `start-comfy.sh`, `/root/.bash_aliases`, and current `workflows/` + `download_missing_models.sh` copies; **v6 with `crane append` on top of v5** — a small layer holding the two launcher scripts (`/workspace/start_comfy`, `/workspace/claude_start.sh`) and an updated `refresh-workspace.sh` that also re-pulls them at boot. Note: `/opt/workspace-seed.tar.gz` inside v6 still holds the v4-era workflows and does not include `start_comfy`/`claude_start.sh` — that's fine, the boot refresh fetches them from the HF repo on the next start (only relevant when a network volume shadows the baked-in `/workspace`). `Dockerfile` in this directory is the reproducible equivalent for rebuilding on any machine with real Docker (build from the repo root — the context needs `download_missing_models.sh` and `workflows/`): ```bash docker build -t plx1029/comfyui-qwen:v6 -f docker/Dockerfile . docker push plx1029/comfyui-qwen:v6 ```