DEV Community

Cover image for Deploying ComfyUI AI Workflow Builder on Ubuntu 24.04
Sanskriti Harmukh for Vultr

Posted on with Aashish Chaurasiya • Originally published at docs.vultr.com

Deploying ComfyUI AI Workflow Builder on Ubuntu 24.04

ComfyUI is an open-source, node-based interface for Stable Diffusion and other diffusion models, giving you a visual graph to compose image generation pipelines. This guide deploys ComfyUI using Docker Compose with Traefik handling automatic HTTPS, with persistent volumes for models, inputs, and outputs. By the end, you'll have a ComfyUI workflow editor running securely at your domain.


Set Up the Directory Structure

1. Create the project directory structure:

$ mkdir -p ~/comfyui/{storage,models,output,input}
$ cd ~/comfyui
Enter fullscreen mode Exit fullscreen mode

2. Create the environment file:

$ nano .env
Enter fullscreen mode Exit fullscreen mode
DOMAIN=comfyui.example.com
LETSENCRYPT_EMAIL=admin@example.com
Enter fullscreen mode Exit fullscreen mode

Deploy with Docker Compose

1. Create the Docker Compose manifest:

$ nano docker-compose.yaml
Enter fullscreen mode Exit fullscreen mode
services:
  traefik:
    image: traefik:v3.6
    container_name: traefik
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}"
      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    restart: unless-stopped

  comfyui:
    image: yanwk/comfyui-boot:cu121
    container_name: comfyui
    hostname: comfyui
    expose:
      - "8188"
    volumes:
      - "./storage:/root"
      - "./models:/root/ComfyUI/models"
      - "./input:/root/ComfyUI/input"
      - "./output:/root/ComfyUI/output"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.comfyui.rule=Host(`${DOMAIN}`)"
      - "traefik.http.routers.comfyui.entrypoints=websecure"
      - "traefik.http.routers.comfyui.tls.certresolver=letsencrypt"
      - "traefik.http.services.comfyui.loadbalancer.server.port=8188"
    restart: unless-stopped

volumes:
  letsencrypt:
Enter fullscreen mode Exit fullscreen mode

2. Start the services:

$ docker compose up -d
Enter fullscreen mode Exit fullscreen mode

3. Verify the services are running:

$ docker compose ps
$ docker compose logs
Enter fullscreen mode Exit fullscreen mode

Access ComfyUI

Open https://comfyui.example.com in a browser. The node graph editor loads in the canvas — drag nodes from the right-click menu to build workflows. Place Stable Diffusion checkpoints under models/checkpoints/ to make them available in the loader nodes.


Next Steps

ComfyUI is running and served securely over HTTPS. From here you can:

  • Drop checkpoints, LoRAs, and VAE files into the respective models/ subfolders
  • Install ComfyUI-Manager to browse and install custom nodes from the UI
  • Save and share workflows as JSON files for reproducible pipelines

For the full guide with additional tips, visit the original article on Vultr Docs.

Top comments (0)